Confrontare le soluzioni

Completato

Sono stati descritti i tipi di distribuzione più tipici per le applicazioni Java. Si vedrà ora quale servizio di Azure può funzionare meglio, a seconda del tipo di distribuzione necessario.

App container di Azure

App contenitore di Azure consente di concentrarsi sulla creazione di applicazioni Java in contenitori, monolitiche o basate su microservizi, senza la necessità di gestire l'infrastruttura. È possibile distribuire file JAR, WAR o persino codice sorgente e la piattaforma ottimizza automaticamente la memoria e ridimensiona le applicazioni in base alla richiesta. Integra anche funzionalità di diagnostica avanzate per la risoluzione dei problemi di JVM, garantendo prestazioni efficienti per le app Java.

Inoltre, Azure Container Apps supporta componenti Spring gestiti come Spring Cloud Service Registry e Spring Cloud Config Server, fornendo un’integrazione fluida con Spring. Come parte dell'ecosistema di Azure, può gestire i carichi di lavoro aziendali con scalabilità conveniente e gestione sofisticata della memoria, rendendola ideale per architetture di applicazioni tradizionali e moderne.

Servizio app di Azure

Servizio app di Azure è una soluzione PaaS (Platform as a Service) fornita da Azure. Offre un servizio facile da usare per l'esecuzione di applicazioni Web Java con aggiornamenti automatici del sistema operativo e JVM (Java Virtual Machine), nonché la scalabilità automatica o il monitoraggio.

Il servizio app può eseguire qualsiasi file JAR eseguibile, che lo rende un'alternativa ad App Azure Container per l'esecuzione di semplici applicazioni monolitiche Java.

Può anche distribuire qualsiasi applicazione WAR su server applicazioni più diffusi, ad esempio Apache Tomcat o Red Hat JBoss. Questa capacità lo rende la soluzione migliore per l'esecuzione di applicazioni Jakarta EE in Azure.

Funzioni di Azure

Funzioni di Azure è la piattaforma serverless fornita da Azure e supporta l'esecuzione di carichi di lavoro Java.

L'esecuzione di un'applicazione Java in Funzioni di Azure richiede in genere alcune configurazioni e configurazioni secondarie. Per natura, le funzioni serverless hanno breve durata (in genere pochi minuti), quindi alcuni dei servizi che si usano tradizionalmente potrebbero non essere efficienti o pratici come servizio app di Azure.

Di conseguenza, Funzioni di Azure è personalizzata per le applicazioni che necessitano di una grande scalabilità. È possibile arrestarli regolarmente per ridurre i costi ed è possibile aumentarli in modo da rispondere a carichi elevati.

Servizio Azure Kubernetes

Il servizio Azure Kubernetes è una soluzione Kubernetes gestita e protetta fornita da Azure. Può eseguire qualsiasi immagine Docker e trae vantaggio dall'appartenenza all'intero ecosistema Kubernetes. AKS funziona bene se si vogliono distribuire applicazioni native del cloud in qualsiasi linguaggio di programmazione, incluso Java.

Il servizio Azure Kubernetes è una soluzione ideale se si hanno carichi di lavoro eterogenei o se si vuole un controllo preciso sull'ambiente. AKS esegue correttamente i carichi di lavoro Java, ma è necessario creare e gestire le immagini Docker.

Macchine virtuali di Azure

L'esecuzione di macchine virtuali in Azure offre la massima flessibilità e varietà di opzioni. È possibile scegliere tra più sistemi operativi, in genere Windows e le principali distribuzioni linux. È possibile usare il proprio software o alcune delle immagini fornite.

Per Java in particolare, si usano principalmente macchine virtuali per:

  • Installare ed eseguire manualmente un'applicazione Web Java su Windows o Linux.
  • Installare ed eseguire Docker o anche il servizio Azure Kubernetes per eseguire un'immagine che contiene un'applicazione Web Java.
  • Usare una delle offerte supportate, ad esempio Oracle WebLogic, per eseguire applicazioni Web Java nelle macchine virtuali.

Quando si usano macchine virtuali di Azure, non è previsto alcun limite a ciò che è possibile installare ed eseguire, perché si ha il controllo completo su di essi. Lo svantaggio principale delle macchine virtuali, tuttavia, è che è necessario gestirle e proteggerle. Per le macchine virtuali, questo lavoro di manutenzione è responsabilità dell'utente.