Problemlose und sichere Bereitstellung von Java-Anwendungen
Das Java-Ökosystem umfasst verschiedene Technologien wie Java SE, Jakarta EE (Nachfolger von Java EE und J2EE), Spring, zahlreiche Anwendungsserver und andere Frameworks. Ganz gleich, was Sie mit Java tun – z. B. das Erstellen einer App, das Verwenden eines Frameworks oder das Ausführen eines Anwendungsservers – Azure unterstützt Ihre Workloads mit einer Fülle von Auswahlmöglichkeiten. Ebenso unterstützt Azure jede Anwendungsarchitektur – von monolithischen Anwendungen, die auf virtuellen Computern oder in Containern ausgeführt werden, bis hin zu cloud-nativen, auf Mikroservices basierenden Anwendungen, die auf vollständig verwalteten Services ausgeführt werden.
Um Ihre Java-Anwendung auszuführen, stellen Sie sie in der Regel auf einem Anwendungsserver bereit – einer Instanz des virtuellen Java-Computers (JVM), die Ihre Anwendungen ausführt. Sie können auch eine eigenständige Anwendung mit einem eingebetteten Anwendungsserver erstellen. In jedem Fall bietet der Anwendungsserver allgemeine Anwendungsinfrastruktur und funktionale Kapazitäten, die mit Webcontainern zusammenarbeiten, um eine dynamische, angepasste Antwort auf eine Clientanforderung zurückzugeben. Die Clientanforderung kann mithilfe von Softwarekomponenten verarbeitet werden, die Servlets, dynamische Seiten, Enterprise Beans, unterstützende Klassen, abhängige Bibliotheken und Datentreiber enthalten können.
Tomcat, JBoss EAP, WildFly, WebLogic und WebSphere sind beliebte Anwendungsserver. Ebenso sind Spring Boot, Quarkus und Open Liberty beliebte Frameworks zum Erstellen eigenständiger Anwendungen mit eingebetteten Anwendungsservern. Azure unterstützt alle, so dass Sie jeden Java-Anwendungsserver verwenden und Ihre Java-Anwendung problemlos bereitstellen können.
Bereitstellen von Spring Boot oder Java-App auf einem beliebigen Anwendungsserver – Tomcat und Jakarta EE
Mit Azure können Sie jede Version und jede Distribution von Java und jedem Anwendungsserver ohne Einschränkungen ausführen, ohne ihre eigene physische Infrastruktur verwalten zu müssen. Sie entscheiden, wie viel Kontrolle Sie benötigen, oder wie viel tägliche Verwaltungsarbeit Azure für Sie mit Optionen wie virtuellen Computern, Containern und vollständig verwalteten Services übernehmen verarbeiten soll. Wenn Sie kommerziell unterstützte Java-App-Server oder Frameworks verwenden – z. B. VMware Spring Runtime, Red Hat JBoss EAP, Oracle WebLogic Server oder IBM WebSphere, Liberty oder OpenLiberty – bietet Azure gemeinsam entwickelte und unterstützte Angebote für alle an.
Bereitstellungsoptionen
Azure bietet eine Fülle von Bereitstellungsoptionen für Java-Anwendungen, einschließlich Infrastructure-as-a-Service (IaaS), Container-as-a-Service (CaaS) und PaaS-Hostingdienste (Platform-as-a-Service). Sie können vorhandene Java-Anwendungen per „Lift and Shift“ auf virtuelle Computer (VMs) verschieben, sie auf mehrere Arten containerisieren oder auf vollständig verwalteten PaaS-Services bereitstellen, um die Verwaltung, die Entwickler- und Betriebsproduktivität und die Gesamtbetriebskosten zu optimieren.
Virtuelle Computer und Container
Sie können jede Distribution und Version von Java – und alle Anwendungsserver – verwenden, wenn Sie sie auf virtuellen Computern oder Containern in Azure bereitstellen. Die Wahl liegt ganz bei Ihnen. Denken Sie nur daran, dass Sie die Infrastruktur und die zugehörigen Komponenten manuell konfigurieren müssen. Bereitstellungsoptionen, die in diese Kategorie fallen, sind u.a.:
Azure Virtual Machines, die eine flexible Virtualisierung ermöglichen, ohne Zeit und Mittel für den Kauf und die Verwaltung der physischen Hardware aufwenden zu müssen, auf der die VMs ausgeführt werden. Der virtuelle Computer muss allerdings weiterhin gewartet werden, z. B. durch das Installieren, Konfigurieren und Patchen der darauf ausgeführten Software.
Azure Virtual Machine Scale Sets, die Ihnen ermöglichen, eine Gruppe von VMs mit Lastenausgleich zu erstellen und zu verwalten. Die Anzahl von VM-Instanzen kann automatisch erhöht oder verringert werden, wenn sich der Bedarf ändert, oder es kann ein Zeitplan festgelegt werden.
Azure Kubernetes Service (AKS),, der die Bereitstellung eines verwalteten Kubernetes-Clusters vereinfacht, wobei der gesamte Betriebsaufwand für Sie übernommen wird – einschließlich kritischer Aufgaben wie Wartung und Integritätsüberwachung. AKS unterstützt die elastische Bereitstellung von Funktionen, einschließlich der ereignisgesteuerten automatischen Skalierung und KEDA-Auslösern.
Azure Red Hat OpenShift, das hochverfügbare, vollständig verwaltete OpenShift-Cluster zur Verfügung stellt. OpenShift bietet Mehrwertfeatures als Ergänzung zu Kubernetes und ist damit eine sofort einsatzbereite PaaS-Containerplattform (Platform-as-a-Service) mit deutlich gesteigerter Benutzerfreundlichkeit für Entwickler und Betreiber.
Sie können zwar jede Java-Runtime für alle diese IaaS- und CaaS-Services bereitstellen, wir empfehlen jedoch, eine der folgenden zu verwenden:
Microsoft Build of OpenJDK für Java 11 oder 17 – die Basis-Containerimages, die von Microsoft unterstützt werden.
Eclipse Adoptium Temurin für Java 8 – die Java-Laufzeit, die vom Eclipse Adoptium-Projekt (früher OpenJDK-Projekt) bereitgestellt wird.
Beide Builds sind kostenlos für lokale Entwicklung und Tests sowie für das Erstellen von produktionsbereiten Binärdateien mit beliebigen Plattform- oder DevOps-Tools verfügbar, ohne dass Lizenzgebühren anfallen. Wir empfehlen diese aus Einfachheitsgründen. Wenn Sie einen dieser Builds verwenden, können Sie ein Azure-Support Ticket, wenn Sie Probleme haben und über einen qualifizierenden Supportplan für Azure verfügen – ohne weitere Kosten. Wichtig ist, dass dies nur Empfehlungen sind – die Optionen, die wir unter verschiedenen anderen frei verfügbaren Builds von OpenJDK für eine einfache Unterstützung empfehlen. Weitere Informationen finden Sie im Artikel zur Java-Unterstützung in Azure und Azure Stack.
Alle diese IaaS- und CaaS-Bereitstellungsoptionen ermöglichen Ihnen die einfache Bereitstellung des Apache Tomcat-Anwendungsservers. Wenn Sie ein kommerzielles Angebot verwenden – z. B. Spring Runtime von VMware, JBoss EAP von Red Hat, WebLogic Server von Oracle oder WebSphere von IBM – bietet Azure auch gemeinsam entwickelte und unterstützte Hostingoptionen von diesen Anbietern an. Diese werden später unter Gemeinsam mit Java-Ökosystempartnern entwickelte und unterstützte Lösungen behandelt.
Vollständig verwaltete (PaaS)-Services.
Vollständig verwaltete PaaS-Services für die Ausführung von Java-Anwendungen in Azure beinhalten die folgenden Optionen:
- Azure Container Apps zur Ausführung von Mikroservices und containerisierten Anwendungen auf einer serverlosen Plattform. Zu den gängigen Einsatzmöglichkeiten gehören etwa die Bereitstellung von API-Endpunkten, das Hosting von Hintergrundverarbeitungsanwendungen, ereignisgesteuerte Verarbeitung und Ausführung von Microservices. Auf Azure Container Apps aufbauende Anwendungen können basierend auf den folgenden Faktoren dynamisch skaliert werden: HTTP-Datenverkehr, ereignisgesteuerte Verarbeitung, CPU- oder Arbeitsspeicherauslastung und beliebige von KEDA unterstützte Staffelung.
- Azure App Service, ein HTTP-basierter Service zum Hosten von Webanwendungen, REST-APIs und mobilen Back-Ends – mit integrierter Sicherheit, Lastenausgleich, automatischer Skalierung und automatisierter Verwaltung. App Service unterstützt auch umfassende DevOps-Funktionen, z. B. Continuous Deployment über Azure DevOps, GitHub, Docker Hub, die Paketverwaltung, Stagingumgebungen, benutzerdefinierte Domänen und TLS-/SSL-Zertifikate.
Java-Runtimes für Azure-App Service und für Azure Container Apps, die als Code oder Binärdateien (JAR/WAR) bereitgestellt und von Microsoft verwaltet werden. Diese unterstützen nur LTS-Distributionen von OpenJDK mit Eclipse Adoptium Temurin für Java 8 und dem Microsoft Build von OpenJDK für Java 11 und 17. Es gibt jedoch einige Vorbehalte - z. B. verwenden unsere gemeinsam entwickelten und unterstützten Partnerangebote (die später erläutert werden) ihre eigenen Laufzeiten.
Für Azure Container Apps, die aus Ihren eigenen Containerimages erstellt wurden, da Sie Ihre eigenen Containerimages aus Quellcode erstellen und verwalten müssen, können Sie die Distribution und Version von Java – und den Anwendungsserver – Ihrer Wahl verwenden.
Serverlose Funktionen
Manchmal benötigen Sie keine vollständige Java-Anwendung. Für die Echtzeitdatenverarbeitung benötigen Sie beispielsweise vielleicht nur einen kleinen Codeausschnitt, der entsprechend ausgelöst werden kann – vielleicht durch Millionen und Abermillionen von Ereignissen. Solche Ereignisse können über Azure Event Hubs erfasst, von ereignisgesteuertem, serverlosem und skaliertem Java-Code in Azure Functions verarbeitet und in einem Data Store wie etwa Azure Cosmos DB gespeichert werden.
Gemeinsam mit Java-Ökosystempartnern entwickelte und unterstützte Lösungen
Microsoft hat sich mit führenden Anbietern im Java-Ökosystem zusammengetan, um erstklassige Lösungen für die Ausführung von Java auf Azure bereitzustellen – von gemeinsam entwickelten und unterstützten verwalteten Services bis hin zu Azure Marketplace-Angeboten für beliebte Java-Anwendungsserver. Wir haben auch beliebte Anwendungsüberwachungstools integriert, die später in dieser Dokumentation behandelt werden.
JBoss EAP (Red Hat)
Red Hat bietet Open-Source-Lösungen für Unternehmen. Eine solche Lösung ist die JBoss Enterprise Application Platform (EAP), eine beliebte Anwendungsserverplattform, die sowohl im Webprofil als auch in der vollständigen Plattform Java EE-zertifiziert und Jakarta EE-konform ist. Red Hat leistet auch Beiträge für die Java-Standards OpenJDK, MicroProfile, Jakarta EE und Quarkus.
Wir haben uns mit Red Hat zusammengetan, um die Red Hat JBoss Enterprise Application Platform (EAP) auf Azure App Service bereitzustellen – damit Java-Entwickler ihre Jakarta EE-Anwendungen in App Service bereitstellen können, ohne dass ein separates Red Hat-Abonnement oder eine separate Lizenz mit integriertem Support von beiden Unternehmen erforderlich ist. Wir haben auch ähnliche gemeinsame Angebote für JBoss EAP auf Azure-VMs, auf Azure VM Scale Sets und auf Azure RedHat OpenShift (ARO) eingeführt – letzteres auch gemeinsam von Microsoft und Red Hat betrieben.
WebLogic Server (Oracle)
Wir haben mit Oracle gemeinsam Oracle WebLogic Server (WLS) auf Azure VMs und Oracle WebLogic Server auf Azure Kubernetes Service bereitgestellt. Diese Lösungen erleichtern Migrationen zu Azure, indem sie Standardvorgänge automatisieren, z. B. das Bereitstellen virtueller Netzwerke/Speicher, das Installieren von Linux-/Java-Ressourcen, das Einrichten von WebLogic Server und das Konfigurieren der Sicherheit mit einer Netzwerksicherheitsgruppe.
WebSphere/Liberty/Open Liberty (IBM)
Wir entwickeln gemeinsam mit IBM Lösungen für WebSphere Application Server (WAS) auf Azure VMs, WebSphere Liberty und Open Liberty auf Azure Kubernetes Service sowie WebSphere Liberty und Open Liberty auf Azure Red Hat OpenShift. Weitere Informationen finden Sie unter Welche Lösungen gibt es zum Ausführen der IBM WebSphere-Produktfamilie auf Azure? Diese Lösungen ermöglichen eine einfache Migration von WebSphere-Workloads zu Azure und automatisieren die meisten Ressourcenbereitstellungsvorgänge, die zum Einrichten eines hochverfügbaren WebSphere-Clusters erforderlich sind. Die Partnerschaft deckt eine Reihe von Anwendungsfällen ab – von bestehenden geschäftskritischen Workloads bis hin zu cloud-nativen Anwendungen.
Apache Kafka auf Confluent Cloud (Confluent)
In der Vergangenheit mussten Azure-Kunden, die den Kafka-Service von Confluent verwenden wollten, Ressourcen und Benutzer separat in Azure und Confluent Cloud erstellen und verwalten. Um dies zu beseitigen, arbeiteten Confluent und Microsoft zusammen, um Apache Kafka für Confluent Cloud zu entwickeln, ein Azure Marketplace-Angebot, das Apache Kafka als vollständig verwalteten Service bereitstellt – einschließlich der Möglichkeit, Confluent Cloud-Ressourcen über die Azure-Portal, Azure CLI oder Azure Management SDKs zu erstellen und zu verwalten.
Heute ist der Kundenkomfort einfacher, sicherer und nahtloser. Kunden können Confluent Cloud-Ressourcen zusammen mit ihren Azure-Ressourcen als Teil eines einheitlichen Workflows bereitstellen und verwalten und von vollständig verwalteten Konnektoren profitieren, die für Azure Functions, Azure Blob Storage, Azure Event Hubs, Azure Data Lake Storage Gen2 und Microsoft SQL Server erstellt wurden. Entwickler können weiterhin mit Apache Kafka-Clientbibliotheken Code erstellen.
Zusammenfassung
Die gemeinsame Entwicklung vieler dieser Angebote mit Partnern ist ein kontinuierliches Engagement. Da unsere Partner ihre Angebote ständig weiterentwickeln, arbeiten wir eng mit ihnen zusammen, um diese Innovationen schnell zu Azure zu bringen – damit Kunden ihre Java-Anwendungen mit Vertrauen und Leichtigkeit bereitstellen und skalieren können.
Zusammengefasst: Azure unterstützt Ihre Workloads mit einer Fülle von Auswahlmöglichkeiten, unabhängig davon, was Sie mit Java tun. Sie können beliebige Java-Apps erstellen, ein beliebiges Framework verwenden, einen beliebigen Anwendungsserver ausführen und jede Anwendungsarchitektur unterstützen – von monolithischen Anwendungen, die auf VMs oder in Containern ausgeführt werden, bis zu cloud-nativen, auf Mikroservices basierenden Anwendungen, die auf vollständig verwalteten Services ausgeführt werden.
Nächster Schritt
Skalieren mit durchgehender Sicherheit, Überwachung und Automatisierung