August 20, 2024
Project Titan: Monolith to Microservices
Breaking the monolith without breaking the business.
Project Titan
Role: Staff Engineer
Stack: Java (Spring Boot), Go, Kubernetes (EKS), Istio
Status: Completed
The Challenge
“The Monolith” was a 10-year-old Java application that took 45 minutes to build and required 2 hours of downtime to deploy. Feature velocity had ground to a halt.
The Solution
We adopted the Strangler Fig Pattern to peel off functionality piece by piece.
Key Strategies
- API Gateway Layer: Introduced an Istio Ingress Gateway to route traffic. We could steer 1% of traffic to the new microservice and 99% to the monolith transparently.
- Database Decoupling: Used “Change Data Capture” (CDC) via Debezium to sync data from the monolith’s Oracle DB to the new microservices’ PostgreSQL instances.
- Polyglot Freedom: While the monolith was Java, new services were written in Go for high throughput and low memory footprint.
Outcomes
- Deployment Velocity: From 1 deployment/week to 50+ deployments/day.
- Onboarding: New engineers could run a single microservice locally in minutes, rather than struggling to boot the entire monolith.