По общему признанию, термин «узор за узел» не звучит все это здорово. Но на самом деле это шаблон, который может оказаться очень полезным для широкого спектра использования случаев использования.
- Разбие монолитное применение в более новые микросервисы.
- Миграция существующей инфраструктуры с одной платформы на другую.
- Миграция наложенных приложений к облачным поставщикам.
- Удаление наследие приложения на более современную кодовую базу.
Узор за странгером на его основе является инкрементной миграцией приложения или обслуживания один кусок за раз. Идея довольно проста, мы постепенно наращиваем новую систему или архитектуру со временем по краям старой системы. Мы избегаем добавления дополнительных вещей в старую в пользу нового и со временем, мы обновляем устаревшие части в новую систему.
Когда использовать шаблон странгирования
Давайте представимся на минуту, что у нас есть это большое монолитное приложение, которое в настоящее время работает на некоторых старых технологиях. Может быть, это старая версия .NET , Может быть, это неподдерживаемая версия Java, или, возможно, это просто Big Behemoth CodeBase, которая должна быть разбита.
В любом случае, пришло время приносить это приложение или услугу в 21 век.
В любом из этих сценариев ваш выбор действительно варятся до трех вариантов.
Вы можете просто решить перестроить его с земли вверх, если это все еще нужно. Это жизнеспособно, но это может занять много времени, и это большая работа. Значение, когда это сделано, мы переворачиваем огни, пересекайте пальцы и надеемся, что мы получили это правильно.
Вы решаете переехать, обновить или рефакторировать Бегемот в одном падении. Что может пойти не так верно? Это может быть очень сложно и огромное время стока. Рефакторинговая бизнес-логика может ввести больше нестабильности. Обновление может привести к простояю, если что-то пойдет не так.
Последний вариант должен постепенно улучшить ситуацию. Независимо от того, будет ли это обновление или центр обработки данных, делая его постепенно, предпочтительнее над любым большим типом эксплуатации. Почему? Потому что мы можем ограничить радиус взрыва любого простоя. Кроме того, мы можем ограничить влияние любых сбоев, потому что мы можем постепенно свернуть, если это необходимо.
Вариант три — это то, что имеет наибольшее значение для большинства ситуаций. Это, конечно, не универсально, и есть времена, когда два других имеют самый смысл. Но для этого поста давайте сосредоточимся на варианте три.
Развертывание шаблона
Стригательский узор позволяет нам создать новую систему по краям нашей старой системы и постепенно переключить трафик в нашу новую систему как прогресс вещей.
С учетом того, что мы можем думать о нашем нынешнем монолите, проживающем в коробке.
В коробке охватывает все, что составляет наше наследие или сервис. Мы видим, что у нас есть несколько разных произведений логики, X сервис, B сервис и т. Д. Это составляют наш нынешний монолит. Мы также видим, что некоторые из этих услуг называют друг друга, это важно помнить, как мы начинаем строить нашу новую систему.
Чтобы начать с узором-странника, мы собираемся поставить вышивку на вход в нашу коробку. Это часто называют фасадом, маршрутизатором или прокси, но вышибала звучит более интересным, поэтому оставайтесь со мной.
Первый шаг с использованием шаблона странника добавляет эту вышивку перед нашим монолитным. Все запросы на наш монолит теперь должны пройти наш фасад. На данный момент он просто собирается решить запрос непосредственно обратно в монолит.
Однажды у нас есть наша вышивка у двери, мы можем начать думать о том, как мы хотим постепенно разрушать наш монолит. Ради простоты давайте представим, что каждая услуга в нашем монолите — это одноместный микросервис, который можно было вытащить.
Так какая услуга из монолита должна быть перенесена первым? Честно говоря, выбор довольно произвольный, но есть несколько вещей.
- Перемещение сервиса о том, что многие другие услуги полагаются, может быть хорошим способом выключить полосу, но он также может ввести дополнительную сложность, которую вы еще не готовятся.
- Перемещение сервиса, которая вряд ли используется, может быть проще, но это также может означать, что он на самом деле не используется, так что, возможно, нет смысла двигать.
Либо один из этих вариантов действителен, и каждый поставляется со своими собственными компромиссами. При выборе вашего первого сервиса для перемещения я предлагаю думать о том, насколько ясно границы этой службы. Если они очень понятны, выберите этот. Если они немного немычны, может немного подтолкнуть эту спину. Причина в том, что вещи, которые не очищаются, обычно запутаются с монолитным, что означает, что сложность вашего движения может подняться довольно немного.
Но мы также не есть начать с существующих услуг. Помните, что мы сказали, что мы хотим остаться по краям нашей старой системы, поэтому мы должны избегать добавления новых вещей в старую систему. Это означает, что что-то новое не должно входить в наш монолит, а скорее он должен идти в нашу новую границу.
Достаточно простого правильно? Для чего-нибудь нового мы можем создать новое микросервис или объединить его с существующими микросимами, если это имеет смысл. Мы используем маршрутизатор для прямых запросов на наш монолит или новый сервис.
Но теперь давайте посмотрим на перемещение существующего сервиса. После того, как вся точка шаблона состоит в том, чтобы чипнуть на нашем монолите, чтобы мы могли в конечном итоге избавиться от этого. Я собираюсь начать с E-Service Поскольку он называется только другим сервисом, G, внутри монолита.
Теперь мы видим что-то интересное право?
Мы вытащили электронную службу в собственное микросервис. Он получает трафик, направляемый к нему через вышивку у двери, но как G-сервис общается с ним? Обратите внимание, что он не называет его напрямую, теперь он называет это как любой обычный запрос.
Есть ли что-то не так с G звонить в службу поддержки напрямую? Не обязательно, но это создает муфту, которую вы, вероятно, хотите избежать. Расшируя трафик через нашу вышивку, мы делаем это так, чтобы E можно было самостоятельно развиваться, а G не нужно знать какие-либо детали реализации E.
Если мы продолжим этот путь, мы можем постепенно переместить каждый компонент внутри нашего монолита в свои собственные услуги. Возможно, некоторые из этих услуг могут быть объединены в одну услугу, если граница обслуживания имеет смысл. Может, хотя мы перемещаемся, мы понимаем, что нам не нужны один или два, это совершенно нормально, просто убедитесь, что логика, которые в настоящее время обрабатываются в настоящее время, отражено в другом месте, если это необходимо.
Цель с узором в странника — постепенно преобразовать нашу старую систему в блестящую новую систему. Со временем мы будем обновлять, заменить и удалять сервисы, пока не достигнем точки, где мы все вместе отключили монолит.
Это произойдет в одночасье? Нет. Это произойдет через неделю? Скорее всего нет.
Хорошо, но когда это будет сделано? Это все зависит от вашего существующего приложения и архитектуры. Это красота рисунка, вы можете решить, насколько быстро или медленно это увеличивается.
Вывод
В этом посте мы сосредоточились на основном принципе узора странника, постепенно наращиваем новую систему по краям старой системы. Создавая нашу новую услугу на границе нашей старой службы, мы можем постепенно отрезать нашу старую систему или задушить ее. Это очень полезный шаблон, чтобы удержать мысль в любое время, когда вы имеете дело с некоторым количеством технического долга.
Может быть, вам просто нужно заменить старую услугу в своем приложении, которые больше не нужны? Этот шаблон может помочь с этим. Или, может быть, вам нужно заменить весь мой монолит, когда мы обсуждали здесь, да и поможет с этим.
Постепенно обесценивая старую систему, мы отдаем себе время для создания нашей новой системы. Мы также избегаем выпуска «Большого взрыва», где мы перерезаем все наши пользователи в нашу новую систему. При выполнении этих процессов с течением времени мы можем постепенно перемещать кусочки без пользователей, знающих различных.
Несколько ссылок
Вот несколько сообщений от других на тему узор за страженщиком, которые вы можете найти полезными.
- Мартин Фаулер Приложение Strancler
- Мичиэль Ладью Стригалка на практике
- Картины облаков Azure Стригаемая картина
Вы голодны, чтобы узнать еще больше о Amazon Web Services?
Если вы хотите начать путешествие AWS, но чувствую себя потерянным на том, чтобы начать, рассмотреть Проверка моего курса . Мы сосредоточены на хостинге, защищении и развертывании статических сайтов на AWS. Позволяя нам узнать более 6 различных услуг AWS, как мы их используем. После того, как вы освоили основы, мы можем погрузиться в Два бонусных глава Чтобы покрыть более продвинутые темы, такие как инфраструктура, как код и непрерывное развертывание.
Оригинал: «https://dev.to/kylegalbraith/how-to-breakthrough-the-old-monolith-using-the-strangler-pattern-63e»