В течение последних недель я работал над новым примером приложения, которое демонстрирует, как создавать архитектуры на основе микросервисов. Хотя я хотел бы добавить еще несколько незначительных вещей, я думаю, что сейчас образец довольно всеобъемлющий и является хорошим вариантом для разработчиков, особенно разработчиков Java EE, для изучения микросервисов и облачных шаблонов.
Пример доступен в виде открытого исходного кода. Репозиторий GitHub называется cloud-native-starter .
Kubernetes, Istio и Java
При создании облачных приложений перед разработчиками стоит задача выяснить, как решать такие вопросы, как маршрутизация трафика, отказоустойчивость, распределенный мониторинг, обнаружение сервисов и многое другое. К счастью, большинство из этих новых задач решаются платформой оркестровки Kubernetes и служебная сетка Состоит в том , чтобы . Эта функциональность работает в целом для микросервисов, независимо от языка, на котором они реализованы, и без изменений в логике приложения.
Однако некоторые функциональные возможности не могут быть охвачены платформами оркестровки и сетками сервисов. Вместо этого он должен обрабатываться в бизнес-логике микросервисов, например, с функциями отработки отказа для конкретных приложений, показателями и подробными разрешениями.
Разработчики Java могут использовать Микропрофиль Eclipse для реализации этой функции. MicroProfile – это расширение Java EE (Enterprise Edition) для создания архитектур на основе микросервисов, дополняющее возможности Kubernetes и Istio. В дополнение к специфичной для приложения логике, с которой не могут справиться Kubernetes и Istio, он также обладает удобными функциями, которые обычно требуются при разработке микросервисов, например, механизмами вызова API-интерфейсов REST и функциями для реализации API-интерфейсов REST, включая их документацию.
Принципы проектирования
Пример приложения следует этим принципам проектирования:
- Максимально используйте платформы – делайте как можно меньше в рамках, специфичных для конкретного языка
- Используйте компоненты с открытым исходным кодом для основных служб приложения только
- Сделайте первый опыт как можно более простым
- Иметь возможность запускать приложение в разных средах
Позвольте мне более подробно объяснить принципы проектирования.
Максимально используйте платформы – делайте как можно меньше в рамках, специфичных для конкретного языка
Преимущество использования Kubernetes и редактора для таких функций, как управление трафиком, заключается в том, что эти функции не зависят от языка. Облачные приложения могут быть и часто являются полиглотом. Это позволяет разработчикам выбирать наилучшие языки для конкретных задач.
Используйте компоненты с открытым исходным кодом для основных служб приложения только
В своей роли защитника разработчиков я общаюсь со многими разработчиками. Почти все любят открытый исходный код. Чтобы охватить как можно больше разработчиков, пример приложения использует для основных сервисов приложения только проекты с открытым исходным кодом. Например, стек Java использует Open J9 , OpenJDK из Принять OpenJDK , OpenLiberty и МикроПрофИЛЬ . Очевидно, что Kubernetes и Istio также являются проектами с открытым исходным кодом. Компоненты приложения, которые недоступны с открытым исходным кодом, являются необязательными и могут быть заменены.
Сделайте первый опыт как можно более простым
Существует множество примеров, фрагментов, статей и учебных пособий, доступных для различных облачных функций, и многие из них действительно хороши. Однако у меня возникли проблемы с запуском некоторых из этих функций вместе в одном приложении. Иногда они использовали разные стеки Java, иногда разные версии, а иногда статьи были устаревшими.
В примере приложения показано несколько функций, работающих вместе, подробности см. Ниже. Существуют также сценарии для очень простого развертывания служб, в основном по одному сценарию на службу, аналогично “cf push” для приложений Cloud Foundry.
Иметь возможность запускать приложение в разных средах
К счастью, это одно из главных преимуществ Kubernetes, поскольку вы можете запускать рабочие нагрузки в локальной, гибридной или общедоступной облачной инфраструктуре. В репозитории содержатся инструкции по развертыванию приложения в Minicube и в управляемом Облачном сервисе IBM Kubernetes .
Функциональность образца приложения
Проект демонстрирует следующую функциональность:
- Докеризация сервисов микропрофайлов Java
- Управление дорожным движением
- Аутентификация и авторизация
- Устойчивость
- Реализации API REST, включая документацию
- Вызовы API REST
- Мониторинг и показатели
- Распределенное ведение журнала и мониторинг
На этой диаграмме показаны службы и компоненты:
Веб-приложение вызывает API службы BFF (бэкэнд для интерфейса) для отображения статей с авторами.
Призыв к действию
Если вы хотите изучить облачные приложения, получите код пример приложения и следуйте инструкциям для настройки локальной среды Minikube и развертывания микросервисов. Если у вас уже есть кластер Kubernetes, настройка не должна занимать больше получаса.
Вы также можете запустить это приложение в службе IBM Cloud Kubernetes , которая является управляемой службой, поставляемой с плагином Istio . IBM предоставляет бесплатную учетную запись IBM Cloud Lite , кредитная карта не требуется и ограничений по времени нет. Чтобы воспользоваться сервисом Kubernetes, свяжитесь с Харальдом и себе чтобы получить промо-код. Затем следуйте этим инструкциям для развертывания служб в облаке IBM.
Как всегда, я хотел бы получить обратную связь. Пожалуйста, дайте мне знать, что вы думаете об этом примере и как его можно улучшить. Мои прямые сообщения в Твиттере открыты: @@хайдлофф
Я также хочу поблагодарить всех, кто помог создать это приложение, особенно Харальда Уэбеле, который написал много кода и сценариев.
Оригинал: “https://dev.to/nheidloff/example-java-app-running-in-the-cloud-via-kubernetes-2lb7”