Scegliere un'opzione di calcolo di Azure per i microservizi
Il termine calcolo fa riferimento al modello di hosting per le risorse di calcolo in cui viene eseguita l'applicazione. Questo articolo fornisce indicazioni prescrittive che consentono di scegliere una piattaforma di calcolo per i microservizi. La selezione della piattaforma di calcolo del microservizio potrebbe dipendere da requisiti più complessi.
Per un'architettura di microservizi, sono diffusi gli approcci seguenti:
- Distribuire microservizi in piattaforme di calcolo dedicate, in genere usando un agente di orchestrazione di microservizi.
- Distribuire microservizi in una piattaforma serverless.
Anche se queste opzioni non sono le uniche, sono entrambi approcci collaudati per la creazione di microservizi. Un'applicazione può includere entrambi gli approcci.
Scaricare un file di Visio di questa architettura.
Usare una piattaforma serverless
È possibile usare le piattaforme serverless per distribuire microservizi in App Azure Container o Funzioni di Azure. Sia le app contenitore che le funzioni offrono opzioni di calcolo serverless che fatturano in base al volume di richieste anziché al consumo di calcolo. Entrambe le piattaforme offrono anche la possibilità di ospitare i carichi di lavoro in capacità dedicata.
Distribuire microservizi basati su codice
Se si vogliono distribuire i microservizi come codice anziché inserirli in contenitori, è possibile usare Funzioni di Azure. Per altre informazioni, vedere l'elenco dei linguaggi di programmazione e scripting supportati da Funzioni. Per i microservizi sviluppati in altri linguaggi, è possibile implementare un gestore personalizzato in Funzioni o prendere in considerazione la possibilità di inserire in contenitori l'applicazione.
Usare un modello GPU
Se il microservizio richiede capacità GPU, ad esempio, per eseguire attività di Machine Learning, è consigliabile scegliere App contenitore o servizio Azure Kubernetes (servizio Azure Kubernetes) per la piattaforma. Il servizio Azure Kubernetes può usare qualsiasi modello GPU in Azure e App contenitore offre un subset di modelli GPU tra cui scegliere.
Usare agenti di orchestrazione del servizio
Un agente di orchestrazione gestisce le attività correlate alla distribuzione e alla gestione di un set di servizi. Queste attività includono il posizionamento dei servizi nei nodi, il monitoraggio dell'integrità dei servizi, il riavvio dei servizi non integri, il bilanciamento del carico del traffico di rete tra istanze dei servizi, l'individuazione dei servizi, il ridimensionamento del numero di istanze di un servizio e l'applicazione degli aggiornamenti della configurazione. Gli agenti di orchestrazione più diffusi includono Kubernetes, Azure Service Fabric, DC/OS e Docker Swarm.
Nella piattaforma Azure prendere in considerazione le opzioni seguenti:
Il servizio Azure Kubernetes è un ambiente Kubernetes gestito. Il servizio Azure Kubernetes effettua il provisioning di Kubernetes ed espone gli endpoint, gli host e gestisce il piano di controllo Kubernetes ed esegue aggiornamenti automatizzati, applicazione automatica di patch, scalabilità automatica e altre attività di gestione. Il servizio Azure Kubernetes fornisce l'accesso diretto alle API Kubernetes.
App contenitore è un servizio gestito basato su Kubernetes che astrae le complessità dell'orchestrazione dei contenitori e altre attività di gestione. App contenitore semplifica la distribuzione e la gestione di applicazioni e microservizi in contenitori in un ambiente serverless, fornendo al tempo stesso le funzionalità di Kubernetes. App contenitore è ideale per scenari in cui non è necessario l'accesso diretto alle API Kubernetes.
Service Fabric è una piattaforma di sistemi distribuiti per la creazione di pacchetti, la distribuzione e la gestione di microservizi. È possibile distribuire microservizi in Service Fabric come contenitori, come eseguibili binari o come Reliable Services. Usando il modello di programmazione Reliable Services, i servizi possono usare direttamente le API di programmazione di Service Fabric per eseguire query sul sistema, segnalare l'integrità dei report, ricevere notifiche sulle modifiche di configurazione e codice e individuare altri servizi.
Usare Azure Red Hat OpenShift per distribuire cluster OpenShift completamente gestiti. Azure Red Hat OpenShift estende Kubernetes. Azure Red Hat OpenShift è progettato, gestito e supportato congiuntamente da Red Hat e Microsoft.
Altre opzioni, ad esempio Docker edizione Enterprise, possono essere eseguite in un ambiente di cloud computing in Azure. È possibile trovare modelli di distribuzione in Azure Marketplace.
Usare le API Kubernetes
L'accesso alle API Kubernetes è spesso un fattore determinante quando si sceglie un'opzione di calcolo. Il servizio Azure Kubernetes fornisce l'accesso diretto alle API Kubernetes, ma le app contenitore non lo fanno. App contenitore nasconde le complessità di Kubernetes e semplifica l'esperienza di distribuzione dei contenitori. Se si progetta la distribuzione di microservizi per interagire direttamente con le API Kubernetes, il servizio Azure Kubernetes potrebbe essere la scelta giusta.
Altri fattori decisionali
Potrebbero esserci altri fattori che influiscono sulla selezione della piattaforma di calcolo dei microservizi. Questi fattori includono opzioni mesh di servizi, scalabilità della piattaforma e set di competenze che è possibile usare all'interno dell'organizzazione.
Considerazioni
Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.
Affidabilità
L'affidabilità garantisce che l'applicazione possa soddisfare gli impegni che l'utente ha preso con i clienti. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'affidabilità.
Uno dei pilastri chiave dell'affidabilità è la resilienza. L'obiettivo della resilienza è restituire il carico di lavoro a uno stato completamente funzionante dopo un errore.
Se si sceglie Funzioni di Azure come piattaforma di elaborazione di microservizi, è consigliabile distribuire il piano Funzioni Premium o app Azure piano di servizio in una configurazione con ridondanza della zona. Per altre informazioni, vedere Affidabilità in Funzioni.
Se si sceglie il servizio Azure Kubernetes come piattaforma di calcolo di microservizi, è possibile migliorare l'affidabilità dei microservizi distribuendo un cluster del servizio Azure Kubernetes che usa le zone di disponibilità, usando il livello Standard o Premium per i cluster Azure Kubernetes e aumentando il numero minimo di pod e nodi. Per altre informazioni, vedere Procedure consigliate per l'affidabilità di distribuzione e cluster per il servizio Azure Kubernetes.
Se si sceglie App contenitore come piattaforma di elaborazione di microservizi, è possibile migliorare l'affidabilità usando le zone di disponibilità. Per altre informazioni, vedere Affidabilità nelle app contenitore.
Sicurezza
La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per la sicurezza.
Se si sceglie Funzioni di Azure come piattaforma di calcolo per distribuire microservizi, i principi di protezione Funzioni di Azure si applicano anche ai microservizi.
Se si sceglie il servizio Azure Kubernetes come piattaforma di calcolo per distribuire microservizi, l'architettura di base di sicurezza del servizio Azure Kubernetes fornisce indicazioni per proteggere la piattaforma di calcolo. Per le procedure consigliate sulla sicurezza dei microservizi nel servizio Azure Kubernetes, vedere Architettura avanzata dei microservizi del servizio Azure Kubernetes.
Se si sceglie App contenitore come piattaforma di calcolo per distribuire microservizi, vedere la baseline di sicurezza per le app contenitore per le procedure consigliate per la sicurezza.
Ottimizzazione dei costi
L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Elenco di controllo per la revisione della progettazione per l'ottimizzazione dei costi.
Quando si usa un agente di orchestrazione, si paga per le macchine virtuali eseguite nel cluster. Quando si usa un'applicazione serverless, si paga solo per le risorse di calcolo effettive utilizzate. In entrambi i casi, è necessario tenere conto del costo di eventuali servizi aggiuntivi, ad esempio archiviazione, database e servizi di messaggistica.
Funzioni di Azure, app contenitore e servizio Azure Kubernetes offrono opzioni di scalabilità automatica. Le app e le funzioni contenitore forniscono piattaforme serverless in cui il costo è basato sull'utilizzo e può essere zero. Il servizio Azure Kubernetes offre solo opzioni di calcolo dedicate.
Se si sceglie il servizio Azure Kubernetes come piattaforma di calcolo per distribuire microservizi, è necessario comprendere le procedure consigliate per l'ottimizzazione dei costi. Per altre informazioni, vedere Ottimizzare i costi in servizio Azure Kubernetes.
Se si sceglie App contenitore come piattaforma di calcolo di microservizi, è necessario comprendere i vari modelli di fatturazione e decidere il modello di distribuzione per i microservizi in base ai requisiti del carico di lavoro. Per altre informazioni, vedere Fatturazione nelle app contenitore.
Se si sceglie Funzioni di Azure come piattaforma di calcolo dei microservizi, è necessario comprendere i vari modelli di fatturazione e decidere il piano funzioni in base ai requisiti del carico di lavoro. Per altre informazioni, vedere Stimare i costi basati sul consumo e Funzioni di Azure dettagli del piano.
Eccellenza operativa
L'eccellenza operativa copre i processi operativi che distribuiscono un'applicazione e la mantengono in esecuzione nell'ambiente di produzione. Per maggiori informazioni, consultare la sezione Elenco di controllo per la revisione della progettazione per l'eccellenza operativa.
È possibile distribuire tutte le scelte di calcolo del microservizio descritte in questo articolo in modo automatizzato usando Terraform, Bicep e altri linguaggi di scripting. È possibile usare Application Insights, Monitoraggio di Azure e altre soluzioni di monitoraggio per monitorare queste piattaforme di calcolo e microservizi.
Quando si sceglie un approccio dell'agente di orchestrazione e un approccio serverless, tenere presenti i fattori seguenti:
Flessibilità e controllo: un agente di orchestrazione consente di controllare la configurazione e la gestione dei servizi e del cluster. Il compromesso è più complesso. Con un'architettura senza server si rinuncia a parte del controllo perché questi dettagli vengono estratti.
Portabilità: tutti gli agenti di orchestrazione elencati in questo articolo, tra cui Kubernetes, DC/OS, Docker Swarm e Service Fabric, possono essere eseguiti in locale o in più cloud pubblici.
Integrazione delle applicazioni: può essere difficile compilare un'applicazione complessa che usa un'architettura serverless perché è necessario coordinare, distribuire e gestire molte funzioni piccole e indipendenti. Un'opzione in Azure consiste nell'usare App per la logica di Azure per coordinare un set di funzioni di Azure. Per un esempio di questo approccio, vedere Creare una funzione che si integra con App per la logica.