Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот шаблон постепенно переносит устаревшую систему, постепенно заменяя определенные компоненты функциональных возможностей новыми приложениями и службами. При замене функций устаревшей системы новая система в конечном итоге включает все функции старой системы. Этот подход подавляет старую систему, чтобы вы могли ее выключать.
Контекст и проблема
По мере того как системы стареют, средства разработки, технологии размещения и системные архитектуры, на которых они основаны, могут стать устаревшими. По мере добавления новых функций и функций эти приложения становятся более сложными, что может сделать их более сложными для поддержания или расширения.
Замена всей сложной системы является огромным предприятием. Вместо этого многие команды предпочитают постепенно переходить в новую систему и сохранять старую систему для обработки неимгрированных функций. Однако выполнение двух отдельных версий приложения заставляет клиентов отслеживать, какая версия имеет отдельные функции. Каждый раз, когда команды переносят функцию или службу, они должны направлять клиентов в новое расположение. Чтобы преодолеть эти проблемы, можно применить подход, который поддерживает добавочную миграцию и свести к минимуму нарушения работы клиентов.
Решение
Используйте добавочный процесс для замены определенных частей функциональности новыми приложениями и службами. Клиенты могут продолжать использовать тот же интерфейс, не зная, что эта миграция происходит.
Шаблон Strangler Fig обеспечивает контролируемый и поэтапной подход к модернизации. Это позволяет существующему приложению продолжать работу во время модернизации. Фасад (прокси-сервер) перехватывает запросы, которые отправляются на устаревшую back-end систему. Фасад направляет эти запросы в устаревшее приложение или в новые службы.
Этот шаблон снижает риски миграции, позволяя командам двигаться вперед в темпе, который соответствует сложности проекта. При переносе функциональных возможностей в новую систему устаревшая система становится устаревшей, и вы удаляете устаревшую систему.
Шаблон Strangler Fig начинается с введения фасада (прокси) между клиентским приложением, устаревшей системой и новой системой. Фасад выступает в качестве посредника. Это позволяет клиентскому приложению взаимодействовать с устаревшей системой и новой системой. Изначально большинство запросов через фасад направляются к устаревшей системе.
По мере прогресса миграции фасад постепенно перенаправляет запросы из устаревшей системы в новую систему. При каждой итерации вы реализуете дополнительные функции в новой системе.
Этот добавочный подход постепенно уменьшает обязанности устаревшей системы и расширяет область новой системы. Процесс является итеративным. Она позволяет команде решать сложности и зависимости на управляемых этапах. Эти этапы помогают системе оставаться стабильной и функциональной.
После миграции всех функциональных возможностей и отсутствия зависимостей в устаревшей системе можно отключить устаревшую систему. Фасад направляет все запросы исключительно в новую систему.
Вы удалите фасад и перенастроите клиентское приложение для прямого взаимодействия с новой системой. Этот шаг помечает завершение миграции.
Проблемы и рекомендации
Учтите следующие моменты, принимая решение о реализации этого шаблона.
Рассмотрим, как обрабатывать службы и хранилища данных, которые могут использоваться как новой системой, так и устаревшей системой. Убедитесь, что обе системы могут одновременно получать доступ к этим ресурсам.
Структурируйте новые приложения и службы так, чтобы можно было легко их перехватывать и заменять в будущих поэтапных миграциях по образцу strangler fig. Например, старайтесь иметь четкие размежевания между частями решения, чтобы можно было перенести каждую часть по отдельности.
После завершения миграции вы обычно удаляете фасад strangler fig. В качестве альтернативы, вы можете поддерживать фасад как адаптер для старых систем, чтобы они могли продолжать им пользоваться, пока вы обновляете основную систему для новых клиентов.
Убедитесь, что фасад соответствует темпу миграции.
Убедитесь, что фасад не становится одной точкой сбоя или узким местом производительности.
Когда следует использовать этот шаблон
Используйте этот шаблон, когда:
Вы постепенно переносите серверное приложение в новую архитектуру, особенно при замене крупных систем, ключевых компонентов или сложных функций, которые представляют риск.
Исходная система может продолжать существовать в течение длительного периода времени во время миграции.
Этот шаблон может быть не подходит, если:
Запросы к внутренней системе не могут быть перехвачены.
Вы переносите небольшую систему, и замена всей системы проходит легко.
Необходимо быстро вывести исходное решение из эксплуатации.
Проектирование рабочей нагрузки
Оцените, как использовать шаблон Strangler Fig в проектировании рабочей нагрузки для решения целей и принципов основных компонентов Azure Well-Architected Framework. В следующей таблице приведены рекомендации по использованию этого шаблона для целей каждого компонента.
Столп | Как этот шаблон поддерживает цели основных компонентов |
---|---|
Решения по проектированию надежности помогают рабочей нагрузке стать устойчивой к сбоям и обеспечить восстановление до полнофункционального состояния после сбоя. | Добавочный подход к этому шаблону может помочь снизить риски во время перехода компонента по сравнению с внесением больших системных изменений одновременно. - Тестирование RE:08 |
Оптимизация затрат фокусируется на поддержании и улучшениирентабельности инвестиций рабочей нагрузки (ROI). | Цель этого подхода заключается в том, чтобы максимально увеличить использование существующих инвестиций в текущей работающей системе при постепенной модернизации. Он позволяет проводить замены с высоким показателем ROI прежде, чем замены с низким показателем ROI. - CO:07 Затраты на компоненты - CO:08 Затраты на окружающую среду |
Операционное превосходство помогает обеспечить качество рабочей нагрузки через стандартизированные процессы и сплоченность команды. | Этот шаблон обеспечивает непрерывный подход к улучшению. Добавочные замены, которые вносят небольшие изменения с течением времени, предпочтительнее для крупных системных изменений, которые являются более рискованными для реализации. - Цепочка поставок OE:06 для разработки рабочей нагрузки - Рекомендации по безопасному развертыванию OE:11 |
Рассмотрим любые компромиссы по отношению к целям других столпов, которые этот шаблон может ввести.
Пример
Устаревшие системы обычно зависят от централизованной базы данных. Со временем централизованная база данных может стать сложной для управления и развития из-за многих зависимостей. Для решения этих проблем различные шаблоны баз данных могут упростить переход от таких устаревших систем. Шаблон Strangler Fig является одним из этих шаблонов. Примените шаблон Strangler Fig в качестве поэтапного подхода к постепенному переходу от устаревшей системы к новой системе и минимизации сбоев.
Вы вводите новую систему, и новая система начинает обрабатывать некоторые запросы от клиентского приложения. Однако новая система по-прежнему зависит от устаревшей базы данных для всех операций чтения и записи. Устаревшая система остается операционной, что упрощает плавный переход без немедленных структурных изменений.
На следующем этапе вы вводите новую базу данных. Журнал загрузки данных переносится в новую базу данных с помощью процесса извлечения, преобразования и загрузки (ETL). Процесс ETL синхронизирует новую базу данных с устаревшей базой данных. На этом этапе новая система выполняет теневую запись. Новая система обновляет обе базы данных параллельно. Новая система продолжает читать из устаревшей базы данных для проверки согласованности.
Наконец, новая база данных становится системой записи. Новая база данных берет на себя все операции чтения и записи. Вы можете начать процесс отказа от использования устаревшей базы данных и устаревшей системы. После проверки новой базы данных можно удалить устаревшую базу данных. Этот выход на пенсию завершает процесс миграции с минимальным нарушением.
Следующий шаг
Ознакомьтесь с записью на блоге Мартина Фаулера о применении паттерна Strangler Fig.