Beanstalk → ECS
Migrating a production monolith off a PaaS onto containers
For years the app ran on AWS Elastic Beanstalk, a managed platform that trades control for convenience. As the system grew, that trade stopped paying off, so I led the migration off Beanstalk onto containerized ECS/Fargate. The payoff: the same Docker image runs everywhere from a laptop to production, and the infrastructure lives in version-controlled Terraform instead of platform magic.
Rather than run both stacks in parallel and hedge, I committed to a clean cutover and removed the old platform entirely once the new one was proven. Alongside it I rebuilt the deploy pipeline on GitHub Actions and modernized the asset build, which doubled as the fix that kept the team productive when everyone moved to Apple Silicon laptops.
The other half of the work was keeping it reliable: tuning and scaling the background-worker fleet, and redesigning the alarms that watch it. The lesson I keep returning to is that good alerting is as much about what you choose not to page on as what you do. Alarms keyed on lagging signals leave you behind before they fire, and noisy warnings that demand no action just train people to ignore the ones that do.