Confrontare le opzioni di hosting delle applicazioni Java in Azure

Azure Spring Apps
Servizio app di Azure
Servizio Azure Kubernetes
Macchine virtuali di Azure

Azure offre molte opzioni per i team per compilare e distribuire applicazioni Java. Questo articolo illustra gli scenari mainstream per Java in Azure e fornisce suggerimenti e considerazioni generali sulla pianificazione.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat e il logo con la fiamma sono marchi o marchi registrati di Apache Software Foundation negli Stati Uniti e/o in altri Paesi. L'uso di questi marchi non implica alcuna approvazione da parte di Apache Software Foundation.

Piattaforma

Prima di selezionare uno scenario cloud per l'applicazione Java, identificarne la piattaforma. La maggior parte delle applicazioni Java usa una delle seguenti piattaforme:

Applicazioni Spring Boot JAR

Le applicazioni JAR Spring Boot vengono in genere richiamate direttamente dalla riga di comando. Gestiscono le richieste Web. Invece di basarsi su un server per applicazioni per gestire le richieste HTTP, queste applicazioni incorporano la comunicazione HTTP e tutte le altre dipendenze direttamente nel pacchetto dell'applicazione. Queste applicazioni vengono spesso compilate con framework come Spring Boot, Dropwizard, Micronaut, MicroProfile e Vert.x.

Queste applicazioni vengono compresse in archivi con l'estensione jar, noti come file JAR.

Applicazioni Spring Cloud

Lo stile dell'architettura del microservizio è un approccio allo sviluppo di una singola applicazione come una suite di servizi di piccole dimensioni. Ogni servizio viene eseguito nel proprio processo e comunica usando meccanismi leggeri, spesso un'API di risorse HTTP. Questi servizi sono basati sulle funzionalità aziendali.

I macchinari di distribuzione automatizzata distribuiscono in modo indipendente questi microservizi. Esiste una gestione centralizzata minima, che può essere scritta in linguaggi di programmazione diversi e usare tecnologie di archiviazione dati diverse. Tali servizi sono spesso compilati con framework come Spring Cloud.

Questi servizi sono inclusi in più applicazioni come file JAR.

Applicazioni Web

Le applicazioni Web vengono eseguite all'interno di un contenitore servlet. Alcune usano direttamente le API servlet, mentre altre usano altri framework che incapsulano le API servlet come Apache Struts, Spring MVC e JavaServer Faces.

Le applicazioni Web vengono compresse in archivi con l'estensione .war, noti come file WAR.

Applicazioni Jakarta EE

Le applicazioni Jakarta edizione Enterprise (Jakarta EE) possono contenere alcuni, tutti o nessuno degli elementi delle applicazioni Web. Possono inoltre contenere e utilizzare molti più componenti, come definito dalla specifica Jakarta EE. Le applicazioni Jakarta EE erano in precedenza note come applicazioni Java EE o applicazioni J2EE.

Le applicazioni Jakarta EE possono essere incluse come file WAR o come archivi con estensione .ear, noti come file EAR.

Le applicazioni Jakarta EE devono essere distribuite nei server applicazioni conformi a Jakarta EE. Gli esempi includono WebLogic, WebSphere, WildFly, GlassFish e Payara.

Le applicazioni che si basano solo sulle funzionalità fornite dalla specifica Jakarta EE possono essere migrate da un server applicazioni conforme a un altro. Se l'applicazione dipende da un server applicazioni specifico, potrebbe essere necessario selezionare una destinazione del servizio di Azure che consenta di ospitare tale server applicazioni.

Opzioni della piattaforma

Usare la tabella seguente per identificare possibili piattaforme per un tipo di applicazione.

Azure Spring Apps Java SE Servizio app Tomcat Servizio app JBoss EAP Servizio app App contenitore di Azure servizio Azure Kubernetes Macchine virtuali
Applicazioni Spring Boot/JAR
Applicazioni Spring Cloud
Applicazioni Web
Applicazioni Jakarta EE
Disponibilità della regione di Azure Dettagli Dettagli Dettagli Dettagli Dettagli Dettagli Dettagli

Servizio Azure Kubernetes (AKS) e le Macchine Virtuali supportano tutti i tipi di applicazioni, ma richiedono al team di assumersi più responsabilità, come descritto nella sezione successiva.

Supporto

Oltre alle scelte della piattaforma, le applicazioni Java moderne potrebbero avere altre esigenze di supporto, ad esempio:

Processi batch o pianificati

Invece di attendere le richieste o l'input dell'utente, alcune applicazioni vengono eseguite brevemente, eseguono un determinato carico di lavoro e quindi terminano. A volte, tali processi devono essere eseguiti una sola volta o a intervalli regolari e pianificati. In locale, i processi di questo tipo vengono spesso richiamati dal crontab di un server.

Queste applicazioni vengono incluse come file JAR.

Nota

Se l'applicazione usa un'utilità di pianificazione, ad esempio Spring Batch o Quartz, per eseguire le attività pianificate, è consigliabile eseguire tali attività all'esterno dell'applicazione. Se l'applicazione viene ridimensionata in più istanze nel cloud, lo stesso processo può essere eseguito più di una volta. Se il meccanismo di pianificazione usa il fuso orario locale dell'host, è possibile che si verifichi un comportamento indesiderato durante il ridimensionamento dell'applicazione tra le aree.

Integrazione della rete virtuale

Quando si distribuisce un'applicazione Java nella rete virtuale, questa presenta dipendenze in uscita dai servizi esterni alla rete virtuale. Per la gestione e le operazioni, il progetto deve avere accesso a determinate porte e nomi di dominio completi. Con le reti virtuali di Azure, è possibile inserire molte risorse di Azure in una rete non instradabile su Internet. La funzionalità di integrazione della rete virtuale consente alle applicazioni di accedere alle risorse all'interno o tramite una rete virtuale. L'integrazione della rete virtuale non consente l'accesso privato alle applicazioni.

Modello di sviluppo serverless

Serverless è un modello di sviluppo nativo del cloud che consente agli sviluppatori di compilare ed eseguire applicazioni senza dover gestire i server. Con le applicazioni serverless, il provider di servizi cloud effettua automaticamente il provisioning, il ridimensionamento e la gestione dell'infrastruttura necessaria per l'esecuzione del codice. I server esistono ancora nel modello serverless. Sono astratte dallo sviluppo di applicazioni.

Containerizzazione

La containerizzazione è la creazione di pacchetti di codice software con tutti i relativi componenti necessari, ad esempio librerie, framework e altre dipendenze. L'applicazione è isolata nel proprio contenitore.

CI/CD

L'integrazione continua e il recapito continuo (CI/CD) è un metodo per distribuire spesso applicazioni ai clienti introducendo l'automazione nelle fasi dello sviluppo di applicazioni. I concetti principali di CI/CD sono integrazione continua, recapito continuo e distribuzione continua. Tutte le scelte di Azure supportano la maggior parte degli strumenti CI/CD. Ad esempio, è possibile usare soluzioni come Azure Pipelines o Jenkins.

Motore di ricerca open source

Le ricerche sono parti integrali di qualsiasi applicazione. Se la velocità, le prestazioni e la disponibilità elevata sono critiche, le ricerche su terabyte e petabyte di dati possono risultare complesse. Quando si ospitano applicazioni Java in Azure, pianificare l'hosting delle istanze di Solr e Elasticsearch correlate. In alternativa, prendere in considerazione la migrazione a Ricerca cognitiva di Azure.

Strumenti per Big Data

Gli strumenti big data consentono l'automazione del flusso di dati tra i sistemi software. Supportano grafici di routing dei dati scalabili, affidabili e semplificati insieme alla logica di aggregazione del sistema. Vengono usati per creare pipeline di flussi di dati live e trasmettere applicazioni. Informazioni su come Nifi e Apache Kafka in Azure potrebbero essere adatti alle proprie esigenze.

Opzioni di supporto

Usare la tabella seguente per identificare possibili opzioni per un tipo di applicazione. AKS e le macchine virtuali supportano tutti i tipi di applicazioni, ma richiedono che il team si assuma maggiori responsabilità.

Azure Spring Apps Java SE Servizio app Tomcat Servizio app JBoss EAP Servizio app App contenitore di Azure servizio Azure Kubernetes Macchine virtuali
Processi batch o pianificati
Integrazione della rete virtuale
Senza server
Containerizzazione
Disponibilità della regione di Azure Dettagli Dettagli Dettagli Dettagli Dettagli Dettagli Dettagli

Fare riferimento anche a questa strategia decisionale.

Diagramma che mostra un albero delle decisioni per Java nei servizi di Azure.

Scaricare un file Visio di questo diagramma.

Compilare o eseguire la migrazione di applicazioni Java

Per compilare o eseguire la migrazione delle applicazioni Java, identificare la piattaforma Java delle applicazioni. Alcune piattaforme popolari sono Java SE, Jakarta EE e MicroProfile.

Java SE

Java Platform, edizione Standard (Java SE) è una piattaforma di elaborazione per lo sviluppo e la distribuzione di codice portatile per ambienti desktop e server. I progetti più diffusi basati su Java SE includono Spring Boot, Spring Cloud, Spring Framework e Apache Tomcat.

Jakarta EE

Jakarta EE è il futuro open source di Java aziendale nativo del cloud. Si tratta di un set di specifiche che estendono Java SE con funzionalità aziendali come il calcolo distribuito e i servizi Web. Le applicazioni Jakarta EE eseguono runtime di riferimento. Questi runtime possono essere microservizi o server applicazioni. Gestiscono transazioni, sicurezza, scalabilità, concorrenza e gestione dei componenti distribuiti dall'applicazione.

MicroProfile

Il progetto MicroProfile fornisce una raccolta di specifiche progettate per aiutare gli sviluppatori a creare microservizi nativi del cloud Java enterprise. Quarkus e Open Liberty sono implementazioni popolari di MicroProfile.

Riepilogo della compilazione o della migrazione

La tabella seguente fornisce informazioni di compilazione o migrazione in base al tipo di applicazione e al servizio di Azure.

Type Java SE MicroProfile JarkartaSE
Macchina virtuale IaaS
VMware Tanzu IaaS
Servizio Azure Kubernetes Contenitore
Red Hat OpenShift Contenitore
App contenitore di Azure PaaS
JBoss EAP Servizio app PaaS
Apache Tomcat Servizio app PaaS
Java SE Servizio app PaaS
Azure Spring Apps PaaS

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi