Freigeben über


Vergleichen der Optionen zum Hosten von Java-Anwendungen in Azure

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

Azure bietet Teams zahlreiche Optionen zum Erstellen und Bereitstellen von Java-Anwendungen. Dieser Artikel enthält Informationen zu allgemeinen Szenarien für Java in Azure sowie allgemeine Planungsvorschläge und Überlegungen.

Apache®, Apache Kafka, ApacheStruts, Apache Tomcat und das Flammenlogo sind entweder eingetragene Marken oder Marken der Apache Software Foundation in den USA und/oder anderen Ländern. Die Verwendung dieser Markierungen impliziert kein Endorsement durch die Apache Software Foundation.

Plattform

Ermitteln Sie zunächst die Plattform, bevor Sie ein Cloudszenario für Ihre Java-Anwendung auswählen. Von den meisten Java-Anwendungen wird eine der folgenden Plattformen verwendet:

Spring Boot-JAR-Anwendungen

Spring Boot-JAR-Anwendungen werden in der Regel direkt über die Befehlszeile aufgerufen. Sie verarbeiten Webanforderungen. Anstatt sich bei der Verarbeitung von HTTP-Anforderungen auf einen Anwendungsserver zu verlassen, integrieren diese Anwendungen die HTTP-Kommunikation und andere Abhängigkeiten direkt in das Anwendungspaket. Solche Anwendungen werden häufig mit Frameworks wie Spring Boot, Dropwizard, Micronaut, MicroProfile und Vert.x erstellt.

Diese Anwendungen werden in Archive gepackt, die über die .jar Erweiterung verfügen, die als JAR-Dateien bezeichnet wird.

Spring Cloud-Anwendungen

Der Architekturstil von Microservice ist ein Ansatz für die Entwicklung einer einzelnen Anwendung als Eine Suite kleiner Dienste. Diese Dienste werden jeweils als eigener Prozess ausgeführt und kommunizieren über einfache Mechanismen – häufig mit einer HTTP-Ressourcen-API. Diese Dienste basieren auf den Geschäftsfunktionen.

Die Microservices werden mittels automatisierter Prozesse unabhängig voneinander bereitgestellt. Der Aufwand für die zentralisierte Verwaltung ist minimal, und es können verschiedene Programmiersprachen sowie unterschiedliche Speichertechnologien genutzt werden. Solche Dienste werden häufig mit Frameworks wie Spring Cloud erstellt.

Diese Dienste werden in mehreren Anwendungen als JAR-Dateien verpackt.

Webanwendungen

Webanwendungen werden in einem Servlet-Container ausgeführt. Einige verwenden Servlet-APIs direkt, während andere Frameworks verwenden, die Servlet-APIs kapseln, z. B. Apache Struts, Spring MVC und JavaServer Faces.

Webanwendungen werden in Archive gepackt, die die WAR-Erweiterung haben, die als WAR-Dateien bezeichnet wird.

Jakarta EE-Anwendungen

Jakarta EE-Anwendungen (Jakarta Enterprise Edition) können einige, alle oder keine Elemente von Webanwendungen enthalten. Sie können auch zahlreiche weitere Komponenten enthalten und nutzen, die über die Jakarta EE-Spezifikation definiert sind. Jakarta EE-Anwendungen wurden früher als Java EE-Anwendungen oder J2EE-Anwendungen bezeichnet.

Jakarta EE-Anwendungen können als WAR-Dateien oder als Archive verpackt werden, die die EAR-Erweiterung haben, die als EAR-Dateien bezeichnet werden.

Jakarta EE-Anwendungen müssen auf Anwendungsservern bereitgestellt werden, die mit Jakarta EE kompatibel sind. Beispiele sind WebLogic, WebSphere, WildFly, GlassFish und Payara.

Anwendungen, die nur auf den Features der Jakarta EE-Spezifikation basieren, können zwischen konformen Anwendungsservern migriert werden. Falls Ihre Anwendung von einem bestimmten Anwendungsserver abhängig ist, müssen Sie ggf. ein Azure-Dienstziel auswählen, an dem Sie den Anwendungsserver hosten können.

Plattformoptionen

Anhand der folgenden Tabelle können Sie potenzielle Plattformen für Ihren Anwendungstyp ermitteln:

Azure App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps – ein Dienst für containerbasierte Anwendungen AKS Azure-virtuelle Maschinen
Spring Boot / JAR-Anwendungen
Spring Cloud-Anwendungen
Webanwendungen
Jakarta EE-Anwendungen
Verfügbarkeit von Azure-Regionen Details Details Details Details Details Details

Von Azure Kubernetes Service (AKS) und Virtual Machines werden zwar alle Anwendungstypen unterstützt, Ihr Team muss jedoch mehr Aufgaben übernehmen, wie im nächsten Abschnitt beschrieben.

Support-Fähigkeit

Neben den Plattformoptionen müssen für moderne Java-Anwendungen ggf. noch weitere andere Unterstützbarkeitsanforderungen erfüllt werden. Hierzu zählen beispielsweise:

Batchaufträge oder geplante Aufträge

Anstatt auf Anforderungen oder Benutzereingaben zu warten, werden einige Anwendungen kurz ausgeführt und nach dem Ausführen einer bestimmten Workload wieder beendet. Diese Aufträge müssen teils nur einmal, teils aber auch in regelmäßigen geplanten Intervallen ausgeführt werden. In lokalen Umgebungen werden diese Aufträge häufig über die cron-Tabelle eines Servers aufgerufen.

Diese Anwendungen werden als JAR-Dateien verpackt.

Hinweis

Wenn für Ihre Anwendung ein Planer wie Spring Batch oder Quartz zum Ausführen von geplanten Aufgaben genutzt wird, sollten diese Aufgaben unbedingt außerhalb der Anwendung ausgeführt werden. Wenn Ihre Anwendung auf mehrere Instanzen in der Cloud skaliert wird, kann der gleiche Auftrag mehrmals ausgeführt werden. Falls für Ihren Planungsmechanismus die lokale Zeitzone des Hosts genutzt wird, kann es beim regionsübergreifenden Skalieren einer Anwendung zu unerwünschtem Verhalten kommen.

Integration in ein virtuelles Netzwerk

Wenn Sie eine Java-Anwendung in Ihrem virtuellen Netzwerk bereitstellen, verfügt der Dienst über ausgehende Abhängigkeiten von Diensten außerhalb des virtuellen Netzwerks. Für die Verwaltung und den Betrieb benötigt Ihr Projekt Zugriff auf bestimmte Ports und vollqualifizierte Domänennamen. Mit virtuellen Azure-Netzwerken können Sie viele Ihrer Azure-Ressourcen in einem Netzwerk platzieren, das nicht über das Internet geroutet werden kann. Mit dem Feature für die Integration virtueller Netzwerke können Ihre Anwendungen auf Ressourcen in oder über ein virtuelles Netzwerk zugreifen. Die VNet-Integration ermöglicht keinen privaten Zugriff auf Ihre Anwendungen.

Serverloses Entwicklungsmodell

Das serverlose Entwicklungsmodell ist ein cloudnatives Entwicklungsmodell, mit dem Entwickler Anwendungen ohne Serververwaltung erstellen und ausführen können. Bei serverlosen Anwendungen übernimmt der Cloud-Dienstanbieter automatisch die Bereitstellung, Skalierung und Verwaltung der für die Ausführung des Codes erforderlichen Infrastruktur. Server sind im serverlosen Modell weiterhin vorhanden. Sie werden bei der Anwendungsentwicklung lediglich abstrahiert.

Containerisierung

Als Containerisierung wird das Zusammenfassen von Softwarecode mit allen erforderlichen Komponenten wie Bibliotheken, Frameworks und anderen Abhängigkeiten in Paketen bezeichnet. Die Anwendung wird in einem eigenen Container isoliert.

CI/CD

Continuous Integration und Continuous Delivery (CI/CD) ist eine Methode zur häufigen Bereitstellung von Anwendungen für Kunden durch Integration von Automatisierung in die Phasen der Anwendungsentwicklung. Die wichtigsten Konzepte in CI/CD sind kontinuierliche Integration, kontinuierliche Bereitstellung und kontinuierliche Bereitstellung. Bei allen Azure-Optionen wird der Großteil der CI/CD-Tools unterstützt. Beispielsweise können Sie Lösungen wie Azure Pipelines oder Jenkins verwenden.

Open-Source-Suchmaschine

Suchvorgänge sind ein integraler Bestandteil jeder Anwendung. Wenn Geschwindigkeit, Leistung und Hochverfügbarkeit entscheidend sind, können Suchvorgänge mit Terabytes und Petabytes an Daten eine Herausforderung darstellen. Planen Sie beim Hosten von Java-Anwendungen in Azure das Hosten Ihrer zugehörigen Solr- und Elasticsearch-Instanzen ein. Alternativ können Sie die Migration zu Azure AI Search in Betracht ziehen.

Big-Data-Tools

Big Data-Tools ermöglichen die Automatisierung des Datenflusses zwischen den Softwaresystemen. Sie unterstützen skalierbare, robuste und optimierte Datenroutinggraphen sowie Systemvermittlungslogik. Sie werden verwendet, um Livedatenflusspipelinen und Streamanwendungen zu erstellen. Erfahren Sie, wie Apache Kafka auf Azure für Ihre Bedürfnisse geeignet sein könnte.

Unterstützbarkeitsoptionen

Anhand der folgenden Tabelle können Sie potenzielle Optionen für Ihren Anwendungstyp ermitteln: Von AKS und Virtual Machines werden alle Anwendungstypen unterstützt, Ihr Team muss jedoch mehr Aufgaben übernehmen.

App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps – ein Dienst für containerbasierte Anwendungen AKS Virtuelle Computer
Batchaufträge oder geplante Aufträge
Integration virtueller Netzwerke
Serverlos
Containerisierung
Verfügbarkeit von Azure-Regionen Details Details Details Details Details Details

Weitere Informationen finden Sie in der folgenden Entscheidungsstruktur.

Diagramm, das eine Entscheidungsstruktur für Java in Azure-Diensten zeigt.

Laden Sie eine Visio-Datei dieses Diagramms herunter.

Erstellen oder Migrieren von Java-Anwendungen

Ermitteln Sie die Java-Plattform Ihrer Anwendungen, um die Java-Anwendungen zu erstellen oder zu migrieren. Einige beliebte Plattformen sind Java SE, Jakarta EE und MicroProfile.

Java SE

Java Platform, Standard Edition (Java SE) ist eine Computingplattform für die Entwicklung und Bereitstellung von portierbarem Code für Desktop- und Serverumgebungen. Beliebte Projekte auf Java SE basieren auf Spring Boot, Spring Cloud, Spring Framework und Apache Tomcat.

Jakarta EE

Jakarta EE ist die Open Source-Zukunft von cloudnativem Java für Unternehmen. Hierbei handelt sich um eine Reihe von Spezifikationen, die Java SE um Unternehmensfeatures wie verteiltes Computing und Webdienste erweitern. Jakarta EE-Anwendungen führen Referenzruntimes aus. Diese Runtimes können Microservices oder Anwendungsserver sein. Sie kümmern sich um Transaktionen, Sicherheit, Skalierbarkeit, Parallelität und die Verwaltung der von der Anwendung bereitgestellten Komponenten.

Mikroprofil

Das MicroProfile-Projekt bietet eine Sammlung von Spezifikationen, die Entwickler bei der Erstellung cloudnativer Microservices für Enterprise Java unterstützen. Quarkus und Open Liberty sind beliebte Implementierungen von MicroProfile.

Zusammenfassung zur Erstellung oder Migration

Die folgende Tabelle enthält nach Anwendungstyp und Azure-Dienst aufgeschlüsselte Erstellungs- bzw. Migrationsinformationen:

type Java SE Mikroprofil JakartaSE
Virtuelle Maschine IaaS
VMware Tanzu IaaS
Azure Kubernetes-Dienst Behälter
Red Hat OpenShift Behälter
Azure-Container-App PaaS (Platform-as-a-Service)
JBoss EAP PaaS-App-Dienst
Apache Tomcat PaaS-App-Dienst
Java SE PaaS-App-Dienst

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Um nicht öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.

Nächste Schritte