Пример использования strangler-паттерна
Исходная ситуация - есть большая legacy система, которая совмещает в себе множество контекстов. Конечные системы и бэкенд сервисы взаимодействуют с этой legacy системой. В наших планах - избавиться от legacy системы и вынести её функционал в несколько небольших современных мастер-систем.
Первый шаг - выставить фасад между legacy системой и бэкенд сервисами, которые используют её. Всё взаимодействие с legacy системой должно быть только через фасад.
Второй шаг - часть функционала legacy системы переезжает в современные мастер-системы. Фасад ссылается и на legacy систему, и на новые мастер-системы. При этом для потребителей - бэкенд сервисов, всё остаётся также как было. Они по-прежнему взаимодействуют с фасадом.
Третий шаг - постепенный переход на современные мастер-системы. По итогу - мы полностью отказываемся от старой legacy системы, заменяя её несколько мастер-системами.
По итогу - бэкенд сервисы, которые взаимодействуют с legacy системой должны будут лишь 1 раз поменять своё взаимодействие - перейти на использование фасада. После этого, для них ничего не будет меняться. Вся тяжесть перехода ляжет лишь на команду, которая разрабатывает фасад. Мы инкапсулируем изменения только в одном модуле.