How Rome2Rio split up their monolith and moved to the cloud
summary
Rome2Rio splits a monolith and mono-repo while converting .NET Framework to .NET Core/8/9, migrates to GCP and runs services on Kubernetes (Windows containers for leftover .NET Framework). A single new service handled 2M sessions/day, mirrored 1% of production traffic via Envoy, and gained ~10–20% speed from .NET Core. Teams add retries, circuit breakers, async throughout, fix thread starvation and GC pauses (3–5s), normalize DTOs, switch to Protobuff, and use DataDog for observability. Continuous delivery replaces daily manual releases.
AI-written summary · about
chapters (18)
- 0:00Split monolith for cloud move
- 1:50Decoupling strategy
- 3:15Code move .NET Framework to .NET Standard
- 7:51Sever dependencies
- 11:21Split business logic
- 15:42Code to API endpoints
- 16:26API call challenges
- 18:12DTO bandwidth issues
- 20:20HTTP failures and retries
- 22:48Async thread starvation
- 24:33.NET migration challenges
- 27:00Deploy to Kubernetes and GCP
- 29:48Test with mirrored traffic
- 31:32Performance improvements
- 34:27Remove remaining monolith
- 36:37Migration outcomes
- 37:19Continuous delivery
- 39:49Key learnings
related talks
45mUsing modern .NET technologies to decompose a monolith into micro-services
23mOn the road from Monolith to Micro
48mMicroMonolith
47mMonolith to Microserv. at 20M+ requests per second: Latency and Scale Challenges
43mSolving Scalability by Converting a Monolith into Microservices
41mArchitecting Business-Driven .NET Microservices in the Cloud
35mLegacy Monolith to Microservices
25mAutobahn in the cloud
