Cards/MicroservicesSystem Design · Day 26Aug 27, 2026

The Rewrite That Never Ships

The Rewrite That Never Ships — system design card, day 26, microservices: a proxy in front of a legacy system routes one endpoint at a time to new services until the old system serves nothing

The legacy system is a mess and everyone agrees. So the plan is the obvious one: build the new system clean, then switch.

Two years later the old system has moved on — new features, new bugs, new edge cases — and the new one is chasing a target that never stops. It never ships.

The strangler fig changes what you build first. Put a proxy in front of the old system and route everything through it. On day one the proxy sends 100% of traffic to the legacy code and nothing has changed at all. Then move one endpoint.

By month three, /users resolves to a new service and the rest still resolves to the old one. By month nine most of it has moved. Eventually the old system serves nothing, and deleting it is a config change.

Nothing is ever rewritten in the dark. Every step is small, reversible, and in production the same week it was written.

The old system is surrounded rather than replaced — and then starved.

Big changes don't fail because they're hard. They fail because nothing works until all of it works.