Переработать веб-сервисы из лабораторной работы #2 таким образом, чтобы они реализовывали основные концепции микросервисной архитектуры. Для этого внести в оба сервиса -- "вызываемый" и "вызывающий" перечисленные ниже изменения.
Изменения в "вызываемом" сервисе:
- Сконфигурировать окружение для работы сервиса на платформе Spring Boot.
- Запустить второй экземпляр сервиса на другом порту. Реализовать балансировку нагрузки между экземплярами с помощью Haproxy.
- Реализовать механизм Service Discovery. Для этого установить Consul и интегрировать свой сервис с ним, автоматически регистрируя в момент запуска.
Изменения в "вызывающем" сервисе:
- Разделить приложение на два модуля -- веб-приложение с веб-сервисом и EJB-jar с бизнес-компонентами.
- Переместить всю логику из класса сервиса в Stateless EJB. В классе сервиса оставить только обращение к методам бизнес-интерфейса. EJB-компонент должен быть доступен удалённо (иметь Remote-интерфейс).
- Сформировать на уровне сервера приложений пул компонентов EJB настраиваемой мощности, динамически расширяемый при увеличении нагрузки.
- Настроить второй экземпляр сервера приложений на другом порту, "поднять" на нём вторую копию веб-сервиса и пула EJB.
- Настроить балансировку нагрузки на оба запущенных узла через Haproxy.
Оба веб-сервиса и клиентское приложение должны сохранить полную совместимость с API, реализованными в рамках предыдущих лабораторных работ.
- Микросервисная архитектура. Особенности реализации. Сходства и отличия от "обычной" СОА.
- Разработка сервисов в микросервисной архитектуре. Стандарты и технологии. Принципы декомпозиции приложений на микросервисы.
- Масштабируемость микросервисных приложений. Балансировщики нагрузки.
- Концепция Service Discovery. Подходы и технологические решения.
- Consul. Установка и конфигурация. Регистрация сервисов.
- Разработка микросервисов на Java EE. Реализация Service Discovery и балансировки нагрузки.
- Разработка микросервисов на Spring. Интеграция с балансировщиками нагрузки и провайдерами Serviсе Discovery.
- Spring Cloud. Особенности, отличия от "голого" Spring Boot. Spring Cloud Netflix.