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 flame sono marchi registrati o marchi di Apache Software Foundation nei 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 piattaforme seguenti:
- Applicazioni JAR Spring Boot
- Applicazioni Spring Cloud
- Applicazioni Web
- Applicazioni di Jakarta edizione Enterprise
Applicazioni JAR Spring Boot
Le applicazioni JAR Spring Boot vengono in genere richiamate direttamente dalla riga di comando. Gestiscono le richieste Web. Anziché basarsi su un server applicazioni per gestire le richieste HTTP, queste applicazioni incorporano la comunicazione HTTP e altre dipendenze direttamente nel pacchetto dell'applicazione. Tali applicazioni vengono spesso compilate con framework come Spring Boot, Dropwizard, Micronaut, MicroProfile e Vert.x.
Queste applicazioni vengono inserite in archivi con estensione .jar , nota 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 almeno una gestione centralizzata, che potrebbe essere scritta in linguaggi di programmazione diversi e usare tecnologie di archiviazione dei dati diverse. Questi servizi vengono spesso compilati con framework come Spring Cloud.
Questi servizi vengono inseriti 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, ad esempio Apache Struts, Spring MVC e JavaServer Faces.
Le applicazioni Web vengono inserite in archivi con estensione war , nota come file WAR.
Applicazioni di Jakarta edizione Enterprise
Le applicazioni Jakarta edizione Enterprise (Jakarta edizione Enterprise) possono contenere alcuni, tutti o nessuno degli elementi delle applicazioni Web. Possono anche contenere e utilizzare molti altri componenti, come definito dalla specifica di Jakarta edizione Enterprise. Le applicazioni di Jakarta edizione Enterprise erano in precedenza note come applicazioni Java edizione Enterprise o applicazioni J2 edizione Enterprise.
Jakarta edizione Enterprise applicazioni possono essere incluse come file WAR o come archivi con estensione ear, noti come file EAR.
Le applicazioni di Jakarta edizione Enterprise devono essere distribuite nei server applicazioni conformi a Jakarta edizione Enterprise. Gli esempi includono WebLogic, WebSphere, WildFly, GlassFish e Payara.
Le applicazioni che si basano solo sulle funzionalità fornite dalla specifica di Jakarta edizione Enterprise 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 le potenziali piattaforme per il tipo di applicazione.
Azure Spring Apps | servizio app java edizione Standard | servizio app Tomcat | servizio app JBoss EAP | App contenitore di Azure | Servizio Azure Kubernetes | Macchine virtuali | |
---|---|---|---|---|---|---|---|
Applicazioni Spring Boot/JAR | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Applicazioni Spring Cloud | ✔ | ✔ | ✔ | ✔ | |||
Applicazioni Web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Applicazioni di Jakarta edizione Enterprise | ✔ | ✔ | ✔ | ||||
Disponibilità della regione di Azure | Dettagli | Dettagli | Dettagli | Dettagli | Dettagli | Dettagli | Dettagli |
servizio Azure Kubernetes (servizio Azure Kubernetes) e Macchine virtuali supportano tutti i tipi di applicazioni, ma richiedono al team di assumere 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. In alcuni casi, tali processi devono essere eseguiti una volta o a intervalli regolari pianificati. In locale, tali processi vengono spesso richiamati dalla tabella cron di un server.
Queste applicazioni vengono incluse come file JAR.
Nota
Se l'applicazione usa un'utilità di pianificazione, ad esempio Spring Batch o Quarzi, per eseguire 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ù volte. Se il meccanismo di pianificazione usa il fuso orario locale dell'host, potrebbe verificarsi un comportamento indesiderato quando si ridimensiona un'applicazione tra aree.
Integrazione della rete virtuale
Quando si distribuisce un'applicazione Java nella rete virtuale, presenta dipendenze in uscita dai servizi all'esterno della rete virtuale. Per la gestione e le operazioni, il progetto deve avere accesso a determinate porte e nomi di dominio completi. Con Azure Rete virtuale, è possibile inserire molte delle risorse di Azure in una rete instradabile non Internet. La funzionalità di integrazione della rete virtuale consente alle applicazioni di accedere alle risorse in 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 l'integrazione continua, il recapito continuo e la 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 le possibili opzioni per il tipo di applicazione. Il servizio Azure Kubernetes e Macchine virtuali supportano tutti i tipi di applicazioni, ma richiedono al team di assumere più responsabilità.
Azure Spring Apps | servizio app java edizione Standard | servizio app Tomcat | servizio app JBoss EAP | 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 questo albero delle decisioni.
Scaricare un file di 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 comuni sono Java edizione Standard, Jakarta edizione Enterprise e MicroProfile.
Java SE
Java Platform, edizione Standard (Java edizione Standard) è 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 edizione Standard includono Spring Boot, Spring Cloud, Spring Framework e Apache Tomcat.
Jakarta EE
Jakarta edizione Enterprise è il futuro open source di Java aziendale nativo del cloud. Si tratta di un set di specifiche che estendono Java edizione Standard con funzionalità aziendali come il calcolo distribuito e i servizi Web. Le applicazioni di Jakarta edizione Enterprise 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 | Jarkarta edizione Standard | |
---|---|---|---|---|
Macchina virtuale | IaaS | ✔ | ✔ | ✔ |
VMware Tanzu | IaaS | ✔ | ||
Servizio Azure Kubernetes | Contenitore | ✔ | ✔ | ✔ |
Red Hat OpenShift | Contenitore | ✔ | ✔ | ✔ |
Azure Container App | PaaS | ✔ | ✔ | |
JBoss EAP | Servizio app PaaS | ✔ | ✔ | |
Apache Tomcat | Servizio app PaaS | ✔ | ||
Java edizione Standard | Servizio app PaaS | ✔ | ✔ | |
Azure Spring Apps | PaaS | ✔ |
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autori principali:
- Asir Vedamuthu Selvasingh | Principal Program Manager
- Hang Wang | Product Manager
- Xinyi Zhang | Principal PM Manager
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Panoramica delle app di Azure Container
- Servizio Azure Kubernetes
- Documentazione di Azure Spring Apps
- Integrazione della rete virtuale di Azure
- Macchine virtuali Linux in Azure