Retail Platform Microservices Migration
Led a team of 12 to migrate a 2M+ line monolithic retail system to microservices using the strangler pattern. 18 months from start to full decomposition.
This is probably the project I’m most proud of — and also the one that gave me the most gray hairs.
Starting Point
A retail platform with 2 million+ lines of code in a single .NET Framework monolith. Deployments were quarterly because everyone was terrified of breaking something. The test suite took 4 hours to run. New developers needed weeks just to understand the codebase enough to make a safe change.
The Approach
We used the strangler fig pattern because a rewrite was off the table — the system was generating revenue and couldn’t go down. The plan:
- DDD workshops to identify bounded contexts and define service boundaries
- API gateway (Azure API Management) to route traffic between old and new services
- Phased migration — one domain at a time, starting with the lowest-risk modules
- Event-driven communication with RabbitMQ between services
I organized the team of 12 into 3 autonomous squads, each owning specific domains. This was as much a people challenge as a technical one — getting developers who’d worked on the monolith for years to think in terms of service boundaries.
Architecture
- Domain-focused microservices (.NET Core)
- RabbitMQ for async messaging, gRPC for synchronous inter-service calls
- MongoDB for services that needed flexible schemas, SQL Server where relational made sense
- Kubernetes on AKS for orchestration
- Prometheus + Grafana for monitoring, structured logging with Serilog + ELK
Results After 18 Months
- Went from quarterly to daily deployments
- 60% reduction in production incidents
- 45% improvement in API response times
- Developer onboarding dropped from weeks to days
- Each squad can deploy independently without coordinating with other teams
The biggest lesson: the technical migration was maybe 40% of the work. The other 60% was organizational — changing how teams think about ownership, boundaries, and communication.
Timeline: Started Q2 2023, completed Q4 2024. Ongoing optimization.