Porównanie opcji hostingu aplikacji Java na platformie Azure

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure Virtual Machines

Platforma Azure oferuje wiele opcji tworzenia i wdrażania aplikacji Java przez zespoły. W tym artykule opisano podstawowe scenariusze dla języka Java na platformie Azure oraz przedstawiono sugestie i zagadnienia dotyczące planowania wysokiego poziomu.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat i logo płomienia są zastrzeżonymi znakami towarowymi lub znakami towarowymi fundacji Apache Software Foundation w Stany Zjednoczone i/lub innych krajach. Użycie tych znaków nie jest dorozumiane przez fundację Apache Software Foundation.

Platforma

Przed wybraniem scenariusza chmury dla aplikacji Java zidentyfikuj jej platformę. Większość aplikacji Java używa jednej z następujących platform:

Aplikacje JAR spring boot

Aplikacje JAR spring boot są zwykle wywoływane bezpośrednio z wiersza polecenia. Obsługują żądania internetowe. Zamiast polegać na serwerze aplikacji do obsługi żądań HTTP, te aplikacje obejmują komunikację HTTP i inne zależności bezpośrednio do pakietu aplikacji. Takie aplikacje są często tworzone za pomocą struktur, takich jak Spring Boot, Dropwizard, Micronaut, MicroProfile i Vert.x.

Te aplikacje są pakowane do archiwów, które mają rozszerzenie .jar nazywane plikami JAR.

Aplikacje Spring Cloud

Styl architektury mikrousług to podejście do tworzenia pojedynczej aplikacji jako zestawu małych usług. Każda usługa działa we własnym procesie i komunikuje się przy użyciu uproszczonych mechanizmów, często interfejsu API zasobów HTTP. Te usługi są tworzone wokół możliwości biznesowych.

Zautomatyzowane maszyny wdrożeniowe niezależnie wdrażają te mikrousługi. Istnieje co najmniej scentralizowane zarządzanie, które może być napisane w różnych językach programowania i używać różnych technologii przechowywania danych. Takie usługi są często tworzone za pomocą struktur, takich jak Spring Cloud.

Te usługi są pakowane do wielu aplikacji jako plików JAR.

Aplikacje sieci Web

Aplikacje internetowe działają wewnątrz kontenera serwletu. Niektóre używają bezpośrednio interfejsów API serwletów, a inne używają innych struktur, które hermetyzują interfejsy API serwletów, takie jak Apache Struts, Spring MVC i JavaServer Faces.

Aplikacje internetowe są pakowane w archiwa, które mają rozszerzenie war znane jako pliki WAR.

Aplikacje Jakarta EE

Aplikacje Jakarta Enterprise Edition (Jakarta EE) mogą zawierać niektóre, wszystkie lub żadne elementy aplikacji internetowych. Mogą również zawierać i wykorzystywać wiele innych składników zgodnie ze specyfikacją EE Dżakarta. Aplikacje Jakarta EE były wcześniej znane jako aplikacje Java EE lub aplikacje J2EE.

Aplikacje Jakarta EE mogą być pakowane jako pliki WAR lub jako archiwa, które mają rozszerzenie ear, znane jako pliki EAR .

Aplikacje Jakarta EE muszą być wdrażane na serwerach aplikacji zgodnych ze standardem Jakarta EE. Przykłady obejmują WebLogic, WebSphere, WildFly, GlassFish i Payara.

Aplikacje, które opierają się tylko na funkcjach udostępnianych przez specyfikację Jakarta EE, można migrować z jednego zgodnego serwera aplikacji na inny. Jeśli aplikacja jest zależna od określonego serwera aplikacji, może być konieczne wybranie miejsca docelowego usługi platformy Azure, które umożliwia hostowanie tego serwera aplikacji.

Opcje platformy

Skorzystaj z poniższej tabeli, aby zidentyfikować potencjalne platformy dla typu aplikacji.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Aplikacje Spring Boot/JAR
Aplikacje Spring Cloud
Aplikacje sieci Web
Aplikacje Jakarta EE
Dostępność regionów platformy Azure Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły

Usługa Azure Kubernetes Service (AKS) i usługa Virtual Machines obsługują wszystkie typy aplikacji, ale wymagają od zespołu podjęcia większej odpowiedzialności zgodnie z opisem w następnej sekcji.

Możliwość obsługi

Oprócz opcji platformy nowoczesne aplikacje Java mogą mieć inne potrzeby w zakresie obsługi, takie jak:

Zadania wsadowe lub zaplanowane

Zamiast czekać na żądania lub dane wejściowe użytkownika, niektóre aplikacje działają krótko, uruchamiają określone obciążenie, a następnie kończą działanie. Czasami takie zadania muszą być uruchamiane raz lub w regularnych, zaplanowanych odstępach czasu. W środowisku lokalnym takie zadania są często wywoływane z tabeli cron serwera.

Te aplikacje są pakowane jako pliki JAR.

Uwaga

Jeśli aplikacja używa harmonogramu, takiego jak Spring Batch lub Quartz, do uruchamiania zaplanowanych zadań, zdecydowanie zalecamy uruchamianie tych zadań poza aplikacją. Jeśli aplikacja skaluje się do wielu wystąpień w chmurze, to samo zadanie może działać więcej niż raz. Jeśli mechanizm planowania używa lokalnej strefy czasowej hosta, może wystąpić niepożądane zachowanie podczas skalowania aplikacji między regionami.

Integracja sieci wirtualnej

Podczas wdrażania aplikacji Java w sieci wirtualnej ma ona zależności wychodzące od usług spoza sieci wirtualnej. W przypadku zarządzania i operacji projekt musi mieć dostęp do niektórych portów i w pełni kwalifikowanych nazw domen. Za pomocą sieci wirtualnych platformy Azure można umieścić wiele zasobów platformy Azure w sieci nieinternetowej. Funkcja integracji sieci wirtualnej umożliwia aplikacjom uzyskiwanie dostępu do zasobów w sieci wirtualnej lub za pośrednictwem sieci wirtualnej. Integracja z siecią wirtualną nie umożliwia uzyskiwania dostępu do aplikacji prywatnie.

Model programowania bezserwerowego

Bezserwerowy to natywny dla chmury model tworzenia aplikacji, który umożliwia deweloperom tworzenie i uruchamianie aplikacji bez konieczności zarządzania serwerami. W przypadku aplikacji bezserwerowych dostawca usług w chmurze automatycznie aprowizuje i skaluje infrastrukturę wymaganą do uruchomienia kodu oraz zarządza nią. Serwery nadal istnieją w modelu bezserwerowym. Są one abstrahowane od tworzenia aplikacji.

Konteneryzacja

Konteneryzacja to pakowanie razem kodu oprogramowania ze wszystkimi niezbędnymi składnikami, takimi jak biblioteki, struktury i inne zależności. Aplikacja jest izolowana we własnym kontenerze.

CI/CD

Ciągła integracja i ciągłe dostarczanie (CI/CD) to metoda częstego dostarczania aplikacji klientom przez wprowadzenie automatyzacji na etapach tworzenia aplikacji. Główne pojęcia w ciągłej integracji/ciągłego wdrażania to ciągła integracja, ciągłe dostarczanie i ciągłe wdrażanie. Wszystkie opcje platformy Azure obsługują większość narzędzi ciągłej integracji/ciągłego wdrażania. Możesz na przykład użyć rozwiązań, takich jak Azure Pipelines lub Jenkins.

Wyszukiwarka typu open source

Wyszukiwania są integralną częścią dowolnej aplikacji. Jeśli szybkość, wydajność i wysoka dostępność są krytyczne, wyszukiwanie terabajtów i petabajtów danych może być trudne. Podczas hostowania aplikacji Java na platformie Azure zaplanuj hostowanie powiązanych wystąpień Solr i Elasticsearch. Alternatywnie rozważ migrację do usługi Azure Cognitive Search.

Narzędzia do obsługi danych big data

Narzędzia do obsługi danych big data umożliwiają automatyzację przepływu danych między systemami oprogramowania. Obsługują skalowalne, niezawodne i usprawnione wykresy routingu danych wraz z logiką korygowania systemu. Są one używane do tworzenia potoków przepływu danych na żywo i aplikacji strumieniowych. Dowiedz się, jak rozwiązania Nifi i Apache Kafka na platformie Azure mogą być odpowiednie dla Twoich potrzeb.

Opcje możliwości obsługi

Skorzystaj z poniższej tabeli, aby zidentyfikować potencjalne opcje dla typu aplikacji. Usługi AKS i Virtual Machines obsługują wszystkie typy aplikacji, ale wymagają od zespołu podjęcia większej odpowiedzialności.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Zadania wsadowe lub zaplanowane
Integracja sieci wirtualnej
Praca bezserwerowa
Konteneryzacja
Dostępność regionów platformy Azure Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły Szczegóły

Zapoznaj się również z tym drzewem decyzyjnym.

Diagram przedstawia drzewo decyzyjne języka Java w usługach platformy Azure.

Pobierz plik programu Visio z tego diagramu.

Kompilowanie lub migrowanie aplikacji Java

Aby skompilować lub zmigrować aplikacje Java, zidentyfikuj platformę Java aplikacji. Niektóre popularne platformy to Java SE, Jakarta EE i MicroProfile.

Java SE

Java Platform, Standard Edition (Java SE) to platforma obliczeniowa do tworzenia i wdrażania przenośnego kodu dla środowisk komputerowych i serwerowych. Popularne projekty oparte na środowisku Java SE obejmują spring boot, Spring Cloud, Spring Framework i Apache Tomcat.

Jakarta EE

Jakarta EE to przyszłość oprogramowania typu open source dla natywnego dla chmury języka Java dla przedsiębiorstw. Jest to zestaw specyfikacji, które rozszerzają środowisko Java SE o funkcje przedsiębiorstwa, takie jak rozproszone przetwarzanie i usługi internetowe. Aplikacje Jakarta EE uruchamiają środowiska uruchomieniowe odwołań. Te środowiska uruchomieniowe mogą być mikrousługami lub serwerami aplikacji. Obsługują one transakcje, zabezpieczenia, skalowalność, współbieżność i zarządzanie składnikami wdrażanych przez aplikację.

MicroProfile

Projekt MicroProfile udostępnia kolekcję specyfikacji zaprojektowanych w celu ułatwienia deweloperom tworzenia mikrousług natywnych dla chmury dla przedsiębiorstw języka Java. Quarkus i Open Liberty to popularne implementacje microProfile.

Podsumowanie kompilacji lub migracji

Poniższa tabela zawiera informacje o kompilacji lub migracji według typu aplikacji i usługi platformy Azure.

Typ Java SE MicroProfile JarkartaSE
Maszyna wirtualna Iaas
VMware Tanzu Iaas
Azure Kubernetes Service Kontener
Red Hat OpenShift Kontener
Aplikacja kontenera platformy Azure Paas
JBoss EAP PaaS App Service
Apache Tomcat PaaS App Service
Java SE PaaS App Service
Azure Spring Apps Paas

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Autorzy zabezpieczeń:

Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki