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.
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ń:
- Asir Vedamuthu Selvasingh | Główny menedżer programu
- Hang Wang | Menedżer produktu
- Xinyi Zhang | Główny menedżer pm
Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.
Następne kroki
- Omówienie usługi Azure Container Apps
- Azure Kubernetes Service
- Dokumentacja usługi Azure Spring Apps
- Integracja z siecią wirtualną platformy Azure
- Maszyny wirtualne na platformie Azure