Azure Container Apps: un servizio container serverless per eseguire app moderne scalabili

Le innovazioni tecnologiche si stanno susseguendo a ritmi sempre più veloci ed è per questo che oggi si richiede alle aziende di concentrarsi sulla logica di business differenziata e sulla consegna ad alta velocità per massimizzare l’impatto. Molte opzioni di cloud hosting per microservizi e applicazioni containerizzate richiedono la gestione dell’infrastruttura e possono aumentare la complessità della soluzione, il costo complessivo e il time to market.

Azure Container Apps è un servizio di hosting incentrato sulle applicazioni serverless in cui gli utenti non vedono o non gestiscono alcuna VM sottostante o altre infrastrutture cloud. Azure Container Apps consente l’esecuzione di un codice applicativo confezionato in qualsiasi contenitore e non è influenzato dal runtime o dal modello di programmazione. 

Le applicazioni possono scalare in risposta a richieste HTTP, eventi (ad esempio,storage queue messages, Kafka topics, ecc.), o semplicemente essere eseguite come always-on background jobs.

Azure Container Apps soddisfa i requisiti specifici per i microservizi, tra cui la comunicazione criptata da servizio a servizio e lo scaling indipendente dei servizi. Inoltre, è costruito sulla base della potente tecnologia open-source dell’ecosistema Kubernetes. 

L’approccio centric open-source consente ai team un percorso per costruire microservizi senza dover lavorare direttamente con Kubernetes e consente la portabilità continua delle applicazioni sfruttando gli standard aperti e le API. 

Dietro le quinte, ogni applicazione viene eseguita su Azure Kubernetes Service, con Kubernetes Event Driven Autoscaling (KEDA), Distributed Application Runtime (Dapr) ed Envoy profondamente integrati nel servizio di hosting.

Come iniziare con Azure Container Apps

Più Azure Container Apps individuali possono essere distribuite in un singolo ambiente Azure Container Apps, che agisce come un confine di isolamento tra un gruppo di Container Apps. 

Le Container Apps distribuite nello stesso ambiente scrivono i log nello stesso spazio di lavoro Log Analytics. Questa struttura permette una facile comunicazione tra i microservizi che compongono la soluzione complessiva. Inoltre, più container possono essere distribuiti alla stessa app contenitore e, in questo caso, saranno distribuiti e scalati insieme come una singola unità o pod di container. 

Creare una Container App

È possibile utilizzare la CLI di Azure per creare e gestire le Container App.

Creare una nuova Container App usando la CLI di Azure

Scaling orizzontale e scale triggers

Azure Container Apps gestisce l’autoscaling orizzontale attraverso una serie di regole dichiarative di scaling. 

Per impostazione predefinita, Azure Container Apps scala a zero e mette in pausa la fatturazione quando non è in uso. 

Quando una Container App si ridimensiona, nuove istanze della Container App vengono create su richiesta. 

Container Apps supporta molti scale triggers, tra cui HTTP e trigger basati su eventi utilizzando Kubernetes Event Driven Autoscaling (KEDA). KEDA è un ricco autoscaler con molte opzioni di event scaler continuamente fornite dalla community.

Aggiungere una regola di scala

Rendere più facile lo sviluppo di microservizi con Distributed Application Runtime (Dapr)

Dapr è un runtime open-source event-driven che codifica le best practices per la costruzione di applicazioni microservizi portatili in blocchi di costruzione indipendenti dalla piattaforma, utilizzando il linguaggio di sviluppo e il framework di vostra scelta. 

Azure Container Apps offre una versione completamente gestita delle API Dapr. Con Dapr per Azure Container Apps, i sidecar possono essere abilitati per essere eseguiti accanto alle vostre istanze di applicazione e fornire una numerosa serie di funzionalità e guadagni di produttività. 

Integrazione Dapr

Gestione del ciclo di vita delle applicazioni

Azure Container Apps ottimizza la gestione del ciclo di vita delle applicazioni supportando più revisioni per gestire le versioni delle applicazioni, consentendo la divisione del traffico e il bilanciamento tra le versioni delle applicazioni, proteggendo i segreti delle applicazioni, collegando diverse applicazioni e fornendo un monitoraggio integrato tramite Log Analytics.

Gestione delle revisioni