The Problem
Running everything on a single EC2 instance means every deployment is a full outage, every crash takes the entire platform down, and scaling means guessing at the one correct instance size. WellChecked had validated their product in the oil and gas technology market but their infrastructure was a liability, preventing rapid iteration, blocking new engineering hires who inherited unmaintainable single-box deployments, and creating constant anxiety about downtime during customer demos.
How We Solved It
We decomposed their application into 7+ independently deployable services on ECS Fargate, each with its own task definition, resource limits, auto-scaling policy, and IAM role. S3 event notifications trigger Lambda functions for data ingestion, decoupled from the web tier via SQS for back-pressure handling. RDS PostgreSQL runs in Multi-AZ with a read replica for reporting queries, reducing load on the write path. A multi-AZ VPC with isolated public and private subnets, an Application Load Balancer with path-based routing, and per-service GitHub Actions CI/CD pipelines give the team fully independent deploy capabilities. The entire environment is defined in Terraform modules. Nothing exists that was not declared in code.
What We Delivered
- Single EC2 instance → full microservices platform
- 100% infrastructure as code with Terraform
- Multi-AZ deployment for high availability
