Comparison
Branch by abstractionvsStrangler fig
Branch by abstraction
you put an interface in front of the old code, added the new one behind the same interface, and switched with a flag.
Making a large change on the main branch by introducing an abstraction over the existing implementation, building the replacement behind it, and switching over. It exists because the alternative — a long-lived branch for a big migration — reliably ends in a merge nobody can review. The abstraction is temporary and should be removed once the old path is gone, which is the step most teams forget.
Full entry →Strangler fig
you put a router in front and moved one endpoint at a time until the old service had no traffic left.
Replacing a system incrementally by intercepting its traffic and moving one piece of functionality at a time to the new implementation, until the old one can be deleted. Named after the vine that grows around a tree and remains when the tree is gone. It is the default alternative to a rewrite because every step is small, reversible and independently valuable, and because the migration can be paused indefinitely without leaving anything half-built.
Full entry →