Incrementally migrate a legacy system by gradually replacing pieces of functionality
New system eventually replaces all of the old system's features, strangling the old system
Generally not advisable to completely replace a complex system in one go.
You should gradually migrate to new system.
But this means that for a long period of migration phase you will have 2 systems, one is new system where functionalities have migrated and other is old system where we still have functionalities which are yet to be migrated.
Solution
Gradually replace the old system with new system by incrementally moving functionalities.
Create an interface to interact with your systems (old and new).
Clients will call this interface and this interface will know where the related functionality required by client lies (in old or new system). This interface is called Strangler Facade.
So while features are migrated, clients are not impacted now.
Helps to minimize risk from the migration
Development effort can spread over time.
Rakesh Kalra
Consider how to handle services and data stores that are used by both new and legacy systems.
When the migration is complete, the strangler fig facade will be removed or evolve into an adaptor for legacy clients.
During migration process facade may need more changes
Facade should not become a single point of failure or a performance bottleneck.
Gradually migrating a back-end application to a new architecture.
Requests to the back-end system cannot be intercepted.
Smaller systems which can be replaced in single step