Hostingopties voor Java-toepassingen vergelijken in Azure

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

Azure biedt veel opties voor teams voor het bouwen en implementeren van Java-toepassingen. Dit artikel bevat algemene scenario's voor Java in Azure en biedt planningssuggesties en overwegingen op hoog niveau.

Apache, Apache® Kafka, Apache Struts, Apache Tomcat en het vlamlogo zijn geregistreerde handelsmerken of handelsmerken van de Apache Software Foundation in de Verenigde Staten en/of andere landen. Er wordt geen goedkeuring door De Apache Software Foundation geïmpliceerd door het gebruik van deze markeringen.

Platform

Voordat u een cloudscenario voor uw Java-toepassing selecteert, moet u het bijbehorende platform identificeren. De meeste Java-toepassingen gebruiken een van de volgende platforms:

Spring Boot JAR-toepassingen

Spring Boot JAR-toepassingen worden doorgaans rechtstreeks vanaf de opdrachtregel aangeroepen. Ze verwerken webaanvragen. In plaats van te vertrouwen op een toepassingsserver voor het verwerken van HTTP-aanvragen, bevatten deze toepassingen rechtstreeks HTTP-communicatie en andere afhankelijkheden in het toepassingspakket. Dergelijke toepassingen worden vaak gebouwd met frameworks zoals Spring Boot, Dropwizard, Micronaut, MicroProfile en Vert.x.

Deze toepassingen worden verpakt in archieven met de extensie .jar , ook wel JAR-bestanden genoemd.

Spring Cloud-toepassingen

De architectuurstijl van de microservice is een benadering voor het ontwikkelen van één toepassing als een suite met kleine services. Elke service wordt uitgevoerd in een eigen proces en communiceert met behulp van lichtgewicht mechanismen, vaak een HTTP-resource-API. Deze services zijn gebaseerd op bedrijfsmogelijkheden.

Geautomatiseerde implementatiemachines implementeren deze microservices onafhankelijk. Er is minimaal gecentraliseerd beheer, dat kan worden geschreven in verschillende programmeertalen en verschillende technologieën voor gegevensopslag gebruiken. Dergelijke services worden vaak gebouwd met frameworks zoals Spring Cloud.

Deze services worden in meerdere toepassingen verpakt als JAR-bestanden.

Webtoepassingen

Webtoepassingen worden uitgevoerd in een servlet-container. Sommige maken rechtstreeks gebruik van servlet-API's, terwijl andere frameworks andere frameworks gebruiken die servlet-API's inkapselen, zoals Apache Struts, Spring MVC en JavaServer Faces.

Webtoepassingen worden verpakt in archieven met de extensie .war , ook wel WAR-bestanden genoemd.

Jakarta EE-toepassingen

Jakarta Enterprise Edition-toepassingen (Jakarta EE) kunnen enkele, alle of geen van de elementen van webtoepassingen bevatten. Ze kunnen ook veel meer onderdelen bevatten en verbruiken, zoals gedefinieerd door de Jakarta EE-specificatie. Jakarta EE-toepassingen werden voorheen Java EE-toepassingen of J2EE-toepassingen genoemd.

Jakarta EE-toepassingen kunnen worden verpakt als WAR-bestanden of als archieven met de .ear-extensie , ook wel EAR-bestanden genoemd.

Jakarta EE-toepassingen moeten worden geïmplementeerd op toepassingsservers die compatibel zijn met Jakarta EE. Voorbeelden zijn WebLogic, WebSphere, WildFly, GlassFish en Payara.

Toepassingen die alleen afhankelijk zijn van functies van de Jakarta EE-specificatie, kunnen worden gemigreerd van de ene compatibele toepassingsserver naar een andere. Als uw toepassing afhankelijk is van een specifieke toepassingsserver, moet u mogelijk een Azure-servicebestemming selecteren waarmee u die toepassingsserver kunt hosten.

Platformopties

Gebruik de volgende tabel om potentiële platforms voor uw toepassingstype te identificeren.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Spring Boot-/JAR-toepassingen
Spring Cloud-toepassingen
Webtoepassingen
Jakarta EE-toepassingen
Beschikbaarheid van Azure-regio's DETAILS DETAILS DETAILS DETAILS DETAILS DETAILS DETAILS

Azure Kubernetes Service (AKS) en Virtual Machines ondersteunen alle toepassingstypen, maar ze vereisen dat uw team meer verantwoordelijkheden neemt, zoals beschreven in de volgende sectie.

Ondersteuning

Naast de platformkeuzen kunnen moderne Java-toepassingen andere ondersteuningsbehoeften hebben, zoals:

Batch- of geplande taken

In plaats van te wachten op aanvragen of gebruikersinvoer, worden sommige toepassingen kort uitgevoerd, een bepaalde werkbelasting uitgevoerd en vervolgens afgesloten. Soms moeten dergelijke taken één keer of met regelmatige, geplande intervallen worden uitgevoerd. On-premises worden dergelijke taken vaak aangeroepen vanuit de cron-tabel van een server.

Deze toepassingen worden verpakt als JAR-bestanden.

Notitie

Als uw toepassing gebruikmaakt van een planner, zoals Spring Batch of Quartz, om geplande taken uit te voeren, raden we u ten zeerste aan om deze taken buiten de toepassing uit te voeren. Als uw toepassing wordt geschaald naar meerdere exemplaren in de cloud, kan dezelfde taak meerdere keren worden uitgevoerd. Als uw planningsmechanisme gebruikmaakt van de lokale tijdzone van de host, is er mogelijk ongewenst gedrag wanneer u een toepassing in verschillende regio's schaalt.

Integratie van virtueel netwerk

Wanneer u een Java-toepassing in uw virtuele netwerk implementeert, heeft deze uitgaande afhankelijkheden van services buiten het virtuele netwerk. Voor beheer en bewerkingen moet uw project toegang hebben tot bepaalde poorten en volledig gekwalificeerde domeinnamen. Met Azure Virtual Networks kunt u veel van uw Azure-resources in een niet-internetrouteerbaar netwerk plaatsen. Met de functie voor integratie van virtuele netwerken kunnen uw toepassingen toegang krijgen tot resources in of via een virtueel netwerk. Dankzij de integratie van virtuele netwerken kunnen uw toepassingen niet privé worden geopend.

Serverloos ontwikkelingsmodel

Serverloos is een cloudeigen ontwikkelmodel waarmee ontwikkelaars toepassingen kunnen bouwen en uitvoeren zonder servers te hoeven beheren. Met serverloze toepassingen wordt de infrastructuur die is vereist om de code uit te voeren, automatisch ingericht, geschaald en beheerd door de cloudserviceprovider. Servers bestaan nog steeds in het serverloze model. Ze worden afgestraheerd van de ontwikkeling van toepassingen.

Containervorming

Containerisatie is de verpakking van softwarecode met alle benodigde onderdelen, zoals bibliotheken, frameworks en andere afhankelijkheden. De toepassing is geïsoleerd in een eigen container.

CI/CD

Continue integratie en continue levering (CI/CD) is een methode voor het regelmatig leveren van toepassingen aan klanten door automatisering te introduceren in de fasen van het ontwikkelen van toepassingen. De belangrijkste concepten in CI/CD zijn continue integratie, continue levering en continue implementatie. Alle Azure-opties ondersteunen de meeste CI/CD-hulpprogramma's. U kunt bijvoorbeeld oplossingen zoals Azure Pipelines of Jenkins gebruiken.

Opensource-zoekmachine

Zoekopdrachten zijn integrale onderdelen van elke toepassing. Als snelheid, prestaties en hoge beschikbaarheid essentieel zijn, kunnen zoekopdrachten op terabytes en petabytes aan gegevens lastig zijn. Wanneer u Java-toepassingen in Azure host, bent u van plan om uw gerelateerde Solr- en Elasticsearch-exemplaren te hosten. U kunt ook migreren naar Azure Cognitive Search.

Big data-hulpprogramma's

Met big data-hulpprogramma's kunt u de automatisering van de gegevensstroom tussen de softwaresystemen mogelijk maken. Ze ondersteunen schaalbare, robuuste en gestroomlijnde grafieken voor gegevensroutering, samen met systeembemiddelingslogica. Ze worden gebruikt om pijplijnen voor livegegevensstromen te bouwen en toepassingen te streamen. Meer informatie over hoe Nifi en Apache Kafka in Azure mogelijk geschikt zijn voor uw behoeften.

Ondersteuningsopties

Gebruik de volgende tabel om mogelijke opties voor uw toepassingstype te identificeren. AKS en Virtual Machines ondersteunen alle toepassingstypen, maar ze vereisen dat uw team meer verantwoordelijkheden neemt.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Batch- of geplande taken
Integratie van virtueel netwerk
Serverloos
Containervorming
Beschikbaarheid van Azure-regio's DETAILS DETAILS DETAILS DETAILS DETAILS DETAILS DETAILS

Raadpleeg ook deze beslissingsstructuur.

Diagram toont een beslissingsstructuur voor Java in Azure-services.

Download een Visio-bestand van dit diagram.

Java-toepassingen bouwen of migreren

Als u de Java-toepassingen wilt bouwen of migreren, identificeert u het Java-platform van uw toepassingen. Sommige populaire platforms zijn Java SE, Jakarta EE en MicroProfile.

Java SE

Java Platform, Standard Edition (Java SE) is een computingplatform voor de ontwikkeling en implementatie van draagbare code voor bureaublad- en serveromgevingen. Populaire projecten die zijn gebouwd op Java SE zijn Spring Boot, Spring Cloud, Spring Framework en Apache Tomcat.

Jakarta EE

Jakarta EE is de open source toekomst van cloudeigen enterprise Java. Het is een set specificaties waarmee Java SE wordt uitgebreid met bedrijfsfuncties zoals gedistribueerde computing en webservices. Jakarta EE-toepassingen voeren referentieruntimes uit. Deze runtimes kunnen microservices of toepassingsservers zijn. Ze verwerken transacties, beveiliging, schaalbaarheid, gelijktijdigheid en beheer van de onderdelen die de toepassing implementeert.

MicroProfile

Het MicroProfile-project biedt een verzameling specificaties die zijn ontworpen om ontwikkelaars te helpen bij het bouwen van systeemeigen Enterprise Java-microservices. Quarkus en Open Liberty zijn populaire implementaties van MicroProfile.

Samenvatting bouwen of migreren

De volgende tabel bevat build- of migratiegegevens per toepassingstype en Azure-service.

Type Java SE MicroProfile JarkartaSE
Virtuele machine IaaS
VMware Tanzu IaaS
Azure Kubernetes Service Container
Red Hat OpenShift Container
Azure Container App PaaS
JBoss EAP PaaS App Service
Apache Tomcat PaaS App Service
Java SE PaaS App Service
Azure Spring Apps PaaS

Medewerkers

Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Belangrijkste auteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen