← All posts

Cutting Release Cycle Time by 45% with Azure DevOps

How reusable pipeline templates, deployment gating, and parallelised stages took our microservice releases from slow and manual to fast and boring.

Slow releases are rarely a single bottleneck — they’re a hundred small frictions compounding. Here’s how we attacked them across 10+ microservices.

Start by measuring

Before touching a pipeline, we instrumented cycle time end to end: commit → merge → deploy to prod. The data showed most of the delay wasn’t in the build; it was in manual approval gates and serial environment promotions.

Reusable templates

We extracted a single parameterised pipeline template. Every service inherited the same build, test, scan, and deploy stages — so a fix to one pipeline fixed all of them.

# azure-pipelines.yml (per service)
extends:
  template: templates/service-pipeline.yml
  parameters:
    serviceName: orders-api
    helmChart: charts/orders

Automate the gates

Deployment gating moved from a human clicking “approve” to policy checks: image scanned, tests green, InfraCost under threshold. Humans only get pinged on exceptions.

The result

Median release cycle dropped 45%. But the bigger win was predictability — releases became boring, which is exactly what you want.