Сравнение параметров размещения приложений Java в Azure

Azure Spring Apps
Служба приложений Azure
Служба Azure Kubernetes (AKS)
Виртуальные машины Azure

Azure предлагает множество вариантов для команд для создания и развертывания приложений Java. В этой статье рассматриваются основные сценарии java в Azure и предоставляются общие рекомендации по планированию и рекомендации.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat и логотип пламени являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и /или других странах. Использование этих меток не подразумевает подтверждения от Apache Software Foundation.

Платформа

Прежде чем выбрать облачный сценарий для приложения Java, определите ее платформу. Большинство приложений Java используют одну из следующих платформ:

Приложения SPRING Boot JAR

Приложения SPRING Boot JAR обычно вызываются непосредственно из командной строки. Они обрабатывают веб-запросы. Вместо того, чтобы полагаться на сервер приложений для обработки HTTP-запросов, эти приложения включают http-связь и другие зависимости непосредственно в пакет приложения. Такие приложения часто создаются с помощью таких платформ, как Spring Boot, Dropwizard, Micronaut, MicroProfile и Vert.x.

Эти приложения упаковываются в архивы с расширением .jar , известным как JAR-файлы.

Приложения Spring Cloud

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

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

Эти службы упаковываются в несколько приложений в виде JAR-файлов.

Веб-приложения

Веб-приложения выполняются внутри контейнера сервлета. Некоторые используют API-интерфейсы сервлета напрямую, а другие используют другие платформы, которые инкапсулируют API-интерфейсы сервлета, такие как Apache Struts, Spring MVC и JavaServer Face.

Веб-приложения упаковываются в архивы с расширением WAR, известным как WAR-файлы.

Приложения Jakarta EE

Приложения Jakarta выпуск Enterprise (Jakarta EE) могут содержать некоторые, все или ни один из элементов веб-приложений. Они также могут содержать и использовать много дополнительных компонентов, как определено спецификацией Jakarta EE. Приложения Jakarta EE ранее были известны как приложения Java EE или приложения J2EE.

Приложения Jakarta EE можно упаковыть как WAR-файлы или архивы с расширением EAR, известные как ФАЙЛЫ EAR.

Приложения Jakarta EE должны быть развернуты на серверах приложений, совместимых с Jakarta EE. Примеры: WebLogic, WebSphere, WildFly, GlassFish и Payara.

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

Параметры платформы

Используйте следующую таблицу, чтобы определить потенциальные платформы для типа приложения.

Azure Spring Apps Служба приложений Java SE Служба приложений Томкат Служба приложений JBoss EAP Приложения-контейнеры Azure AKS Виртуальные машины
приложения Spring Boot (JAR);
Приложения Spring Cloud
Веб-приложения
Приложения Jakarta EE
Доступность региона Azure Сведения Сведения Сведения Сведения Сведения Сведения Сведения

Служба Azure Kubernetes (AKS) и Виртуальные машины поддерживать все типы приложений, но им требуется, чтобы ваша команда выполняла дополнительные обязанности, как описано в следующем разделе.

Возможность поддержки

Помимо выбора платформы современные приложения Java могут иметь другие потребности в поддержке, например:

Пакетные или запланированные задания

Вместо ожидания запросов или ввода пользователем некоторые приложения выполняются кратко, запускают определенную рабочую нагрузку, а затем выходят. Иногда такие задания должны выполняться один раз или через регулярные запланированные интервалы. Локальные задания часто вызываются из таблицы cron сервера.

Эти приложения упаковываются в виде JAR-файлов.

Примечание.

Если приложение использует планировщик, например Spring Batch или Qualcom, для выполнения запланированных задач, настоятельно рекомендуется выполнять эти задачи за пределами приложения. Если приложение масштабируется до нескольких экземпляров в облаке, то одно задание может выполняться несколько раз. Если механизм планирования использует локальный часовой пояс узла, при масштабировании приложения в разных регионах может возникнуть ошибка.

Интеграция виртуальной сети

При развертывании приложения Java в виртуальной сети он имеет исходящие зависимости от служб за пределами виртуальной сети. Для управления и операций проект должен иметь доступ к определенным портам и полным доменным именам. С помощью виртуальная сеть Azure можно разместить многие ресурсы Azure в сети, отличной от Интернета. Функция интеграции с виртуальной сетью позволяет приложениям получать доступ к ресурсам в виртуальной сети или через нее. Интеграция с виртуальной сетью не позволяет приложениям получать доступ в частном порядке.

Бессерверная модель разработки

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

Контейнеризация

Контейнеризация — это упаковка программного кода со всеми необходимыми компонентами, такими как библиотеки, платформы и другие зависимости. Приложение изолировано в собственном контейнере.

CI/CD

Непрерывная интеграция и непрерывная доставка (CI/CD) — это метод для частой доставки приложений клиентам путем внедрения автоматизации на стадии разработки приложений. Основными понятиями в CI/CD являются непрерывная интеграция, непрерывная доставка и непрерывное развертывание. Все варианты Azure поддерживают большинство инструментов CI/CD. Например, можно использовать такие решения, как Azure Pipelines или Jenkins.

Поисковая система с открытым исходным кодом

Поиски являются неотъемлемой частью любого приложения. Если скорость, производительность и высокий уровень доступности критически важны, поиск по терабайтам и петабайтам данных может быть сложной задачей. При размещении приложений Java в Azure планируйте размещение связанных экземпляров Solr и Elasticsearch. Кроме того, рассмотрите возможность миграции в Когнитивный поиск Azure.

Средства работы с большими данными

Средства больших данных обеспечивают автоматизацию потока данных среди программных систем. Они поддерживают масштабируемые, надежные и оптимизированные графы маршрутизации данных вместе с логикой системного посредника. Они используются для создания конвейеров потоков данных и потоковых приложений. Узнайте, как Nifi и Apache Kafka в Azure могут быть подходящими для ваших потребностей.

Параметры поддержки

Используйте следующую таблицу, чтобы определить потенциальные параметры для типа приложения. AKS и Виртуальные машины поддерживают все типы приложений, но им требуется, чтобы ваша команда взять на себя больше обязанностей.

Azure Spring Apps Служба приложений Java SE Служба приложений Томкат Служба приложений JBoss EAP Приложения-контейнеры Azure AKS Виртуальные машины
Пакетные или запланированные задания
Интеграция с виртуальной сетью
Бессерверные решения
Контейнеризация
Доступность региона Azure Сведения Сведения Сведения Сведения Сведения Сведения Сведения

Кроме того, обратитесь к этому дереву принятия решений.

На схеме показано дерево принятия решений для Java в службах Azure.

Скачайте файл Visio этой схемы.

Создание или перенос приложений Java

Чтобы создать или перенести приложения Java, определите платформу Java приложений. Некоторые популярные платформы : Java SE, Jakarta EE и MicroProfile.

Java SE

Платформа Java, выпуск Standard (Java SE) — это вычислительная платформа для разработки и развертывания переносимого кода для настольных и серверных сред. Популярные проекты, построенные на Java SE, включают Spring Boot, Spring Cloud, Spring Framework и Apache Tomcat.

Jakarta EE

Jakarta EE — это открытый код будущее облачной корпоративной Java. Это набор спецификаций, которые расширяют Java SE с корпоративными функциями, такими как распределенные вычисления и веб-службы. Приложения Jakarta EE запускают эталонные среды выполнения. Эти среды выполнения могут быть микрослужбами или серверами приложений. Они обрабатывают транзакции, безопасность, масштабируемость, параллелизм и управление компонентами, развертываемых приложением.

MicroProfile

Проект MicroProfile предоставляет коллекцию спецификаций, предназначенных для создания облачных микрослужб Java для разработчиков. Quarkus и Open Liberty являются популярными реализациями MicroProfile.

Сводка по сборке или миграции

В следующей таблице содержатся сведения о сборке или миграции по типу приложения и службе Azure.

Тип Java SE MicroProfile JarkartaSE
Виртуальная машина IaaS
VMware Tanzu IaaS
Служба Azure Kubernetes Контейнер
Red Hat OpenShift Контейнер
Приложение контейнера Azure PaaS
JBoss EAP PaaS Служба приложений
Apache Tomcat PaaS Служба приложений
Java SE PaaS Служба приложений
Azure Spring Apps PaaS

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Основные авторы:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги