Skip to content

SaaS

Breaking up a monolith so a SaaS team can deploy in five minutes

A two-hour deploy of a single Node.js application replaced by independently deployed services on Kubernetes, with the monolith shrunk step by step rather than rewritten.

Client Project4 months
Client
Series A B2B SaaS, 40 engineers, Germany
Industry
SaaS
Region
Germany
Duration
4 months
Team
10 engineers
  • DevOps and CI/CD
  • Cloud infrastructure
  • Product engineering

Results

Faster deploys, 2 hours to 5 minutes
24×
More features shipped per month
12×
Traffic spikes absorbed automatically
10×
Uptime since the move
99.9%

The challenge

Every change, however small, meant building and deploying the whole application. Deploys took two hours, failed about one time in five, and the team had settled into releasing once a fortnight to limit the pain.

Traffic from large customers arrived in bursts at the start of each month, and the only way to cope was to over-provision the servers all month long.

Before and after

How things ran when we started, and once the work shipped.

  • Before: Two-hour deploy of the whole application
  • After: Each service ships on merge in five minutes
  • Before: One in five deploys rolled back
  • After: Canary releases with automatic rollback
  • Before: Servers sized for the month-start peak all month
  • After: Autoscaling that follows real traffic

Approach

How the work was done

4 phases over 4 months, with a working demo at the end of every week.

  1. 01

    Weeks 1–3

    Map the seams

    Analysed call graphs and database access to find boundaries, and agreed with the team to extract billing, notifications and reporting first.

  2. 02

    Weeks 3–7

    Platform and pipelines

    Stood up EKS with Terraform, a shared Helm chart and a GitHub Actions pipeline that builds, tests and deploys each service on merge.

  3. 03

    Weeks 6–14

    Strangle the monolith

    Extracted services behind an API gateway one at a time, moving their data with dual writes, and removed the old code paths once traffic had moved.

  4. 04

    Weeks 14–16

    Autoscaling and training

    Tuned horizontal pod autoscaling against the month-start peak and ran four workshops so every squad could build and ship a service on its own.

Architecture

Services own their data and deploy on their own schedule, while the remaining monolith keeps running behind the same gateway until it is retired.

  • Kong API gateway routing between services and the remaining monolith
  • Go and Node.js services on EKS, one Helm chart per service
  • Event bus on SNS and SQS for billing and notification events
  • PostgreSQL per service on RDS
  • Prometheus, Grafana and OpenTelemetry tracing across every hop

Stack

  • Kubernetes
  • EKS
  • Docker
  • Go
  • Node.js
  • Kong
  • Terraform
  • GitHub Actions
  • Prometheus
“They did not ask us to stop and rewrite. We kept shipping the whole time, and by the end each squad owned its own services and its own release schedule.”
VP EngineeringSeries A B2B SaaS, Germany

Have a project like this?

Tell us where things stand today. On a 30-minute call an engineer will sketch how we would approach it, the timeline and a price range.