Монолит к микросервисам (какие задачи выполняются?) - PullRequest
0 голосов
/ 13 июня 2018

Мне любопытно, какие задачи связаны с переходом монолитного участка в микросервисы.Что вы должны сделать, чтобы это работало, т.е. перенаправление.Чтобы реализовать это на практике, какие задачи связаны с переходом на следующий веб-сайт?

http://www.wehkamp.nl/

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

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Здесь отсутствует много информации - например, какова текущая архитектура и технологический стек вашего сайта.Учитывая, что это очень широкий вопрос, я бы предложил следующие рекомендации:

  • Не подвергайте все рефакторингу сразу - невозможно сделать это правильно.

  • Рассматривайте Монолит как черный ящик с некоторыми API.Они не обязательно должны быть API-интерфейсами RESTful - подумайте о способах взаимодействия с ним.

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

  • Через некоторое время вы увидите, что к частям вашего Монолита обращаются только через ваши новые API.Хотя они все еще являются частью базы монолитного кода.Переместите возможности по вертикали, отсоедините основные возможности от их данных и перенаправьте все интерфейсные приложения на новые API.

  • Как только вы увидите, что всплывают ограниченные контексты, может быть удобно отключитьони из Монолита и работают как отдельные службы.

  • С микросервисами вам потребуется гораздо больше автоматизации, чем раньше.Подумайте заранее о непрерывной интеграции и непрерывном развертывании (CI / CD), контейнерах и репозитории, централизованном ведении журналов и мониторинге.

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

0 голосов
/ 15 июня 2018

Сложно определить сложность сайта по ссылке, которую вы разместили.Я предполагаю, что вы сами управляете инвентарем и заказами вместо того, чтобы передавать эти задачи поставщику услуг.Я также предполагаю, что вы не можете остановить разработку функций во время процесса миграции.

Самое важное для любого устаревшего проекта миграции - это сначала установить Inversion of Control в устаревшем коде.Это даст возможность выделить отдельные проблемы, которые сейчас, вероятно, тесно связаны.Без IoC вам будет тяжело.Обратите внимание, что внедрение конструктора не является началом процесса переноса устаревшего приложения.Вместо этого вам придется использовать шаблон Service Locator и помнить о внедрении конструктора или свойства в будущем.

Как только у вас будет контейнер IoC, вы можете начать искать швы для разрыва сервисов.Вы, вероятно, найдете код, который естественным образом поддается внутренним службам, поэтому рефакторинг их должен разрешать локатор служб.Системный регистратор - хорошее место для начала.

Цель первых нескольких месяцев - перейти на сервис-ориентированную архитектуру, где большая часть бизнес-логики содержится либо в сущностях домена, либо в службах.Не думайте о том, чтобы получить идеальную архитектуру с самого начала - это невозможно.Процесс миграции включает в себя переход от вонючей архитектуры к архитектурам с постепенно меньшим количеством запахов, а не от монолитного напрямую к модульному.Просто извлеките бизнес-логику из пользовательского интерфейса и контроллеров, и позже вы сможете настроить параметры для уровня домена или уровня приложения.

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

Когда вы перенесете код для использования служб, репозиториев и IoC, вы начнете видеть швы, где вы можете разбить некоторые функции на API.Создайте первый API только с одной небольшой функцией и реорганизуйте свой монолит, чтобы использовать его.Сделайте его небольшим, потому что это потребует большого количества изменений инфраструктуры и процессов, и вы хотите сделать как можно меньше одновременных изменений.Как только вы выделите этот первый API, продолжайте переносить все больше и больше функций в этот API.

Кстати, самое время перейти к архитектуре CQRS и стратегии DDD.Этот первый API должен быть полностью ограниченным контекстом и реализован с использованием CQRS.

Удачи!

Кстати, я написал книгу именно об этом.Он ориентирован на .NET, но этот процесс подходит для любого языка.Ищите «Брэдли Ирби» на Amazon.

0 голосов
/ 13 июня 2018

разделить сайт на небольшой список модулей.затем, согласно шаблонам микросервиса, модуль по очереди развивается / часть за частью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...