Найти тему
TechLead Insights

Паттерн Strangler Application (паттерн «удушающего приложения»)

Strangler Application – это архитектурный подход, который используется для постепенного рефакторинга и замены устаревших систем или приложений новыми решениями. Основная идея заключается в том, чтобы внедрить новое приложение параллельно с существующим, постепенно перенося функциональность от старого к новому до тех пор, пока старое приложение не станет полностью ненужным и его можно будет "удушить".

Получил своё название от аналогии с тем, как лоза постепенно душит дерево, заменяя его рост
Получил своё название от аналогии с тем, как лоза постепенно душит дерево, заменяя его рост

Контекст: Крупные компании часто сталкиваются с проблемой обновления устаревших монолитных приложений, которые трудно поддерживать и масштабировать.

Проблема: Полная замена старого приложения новым за один раз слишком рискованна и трудоемка. Непрерывность бизнеса может быть нарушена, а пользователи могут столкнуться с проблемами.

Решение: Паттерн Strangler Application позволяет постепенно заменить старое приложение новым, добавляя новые функциональности в виде микросервисов. Например, Amazon и Netflix использовали этот подход для миграции своих старых систем на новую архитектуру, минимизируя риски и обеспечивая непрерывность работы. Они начали с замены отдельных модулей, постепенно внедряя новые компоненты, пока весь монолит не был заменен. Компании начинают с замены отдельных модулей, постепенно внедряя новые компоненты, пока весь монолит не будет заменен.

Преимущества:

  • Минимизация рисков: Постепенная миграция снижает вероятность серьезных сбоев.
  • Быстрая доставка: Новые функции могут быть развернуты быстрее и с меньшими усилиями.
  • Постепенное улучшение: Постепенное обновление позволяет быстро реагировать на обратную связь и корректировать ошибки.

Недостатки:

  • Сложность управления: Требуется управление двумя системами (старой и новой) в течение переходного периода.
  • Интеграционные сложности: Необходимо обеспечить корректное взаимодействие между старыми и новыми компонентами.
  • Дополнительные затраты: Требуются дополнительные ресурсы для поддержания и мониторинга обеих систем.

Основные стадии подхода Strangler Application

- Анализ, планирование и разработка новых микросервисов (Transform):
Постепенное внедрение новых микросервисов для замены или обновления существующих частей системы. Этот этап включает в себя:

  • Оценку и анализ текущего состояния монолитной системы.
  • Идентификацию модулей и функциональности, которые могут быть выделены в отдельные микросервисы.
  • Разработку и создание микросервисов для специфических функций или модулей.
  • Интеграцию новых микросервисов с уже существующей системой для обеспечения плавной функциональности.

- Переход пользователей (Coexist):
На этом этапе новые микросервисы начинают работать параллельно с оставшейся частью монолита, позволяя постепенно переводить пользователей на новую систему без прерываний в работе. Включает:

  • Плавное перенаправление пользовательских запросов с монолита на микросервисы.
  • Мониторинг работы и отладку новых компонентов для гарантии их корректного функционирования.

- Вывод из эксплуатации старого кода (Eliminate):
После успешного переноса всех необходимых функций и данных, старый монолитный код постепенно отключается и удаляется. Это завершает процесс миграции. Процесс включает:

  • Постепенное отключение функциональности, которая теперь обслуживается микросервисами.
  • Окончательное удаление устаревших компонентов системы после полного завершения миграционного процесса.

Как сказал бы Индиана Джонс, "Выбор должен быть сделан мудро". Так и с паттерном Strangler Application — шаг за шагом, кусочек за кусочком, и в итоге вы получите новое блестящее приложение, не нарушив ни одной древней реликвии (кода).