Internal Developer Platform
Purpose
OnBuy has grown rapidly—more sellers, more customers, more products, more engineers, and a rapidly increasing rate of change. We scaled infrastructure to match demand, but without proportional observability, automation, or elasticity. The result: increasing cloud costs, slower deployments, limited insight, and reduced developer confidence.
The Internal Developer Platform (IDP) transitions OnBuy from static VM-based deployments to a self-service, observable, autoscaling Kubernetes platform backed by GitOps, modern CI/CD, and paved-road templates, with a suitable observability stack.
The objective:
Improve developer experience and productivity by providing a self-service interface that abstracts away infrastructure complexity and provides a platform for teams to build, ship, and run services with observability, alerting, autoscaling, and security built in by default.
Reduce cloud costs, improve resource utilisation efficiency and categorisation of costs. We plan to reduce over-provisioning and improve utilisation efficiency through the use of autoscaling. These should be both based on basic CPU/Memory utilisation, but also more advanced metrics such as queue depth, request rate, and error rate. We also aim to categorise costs by service, team, and environment, and to provide a clear view of the cost of the platform and the services that run on it.
Provide an observability stack that allows teams to monitor their services and the platform itself, and to alert on issues and anomalies. All engineers should beable to easily see the health of their services and the platform itself, and write alerts to alert on issues and anomalies.
Build out CI/CD pipelines for all platform and software components that can be easily extended and customised by teams to suit their needs. These should be unified in the way that we build software and infrastructure at onbuy, and follow the same steps to get code into production.
Overall, developing software should be a delight, and we aim to provide a delightful experience for our engineers to build, ship and run software in production.
🌟 Goals & North Star
The IDP exists to:
-
Improve stability & performance
-
Reduce compute costs through autoscaling & utilisation efficiency
-
Improve the developer experience
-
Increase feature delivery velocity—safely
-
Increase insight into the platform, its usage, and the system that runs on top of it
The trial phase will migrate one high-resource async worker to the new platform, establish foundations, and measure improvements through DORA metrics and SLOs.
Documentation
There is a product initiation document in confluence here which has more details about the project.
Code
The code is available in the gitlab platform project This is split into two different repositories:
- [k8s] (https://gitlab.vctools.co.uk/platform/k8s) - This contains the kubernetes manifests for the platform that are built using kustomize, packaged as oci images and deployed to the platform.
- [infrastructure] (https://gitlab.vctools.co.uk/platform/infrastructure) - This contains the terraform that creates the infrastructure that the platform runs on.