Я смотрел вебинар Lightbend, посвященный рефакторингу монолитов в микросервисы, и у меня возник вопрос. Основная цель фреймворка — рефакторинг монолитов, но лагом, похоже, работает на собственном контейнере и наборе технологий. Когда я думаю о монолитах и устаревших приложениях Java, основная технология, которая приходит мне на ум, — это Java EE. Я думаю, что большинство приложений в производстве сегодня основано на некоторых технологиях Java EE. Тот, в котором я работаю, в основном основан на EJB. Итак, мой вопрос: как Лагом решает эту проблему? Я предполагаю, что рефакторинг такого приложения включает преобразование удаленного поиска EJB в остальные вызовы. Но как мне сохранить локальные EJB-компоненты моего приложения, если lagom не запускается в контейнере Java EE? Можно ли использовать оба?
Lightbend Lagom — как рефакторить монолиты Java EE
Ответы (3)
У меня нет глубоких знаний о Lagom, однако рынок, использующий архитектуры, основанные на микросервисах, сильно зависит от весенней загрузки/облака. В настоящее время я работаю над действительно большим проектом с использованием микросервисов, и кажется, что ребята из весны предоставляют множество фреймворков/инструментов для каждого шаблона микросервисов, которые вы должны иметь в виду, когда думаете о микросервисах. С другой стороны, Netflix (крупнейший пользователь микросервисов) полагается на Spring, и я думаю, что Spring Boot/Cloud — хороший способ реорганизовать монолитное приложение Java EE в микросервисы.
Я предлагаю посмотреть https://vimeo.com/163760711. Ответ заключается в том, что вы не должны просто брать свои EJB и превращать их в сервисы, если вы сделаете это, вы просто привнесете всю сложность и проблемы с производительностью, связанные с наличием множества сервисов, и не получите никаких преимуществ микросервисов. Вам нужно переосмыслить свою архитектуру, если вы хотите извлечь выгоду из микросервисов.
Вы можете начать с представления существующих EJB-сервисов с помощью набора веб-сервисов REST, которые, в свою очередь, будут использоваться вашими новыми микросервисами на основе Lagom, например так:
[Сервисы EJB] ‹- [Шлюз служб REST на основе EJB] ‹- [Микросервисы на основе Lagom]
или как модули развертывания:
[ваше приложение EJB .EAR] ‹- [шлюз EJB-REST .WAR] ‹- [приложение на основе Lagom]
Поскольку ваше EJB-приложение будет работать в контейнере (например, Wildfly), ваше приложение Lagom будет развернуто независимо (возможно, на другом хосте). Внедрение слоя REST Services позволит вам разрабатывать каждый из модулей независимо, что является ключом к успеху в данном случае.
Затем постепенно вы будете реализовывать новые функции и, возможно, повторно реализовывать некоторые из устаревших функций в новом приложении на основе Lagom.
Это именно то, что я сделал, и это работает как шарм.