Cutting Deploy Time by 80%

A fintech startup · GitOps · ArgoCD · Multi-environment automation

The Challenge

A fast-growing fintech startup had hit a wall. Their engineering team had grown from 5 to 25 in under a year, but their deployment process hadn’t kept up. Every release was a manual affair: SSH into servers, pull the latest code, run migrations, hope nothing breaks. The classic.

The problems were adding up:

  • Deployments took 45+ minutes and required a senior engineer’s full attention
  • Four environments (dev, staging, QA, production) drifted constantly. “Works on staging” was a running joke nobody found funny anymore
  • No rollback strategy. When something broke in production, it was all hands on deck
  • Release frequency dropped to once a week because nobody wanted to deal with the process

They needed to ship faster without shipping fear.

The Approach

I proposed a full GitOps transformation built on ArgoCD with ApplicationSets, a pattern I’ve refined across multiple projects.

Phase 1: Foundation (Week 1-2)

First, I containerized everything. The application was already running in Docker locally, but the production setup was a patchwork of systemd services. I standardized on multi-stage Docker builds with distroless base images, cutting image sizes by 60%.

I defined all Kubernetes manifests in a dedicated GitOps repository, separate from application code. This is a pattern I strongly recommend: your application repo tells you what to build, your GitOps repo tells you where and how to run it.

Phase 2: ArgoCD ApplicationSets (Week 2-3)

This is where things came together. Instead of creating individual ArgoCD Applications for each environment, I used ApplicationSets with a git generator. One template, four environments:

  • Each environment got its own directory with Kustomize overlays
  • Environment-specific values (replicas, resource limits, feature flags) lived in simple YAML files
  • Promoting a release from staging to production became a single pull request

The ApplicationSet pattern meant that when they added a fifth environment later (for a new compliance requirement), it was a 10-minute task instead of a week-long project.

Phase 3: Pipeline Integration (Week 3-4)

I wired GitHub Actions into the flow:

  1. PR merged to main → build and push container image
  2. Image tag automatically updated in the GitOps repo (dev environment)
  3. Dev deployment happens automatically via ArgoCD sync
  4. Promotion to staging/production via PR with automated checks

Every deployment was now a git commit. Every rollback was a git revert. The entire history of what ran where and when was in version control.

The Results

After four weeks of implementation and one week of parallel running:

80% faster

Deploy time dropped from 45+ minutes to under 8 minutes, including all automated checks.

4x release frequency

From weekly releases to multiple deploys per day. The team shipped when ready, not when scheduled.

Zero drift

All four environments defined in code. No more "works on staging," because staging and production were structurally identical.

The biggest win wasn’t technical, it was cultural. Junior developers started deploying their own features. The on-call rotation became manageable because rollbacks were a 30-second git revert. The team stopped fearing releases and started embracing continuous delivery.

“We went from dreading Fridays to deploying on Fridays. That tells you everything.” - Engineering Lead

Ready to talk? Let's figure out what you need.

Book a Free Chat