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, a 12-person company focused on product and field operations, had validated their platform in the oil and gas technology market but had no DevOps expertise in-house and no clear path to hiring for it. Their infrastructure was a liability. New engineering hires inherited unmaintainable single-box deployments, rapid iteration was impossible, and every customer demo carried the anxiety of a platform with no failover.
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. Container images are stored across 11 ECR repositories and deployed through per-service GitHub Actions CI/CD pipelines. S3 event notifications trigger Lambda functions that publish to ElastiCache Redis streams, with microservices consuming events asynchronously for decoupled, resilient data ingestion. RDS PostgreSQL runs in Multi-AZ with a read replica for reporting queries, reducing load on the write path. OpenSearch handles full-text search and log aggregation across the platform. All database credentials are managed through AWS Secrets Manager. A multi-AZ VPC with isolated public and private subnets, an Application Load Balancer with hostname-based routing, a Network Load Balancer for internal SMTP services, Route53 DNS with wildcard subdomain support, and ACM SSL certificates with auto-renewal give each microservice its own domain with HTTPS. FusionAuth provides OAuth-based identity management across all frontend applications. CloudWatch provides centralized logging for all ECS services, with SNS alerts routing to the operations team when Redis capacity exceeds 85%. EventBridge scheduled jobs handle automated daily maintenance. 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
