The Starting Point
The platform had been running on a single beefy EC2 instance for eleven years. It worked — until it didn’t.
What Actually Took the Most Time
Contrary to popular belief, writing Dockerfiles wasn’t the hard part. The hard part was untangling implicit service boundaries that had accreted over a decade.
Key Lessons
- Break the data layer first. You can’t containerise a monolith that shares a connection pool across 40 features.
- Readiness probes are not optional. Kubernetes will happily send traffic to a pod that hasn’t finished warming its caches.
- Logging discipline pays forward. Structured JSON logs made the transition to a centralised log aggregator nearly painless.
The Result
Deployment time dropped from 45 minutes to under 8. Rollbacks went from “call a meeting” to a single kubectl rollout undo.