Derisking Migrations of API Backends
summary
Built a Go gateway as a strangler facade that proxies production traffic, uses a shadowing package with a detached context to mirror requests to a new microservice (separate DBs per system), and compares responses in real time. Observed a 99.95% status match during shadowing, the new backend is a few hundred milliseconds faster, and incremental rollout via the existing experimentation system shifts users by traffic split by user ID until complete cutover and legacy deprecation.
AI-written summary · about
chapters (20)
- 0:00Introduction
- 1:58Strangler Pattern
- 3:05Strangler Facade
- 3:56Traffic Splitting
- 4:43Traffic Shadowing
- 6:28Tagging Shadow Requests
- 6:59What is Lyft
- 7:19The Backend
- 8:56The Migration
- 10:22Gateway
- 10:56Shadowing
- 12:26Shadow Package
- 14:04RunCallback Package
- 14:28Fetch Offers Package
- 16:15Compare Method
- 17:12Status Quo
- 17:59Latency
- 18:49Incremental rollout
- 19:53Switch cases
- 22:19Conclusion
related talks
39mMigrating a Mission Critical Service to Go
45mGrowing at the Edge: Doubling Traffic While Changing the API Gateway
31mSuccessful Go for microservices architecture
21mReal World Migration from HTTP to gRPC in Ruby
19mZero-Downtime by Design: High-Availability Migration Patterns
26mAPI Gateway, A Success Story
30mIs Zero-Downtime Migration Possible? Moving From Ingress & Sidecars To Gateway API
23mLessons from Building an API Management Platform
