Ways to reduce your Azure cloud costs
Rebuilding the infrastructure and CI/CD pipeline of a legacy project.
We started working on this legacy project with real time pressure — the client wanted to go to production as soon as possible. Our first goal was to start testing immediately: we fixed the known bugs and tried to release the changes.
The inherited CI/CD handled deployment, and every CI job ran for more than half an hour — no matter how small the change. As testing surfaced more and more bugs, every fix cost us another 30-minute release. At that speed of development, we were never going to reach the deadline.
When we looked into the pipeline, we were shocked by its complexity. It took hours just to understand what the custom scripts did. The project was rebuilt multiple times during a single CI job, and a custom change-detection solution rebuilt the whole codebase every single time anyway.
We decided to remove every custom script and use only industry-standard tools understood by a wide range of developers. That minimises the risk of our tooling having errors, costs no time to maintain — and makes onboarding new developers dramatically faster.
We introduced NX to handle the monorepo, so only the change-related parts of the project get rebuilt. For deployment we introduced Argo CD, which made releases more understandable and less error-prone, and we eliminated the unnecessary CI steps.
The release process went from 30+ minutes to around 5–6 minutes. Faster feedback loops meant developers spent their time fixing bugs and building features — not babysitting releases.
The project needed to run with different configurations in different countries, and each country got its own development and staging environments. The legacy approach gave every environment its own Kubernetes cluster and database — six clusters for development and testing alone, at around £2,500 per month, with production still to come.
The clusters idled at 4–5% utilisation. We told the client straight: this doesn’t work in the long run.
We rebuilt everything from the ground up with two environments: one for development and testing, one for production. Each contains a managed database and a managed Kubernetes cluster, with applications separated virtually into namespaces.
We used Terraform to create the Azure resources — so when production time came, we just ran the same project with different parameters.
After switching to the new infrastructure, monthly costs dropped to £300–400 while keeping the same virtual environments. With production added, the total is £700–800 per month — still a third of the original cost. We saved our client thousands of pounds a year.
50% — faster transactions — with 70% lower infrastructure costs
One conversation is enough to tell whether we’re the right partner.