Il deployment serverless è ormai una scelta diffusa in molti ambienti cloud. Ogni cloud provider mette a disposizione diversi servizi che racchiudono la propria offerta serverless, e Microsoft Azure non fa eccezione.
In questo articolo analizziamo alcuni dei principali servizi serverless: Azure Functions, Azure Logic Apps, Azure Event Grid, Azure Event Hubs, Azure Container Apps e Azure Cosmos DB.
Esamineremo inoltre diversi framework architetturali e casi d'uso, come l'elaborazione degli ordini e le soluzioni event-driven.
Vedremo anche le best practice per il deployment di applicazioni serverless su Azure, gli strumenti che lo semplificano e le tecniche di ottimizzazione dei costi per ciascun servizio.
Iniziamo subito.
Introduzione al serverless computing su Azure
Cos'è l'architettura serverless?
Il termine "serverless" non significa che i server scompaiano del tutto: indica piuttosto un modello che permette agli sviluppatori di dedicarsi soprattutto al codice, senza doversi occupare dell'infrastruttura sottostante necessaria a eseguirlo. In questo tipo di applicazioni serverless è il cloud service provider a farsi carico di provisioning automatico, scaling e gestione dell'infrastruttura necessaria per garantire un'esecuzione efficace del codice.
Il termine "Serverless" ha due significati distinti: Backend as a Service (BaaS) e Functions as a Service (FaaS). Entrambi i concetti, tuttavia, si fondano sullo stesso principio: sviluppatori e DevOps engineer non devono occuparsi di deployment, configurazione o gestione dei server.
- BaaS indica i servizi cloud che forniscono funzionalità di backend, come database e storage. Questi servizi espongono API che permettono alle applicazioni sorgente di connettersi direttamente.
- FaaS è un modello in cui una funzione è una porzione di codice che viene eseguita all'interno dell'ambiente di hosting del cloud provider. Il modello astrae il codice e i server sottostanti che eseguono la funzione stessa.
Il diagramma seguente illustra l'architettura Azure di un'applicazione progettata per servire contenuti statici tramite Azure Blob Storage, integrando al contempo un'API attraverso Azure Functions. L'API recupera i dati da Azure Cosmos DB e restituisce i risultati all'applicazione web.
L'esempio mostra entrambi i significati di BaaS e FaaS in Azure: in particolare, Azure Functions rappresenta il FaaS, mentre Azure Blob Storage è un esempio di BaaS.

https://learn.microsoft.com/en-us/azure/architecture/web-apps/serverless/architectures/web-app
Il serverless ha caratteristiche che presentano sia vantaggi sia svantaggi. Tra i vantaggi:
- Costi — Si paga solo per le risorse effettivamente utilizzate, evitando costi per risorse inattive come web o middleware server e riducendo gli sprechi nelle ore di minor traffico. Conoscendo i propri pattern di accesso si può risparmiare ancora di più acquistando capacità riservata.
- Minore manutenzione — Poiché è il cloud provider a gestire la complessità dei server sottostanti, gli sviluppatori possono concentrarsi sulla creazione dell'applicazione e delle sue funzionalità.
- Scalabilità — I componenti serverless scalano automaticamente per gestire pattern di traffico imprevedibili o variabili.
- Supporto— Esiste un'ampia community di riferimento e la maggior parte dei cloud provider offre servizi che si integrano con i componenti serverless o li utilizzano.
Tra gli svantaggi del serverless computing troviamo invece:
- Performance — Possono presentarsi problemi di performance nei diversi livelli di un'architettura serverless disaccoppiata, con la difficoltà di individuare l'API o il componente all'origine del rallentamento. Inoltre, se una funzione non viene utilizzata per un certo periodo, può andare incontro a un cold start: il provider deve allocare le risorse necessarie a eseguire la funzione e questo richiede tempo aggiuntivo, con conseguente rallentamento dell'applicazione.
- Vendor lock-in — In genere i servizi serverless sono offerti dal singolo vendor, e questo rende complessa e costosa la migrazione verso altre piattaforme.
- Controllo limitato — Il cliente può incontrare limiti operativi perché non ha il controllo dell'infrastruttura sottostante. Se l'applicazione dipende da configurazioni ambientali specifiche, potrebbe non funzionare correttamente in modalità serverless. Spesso esistono inoltre vincoli sull'esecuzione del runtime, sul numero massimo di funzioni e sui linguaggi di programmazione supportati.
- Sicurezza — Poiché il provider è responsabile del sistema operativo e dell'infrastruttura sottostante del servizio serverless, la sicurezza dipende in larga parte dalle misure che adotta. Questa situazione può creare potenziali vulnerabilità, dato che ogni funzione può rappresentare un vettore di attacco.
Perché scegliere Azure per il serverless?
Sebbene molti public cloud provider offrano framework di architettura serverless, Azure si distingue per diverse ragioni:
- Supporto a una gamma più ampia di linguaggi: Azure supporta un insieme diversificato di linguaggi di programmazione, permettendo agli sviluppatori di lavorare nel proprio ambiente preferito.
- Debugging in locale: grazie a strumenti come Visual Studio, Azure mette a disposizione funzionalità che aumentano la produttività degli sviluppatori semplificando il debugging in locale.
- Ecosistema completo: Azure consente di realizzare soluzioni serverless complete sia per il front-end sia per il backend, con servizi che si integrano in modo efficace ed efficiente. Permette inoltre di sviluppare app innovative che integrano facilmente codice per servizi di machine learning e AI.
Sono questi vantaggi a rendere Azure una scelta convincente per l'architettura serverless.
I principali servizi serverless di Azure

Azure Functions
Azure Functions
Azure Functions costituisce la logica di backend nelle applicazioni serverless ed è alla base del modello Function as a Service (FaaS). Offre scalabilità e supporto per architetture event-driven. Le funzioni possono inoltre richiamare servizi esterni, come gateway di pagamento di terze parti, per completare le transazioni.
Include un'ampia gamma di trigger e binding event-driven che collegano le funzioni ad altri servizi senza alcuno sforzo, eliminando la necessità di scrivere codice aggiuntivo.
Di seguito una sintesi dello scopo e di alcuni casi d'uso di Azure Functions:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview
Azure Functions supporta numerosi linguaggi, e questo lo rende una risorsa molto valida per il serverless computing. I linguaggi supportati sono i seguenti:

Azure Durable Functions estende le capacità di Azure Functions, consentendo di creare workflow stateful e logiche di coordinamento tramite un pattern orchestrator. Questa estensione facilita lo sviluppo di applicazioni serverless a lunga esecuzione, scalabili e affidabili.
Tecniche di ottimizzazione dei costi:
- Scelga il Consumption Plan per workloads event-driven. Scopra di più.
- Ottimizzi l'allocazione della memoria per ridurre la fatturazione in GB-secondi. Best practice.
- Utilizzi le Durable Functions con criterio per evitare esecuzioni eccessive. Approfondisca le Durable Functions.
- Azure Functions Premium Plan: da utilizzare per workloads ad alte prestazioni e prevedibili. Scopra i costi del Premium Plan.

Azure Logic Apps
Azure Logic Apps
Azure Logic Apps offre una solida soluzione di orchestrazione serverless, pensata per sviluppare e gestire workloads complessi. In quanto piattaforma di integrazione cloud-based di Microsoft (iPaaS), consente di automatizzare in modo fluido i workflow che collegano un'ampia gamma di servizi e applicazioni.
Questo potente strumento semplifica i processi di integrazione, permettendo alle organizzazioni di aumentare l'efficienza operativa, ridurre gli interventi manuali e rispondere più rapidamente all'evoluzione delle esigenze di business.
Sfruttando template e connettori predefiniti, è possibile creare in poco tempo workflow sofisticati che integrano sistemi eterogenei, favorendo l'innovazione e aumentando la produttività complessiva.
Ecco alcune caratteristiche chiave di Azure Logic Apps che lo rendono interessante per l'orchestrazione dei workflow:
- Designer visuale per creare processi o workflow aziendali automatizzati
- Oltre 1.400 connettori predefiniti con trigger e azioni
- Approccio Low-Code/No-Code
- Hosting su Microsoft Azure, che si occupa di hosting, scaling, gestione, monitoraggio e manutenzione delle soluzioni costruite con questi servizi.
Combinare e mescolare i servizi è una pratica molto comune nel serverless computing. Si possono ad esempio richiamare funzioni dai workflow di Logic App e workflow di Logic App dalle funzioni. La tabella seguente elenca alcune differenze chiave tra Azure Functions e Azure Logic Apps.

https://learn.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs
Tecniche di ottimizzazione dei costi:
- Selezioni lo Standard Plan per un pricing prevedibile. Confronti i modelli di pricing.
- Ottimizzi il design dei workflow per ridurre al minimo le azioni superflue. Pattern di design per Logic Apps.
- Implementi il batch processing per ridurre i costi per azione. Strategie di elaborazione.
- Azure Logic Apps Custom Connectors: riduca la frequenza delle chiamate API per abbassare i costi di esecuzione. Best practice.

Azure Event Grid
Azure Event Grid
Azure Event Grid è un servizio pensato per semplificare lo sviluppo di applicazioni event-driven instradando gli eventi da diversi servizi Azure e da fonti personalizzate verso i subscriber, come Azure Functions, Logic Apps, webhook o qualsiasi endpoint HTTP.
Questo servizio, scalabile e completamente gestito, opera secondo il modello publish/subscribe (Pub/Sub) e supporta i protocolli MQTT v3.1.1 e v5.0, oltre a HTTP, agevolando la creazione di pipeline di dati, integrazioni applicative e architetture serverless event-driven. È inoltre in grado di pubblicare e sottoscrivere messaggi per soluzioni Internet of Things (IoT), supportando sia il delivery push sia pull degli eventi.
Event Grid è inoltre conforme alla specifica CloudEvents 1.0, migliorando così l'interoperabilità tra sistemi diversi.
Di seguito uno schema generale di Azure Event Grid.

https://learn.microsoft.com/en-us/azure/event-grid/overview
Le due funzionalità principali di Azure Event Grid sono:
- MQTT messaging, che consente a dispositivi IoT e applicazioni di comunicare tra loro tramite MQTT. Event Grid può sfruttare MQTT per indirizzare i messaggi verso servizi Azure o endpoint personalizzati per analisi, visualizzazioni o archiviazione successive.

MQTT Messaging https://learn.microsoft.com/en-us/azure/event-grid/overview
- Distribuzione dei dati con modalità di delivery push e pull — In qualsiasi punto della pipeline, le applicazioni HTTP possono consumare i messaggi tramite API push o pull.

Event Messaging https://learn.microsoft.com/en-us/azure/event-grid/overview
Tecniche di ottimizzazione dei costi:
- Utilizzi il Basic Tier per un instradamento degli eventi a costi contenuti. Visualizzi i prezzi.
- Filtri gli eventi prima che raggiungano i subscriber per ridurre l'overhead di elaborazione. Guida al filtraggio degli eventi.
- Monitori i tentativi di delivery degli eventi per evitare retry eccessivi. Best practice di affidabilità.

Azure Event Hubs
Azure Event Hubs
Azure Event Hubs è un servizio di ingestione dati in tempo reale completamente gestito, che combina semplicità, sicurezza e scalabilità. Supporta protocolli diffusi come AMQP, HTTPS e Apache Kafka ed è in grado di acquisire milioni di eventi al secondo.
La capacità di acquisire milioni di eventi al secondo e analizzare i dati in tempo reale è particolarmente utile per le applicazioni che richiedono insight immediati e reattività ai cambiamenti dei pattern di dati, e ne fa un componente essenziale nelle moderne architetture cloud.
L'integrazione con altri servizi Azure è fluida e consente di ottenere insight preziosi sui dati, supportando anche il microbatching sullo stesso stream.
Azure Event Hubs permette di realizzare una soluzione di streaming serverless completa, perfettamente integrata con Stream Analytics.
Alcuni dei casi d'uso documentati da Azure includono:
- Elaborare i dati dell'event hub con Azure Stream Analytics per generare insight in tempo reale.
- Analizzare ed esplorare i dati in streaming con Azure Data Explorer.
- Creare applicazioni cloud-native, funzioni o microservizi personalizzati che operano sui dati in streaming di Event Hubs.
- Trasmettere eventi con validazione dello schema utilizzando l'Azure Schema Registry integrato per garantire qualità e compatibilità dei dati in streaming.

Architettura di Event Hub https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about
Tecniche di ottimizzazione dei costi:
- Scelga il Basic Tier per ingestione di telemetria leggera. Dettagli sui prezzi.
- Ottimizzi le Throughput Units (TUs) in base alla domanda. Guida all'efficienza dei costi.
- Implementi l'auto-scaling per evitare l'over-provisioning. Raccomandazioni sullo scaling.

Azure Container Apps
Azure Container Apps
Azure mette a disposizione due servizi chiave per lavorare con i container: Azure Container Apps (ACA) e Azure Kubernetes Service (AKS). Anche se in questa sezione ci concentreremo su Azure Container Apps, è fondamentale comprenderne le differenze e capire quando scegliere l'una o l'altra opzione.
ACA propone una soluzione "app-centric" unica nel suo genere, ideale per gli sviluppatori che vogliono concentrarsi sulla creazione delle applicazioni anziché sulle complessità dell'orchestrazione dei container. La sua architettura event-driven, unita alla possibilità di scalare le applicazioni fino a zero, ne fa una scelta particolarmente conveniente.
Azure Kubernetes Service, al contrario, viene spesso considerato un'opzione "cluster-centric", in grado di offrire maggiore controllo e flessibilità. È pensato per applicazioni complesse che possono richiedere personalizzazioni specifiche, soprattutto per i team che hanno già familiarità con Kubernetes.
Per ulteriore supporto nel semplificare il deployment con AKS, può contattare DoiT senza esitazione.
Azure Container Apps si distingue come piattaforma serverless avanzata, progettata per garantire un funzionamento fluido ed efficiente delle applicazioni containerizzate. Eliminando gli ostacoli legati alla gestione dei server, il servizio permette agli sviluppatori di dedicarsi alla creazione e al deployment delle applicazioni senza preoccuparsi delle sfide infrastrutturali.
La piattaforma semplifica l'orchestrazione e il deployment dei container, permettendo di gestire configurazioni, scalare le operazioni e allocare le risorse con facilità. Grazie a funzionalità come lo scaling automatico in base alla domanda, le capacità di networking integrate e gli strumenti di monitoraggio nativi, Azure Container Apps offre alle aziende la flessibilità necessaria per adattarsi rapidamente all'evoluzione del mercato.
L'utilizzo di questa piattaforma consente inoltre alle organizzazioni di accelerare i cicli di innovazione mantenendo un'elevata efficienza operativa in un ambiente cloud dinamico. In questo modo le aziende possono cogliere rapidamente nuove opportunità, ottimizzare l'utilizzo delle risorse e migliorare le performance applicative complessive.
Alcuni dei casi d'uso più comuni di Azure Container Apps:
- Deployment di endpoint API
- Hosting di job di elaborazione in background
- Elaborazione event-driven
- Esecuzione di microservizi
Un vantaggio nello sviluppo di applicazioni su Azure Container Apps è la possibilità di scalare in base ai seguenti criteri:
- Traffico HTTP
- Elaborazione event-driven
- Carico CPU o memoria
- Qualsiasi scaler supportato da KEDA

Esempi di Azure Container Apps: https://learn.microsoft.com/en-us/azure/container-apps/overview
Tecniche di ottimizzazione dei costi:
- Utilizzi il Consumption Plan per un pricing pay-as-you-go. Scopra di più.
- Configuri lo scale-to-zero per i workloads inattivi. Strategie di scaling.
- Ottimizzi l'allocazione delle repliche per bilanciare costi e performance. Gestione delle risorse di Container Apps.

Azure Cosmos DB
Azure Cosmos DB
Azure Cosmos DB è un servizio di database avanzato e completamente gestito, che supporta diversi modelli di dati: NoSQL, relazionali e vettoriali. Questa piattaforma flessibile è progettata per offrire tempi di risposta eccezionali, in genere nell'ordine dei millisecondi a singola cifra, garantendo un'esperienza ad alte prestazioni. La sua architettura consente una scalabilità semplice mantenendo performance affidabili, indipendentemente dalle dimensioni del sistema o dal livello di domanda.
Azure Cosmos DB garantisce inoltre una solida business continuity grazie a un Service Level Agreement (SLA) che assicura uptime e include misure di sicurezza enterprise complete per proteggere i dati sensibili e rispettare i requisiti normativi.
Azure Cosmos DB è un servizio completamente gestito che automatizza diverse attività, tra cui gestione, aggiornamenti e patching. Offre opzioni serverless economicamente vantaggiose per la gestione della capacità, con scaling automatico che si adatta alle esigenze dell'applicazione, mantenendo la capacità sempre allineata alla domanda.
Grazie ad alta disponibilità garantita, throughput elevato, latenza minima e consistenza configurabile, Azure Cosmos DB è ideale per una vasta gamma di applicazioni: AI, retail e marketing, IoT e telematica, gaming e personalizzazione per piattaforme social.
Le applicazioni elencate di seguito mostrano un'ottima compatibilità con Azure Cosmos DB e dimostrano la capacità di integrarsi efficacemente sfruttando le funzionalità avanzate di questa potente piattaforma di database, con miglioramenti tangibili in termini di performance e scalabilità in scenari diversi.
- Schema flessibile per lo sviluppo iterativo. Le applicazioni cercano spesso di adottare pratiche DevOps moderne e flessibili per accelerare i tempi di rilascio delle funzionalità.
- Workloads sensibili alla latenza. Si tratta di workloads come la gestione dello stato dei dispositivi IoT e la telemetria, che richiedono una gestione efficiente di grandi volumi di dati.
- Workloads altamente elastici. Un esempio è una piattaforma di prenotazione per concerti, che deve adattarsi a una domanda fortemente variabile.
- Workloads ad alto throughput. Anche in questo caso parliamo di scenari come la gestione dello stato dei dispositivi IoT e la telemetria, che richiedono una gestione efficiente di grandi volumi di dati.
- Workloads mission-critical ad alta disponibilità. Le applicazioni web rivolte ai clienti sono un esempio chiave: devono garantire disponibilità e affidabilità per servire efficacemente gli utenti.
Le seguenti applicazioni non sono invece considerate adatte all'uso con Azure Cosmos DB:
- Workloads analitici (OLAP), che includono analisi interattive, in streaming e batch e rispondono alle esigenze di Data Scientist e Data Analyst. Microsoft Fabric può essere un'alternativa interessante.
- Applicazioni altamente relazionali, come le soluzioni CRM white-label. In questi casi è preferibile valutare Azure SQL, Azure Database for MySQL o Azure Database for PostgreSQL.
Tecniche di ottimizzazione dei costi:
- Utilizzi la modalità Serverless per workloads poco frequenti. Dettagli sui prezzi.
- Ottimizzi le strategie di indicizzazione per ridurre al minimo il consumo di Resource Unit (RU). Best practice di indicizzazione.
- Implementi la replica multi-region in modo strategico per ridurre i costi di trasferimento. Gestione dei costi di replica.
- Se Azure Cosmos DB risponde alle sue esigenze, può ottenere sconti significativi fino al 63% sul pricing tramite l'opzione Reserved Capacity.
Sono inoltre disponibili le seguenti opzioni gratuite:
- Il free tier a vita di Azure Cosmos DB offre 1.000 Request Unit RU/s di throughput e 25 GB di storage senza alcun costo.
- Azure AI Advantage offre 40.000 RU/s di throughput per novanta giorni (per un valore fino a 6.000 dollari) ai clienti Azure AI o GitHub CoPilot.
- Provi Azure Cosmos DB gratuitamente per trenta giorni senza nemmeno creare un account Azure: nessun impegno alla scadenza del periodo di prova.
Conclusione
In sintesi, il modello di serverless computing di Azure offre una soluzione solida per gli sviluppatori che vogliono semplificare lo sviluppo applicativo e alleggerire le complessità della gestione dell'infrastruttura. Sfruttando servizi come Azure Functions, Azure Logic Apps e Azure Cosmos DB, le organizzazioni possono creare applicazioni scalabili ed event-driven, capaci di adattarsi rapidamente all'evoluzione delle esigenze degli utenti.
Sebbene Azure offra vantaggi come risparmio sui costi, manutenzione ridotta, scalabilità e una solida community di supporto, è importante riconoscere anche le potenziali criticità: problemi di performance, vendor lock-in, controllo limitato e rischi di sicurezza.
In definitiva, l'ampia gamma di soluzioni serverless di Azure permette agli sviluppatori di concentrarsi sull'innovazione e sullo sviluppo di nuove funzionalità anziché sulla gestione dell'infrastruttura, e questo rende Azure una scelta interessante per le aziende che vogliono sfruttare il cloud computing. Con la crescente adozione della trasformazione digitale, Azure serverless propone un approccio orientato al futuro per costruire applicazioni resilienti ed efficienti, in grado di adattarsi facilmente alle esigenze di domani.
Sblocchi tutto il potenziale della sua piattaforma Azure: prenoti oggi una demo e una call con il nostro team dedicato per scoprire come DoiT Cloud Intelligence può migliorare la sua esperienza e generare risultati concreti.