Changing Running Software
Replace a system while people are using it - and prove each step did what it said.
- 1Most rewrites ship late, and some never shipRewriting a system from scratch feels cleaner than changing it. Read what the famous warnings actually say, what really went wrong at TSB, and sort real decisions into the ones you can undo and the ones you can't.Runs in your browser14 min+35 XP
- 2Pin what it does before you change what it should doBefore you can safely change legacy code, you need tests - and the first ones should assert what the code does today, bugs included. Meet seams and characterization tests, and find out how an approval test can quietly stop being able to fail.Runs in your browser16 min+40 XP
- 3Branch by abstraction, and delete the flagReplace a component inside a running system without a long-lived branch - then finish the job by deleting the old path and the switch. See why the last step is the one that gets skipped, and how a forgotten flag cost one firm $460 million.Runs in your browser16 min+40 XP
- 4A sub-second migration, a 15-second outageA schema change that takes 300 milliseconds can still stop a site for seconds, because of where it waits. Learn expand, migrate, contract; then run migrations against a real-shaped lock queue and find the settings that make the deploy fail instead of the site.Runs in your browser20 min+50 XP
- 5Every observable behaviour is somebody's contractAn API change is expand and contract across a boundary you don't control. Meet Hyrum's Law, tolerant readers, Stripe's versioning and AWS's two-phase deployments - and decide which changes will quietly break a client.Runs in your browser16 min+40 XP
- 6A mirror that compares nothingThe strongest evidence that a replacement behaves like the old system is both of them answering the same real requests. Set up a shadow, and find the five ways it can report "no differences" while comparing nothing at all.Runs in your browser18 min+45 XP
- 7Strangle it one route at a timeA façade lets the old and new systems run side by side while you move traffic across a route at a time. Migrate a small shop in the Strangler Lab, catch the differences nobody logged, and switch the old system off without breaking the caller nobody listed.Runs in your browser25 min+60 XP
- 8Your architecture copies your org chartConway's law is quoted everywhere and read almost nowhere. Read what Conway actually wrote, what was later measured, and why the monolith-versus-microservices argument is really an argument about where to draw boundaries - and how you'd know a boundary is fake.Runs in your browser16 min+40 XP
- 9Switching it off is the riskiest changeRemoving an old system looks like housekeeping. It is a production change with its own blast radius, and two famous failures happened there. Find the caller nobody listed, switch the old system off the reversible way, and delete it last.Runs in your browser18 min+45 XP
Next track: Security →