
Strangler Fig Migrations: From Observability to Shutdown
Incrementally migrating to new infrastructure by building observability before cutting traffic. A complete walkthrough using auth extraction as the running example.
This site stores data to improve your experience. Learn more in our Consent Policy and Privacy Policy.

Strangler fig migrations, test harnesses, and moving legacy systems forward safely
Every organization has systems that predate the current team. These inherited codebases come with sparse documentation, outdated dependencies, implicit knowledge locked in the heads of engineers who left years ago, and a velocity tax that compounds over time. This category covers the practical work of modernizing legacy systems without the luxury of a ground-up rewrite.
The approach here is incremental and risk-aware. Strangler fig migrations let you extract functionality piece by piece while keeping production running. Test harness construction gives you a safety net before refactoring code you do not fully understand. Dependency upgrades on EOL runtimes require careful sequencing to avoid breaking transitive dependencies. Database schema changes demand backward-compatible migration patterns. None of this is glamorous, but it is the work that actually moves old systems forward.
Whether you are trying to add tests to code that was never designed for testability, planning a cloud migration for a .NET Framework monolith, or figuring out how to decommission a service that nobody remembers but everyone depends on, these articles draw from hands-on experience with the slow, methodical work of making legacy systems manageable.

Incrementally migrating to new infrastructure by building observability before cutting traffic. A complete walkthrough using auth extraction as the running example.

Strategies for escaping end-of-life .NET Framework, old Node, and legacy Linux distributions.

Scream tests, traffic analysis, and soft shutdowns for services nobody remembers but everyone depends on.

Reverse-engineering architecture from running code when documentation is missing or wrong.

Techniques for getting a test harness around code that was never designed for testability.