Vai al contenuto principale
Data Engineering
Big Data

Che cos'è il serverless computing?

Scopri il serverless computing, un modello cloud in cui i provider gestiscono l'infrastruttura e permettono agli sviluppatori di distribuire applicazioni rapidamente.
Adejumo Ridwan Suleiman's photo
Adejumo Ridwan Suleiman
Aggiornato · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Crea il tuo account gratuito

Pratica and corso your progress.

Continua Con Google
Continuando, accetti i nostri Termini di utilizzo, la nostra Informativa sulla privacy e che i tuoi dati siano conservati negli Stati Uniti.

Gestire un server fisico o virtuale non è uno scherzo, sia per gli alti costi di manutenzione sia per la necessità di personale qualificato. Il serverless computing risolve questi problemi offrendo un modo economico per consentire agli sviluppatori di creare ed eseguire applicazioni nel cloud. 

In questo articolo vedremo cos'è il serverless computing, le sue applicazioni e i suoi vantaggi per sviluppatori e aziende. È un tema importante perché il mercato del serverless computing ha superato i 9 milioni di dollari nel 2022 e si prevede che crescerà di un altro 25% nei prossimi dieci anni. Iniziamo subito.

Definizione e panoramica

Immagina che luce e acqua in casa ti vengano addebitate in base all'effettivo consumo, invece che con un canone mensile fisso stimato. Ecco come funziona il serverless computing: è il modo in cui i provider cloud mettono a disposizione l'infrastruttura per permetterti di creare ed eseguire applicazioni in base all'uso, senza preoccuparti della manutenzione dei server.

A differenza del cloud computing tradizionale, dove si configurano server fisici o virtualizzati, storage e rete, nel serverless computing è il provider cloud a gestire l'infrastruttura e ad allocare automaticamente le risorse man mano che l'applicazione scala. In altre parole, il serverless computing astrae il server dagli sviluppatori, consentendo loro di concentrarsi sulle applicazioni invece che sull'infrastruttura su cui sono ospitate. 

Immagina che la tua applicazione abbia in media 100-200 utenti al giorno. Se il giorno dopo gli utenti aumentano all'improvviso a 1.000.000, il server scalerà automaticamente le risorse per soddisfare quella domanda. Questo non è fattibile con il cloud tradizionale: i server subirebbero interruzioni per l'aumento di traffico e, se lo storage è insufficiente, è necessario acquistare capacità aggiuntiva, con tempi non trascurabili.

Categoria Serverless Computing Computing tradizionale
Scalabilità Dinamica Fissa
Fatturazione In base all'uso Costi continui, indipendentemente dall'uso, inclusi costi di manutenzione e operativi
Gestione dell'infrastruttura Astratta per le aziende Richiede gestione attiva

Caratteristiche chiave

Prima di vedere le funzionalità che distinguono il serverless dagli altri modelli cloud tradizionali, rivediamo alcune terminologie chiave del serverless computing.

  • Funzione: Porzione di codice progettata per svolgere un compito specifico, come il caricamento di un file, l'elaborazione di richieste HTTP o altro. Ogni funzione è indipendente e progettata per reagire a un evento.
  • Invocazione: La chiamata di una funzione per eseguire una specifica azione, in pratica l'esecuzione del codice della funzione in risposta a un evento.
  • Durata: Il tempo impiegato da una funzione per eseguire, dall'invocazione alla risposta.
  • Cold start: Il tempo necessario alla piattaforma serverless per allocare le risorse quando una funzione viene invocata, prima di iniziare l'esecuzione.
  • Limite di concorrenza: Il numero massimo di istanze che una funzione può eseguire contemporaneamente in risposta a eventi e richieste.
  • Timeout: La durata massima consentita per una funzione prima che la piattaforma serverless la termini.

Esecuzione event-driven

L'esecuzione event-driven è nota anche come Function as a Service (FaaS), in cui l'applicazione serverless è suddivisa in funzioni indipendenti attivate da eventi specifici provenienti da sorgenti come richieste HTTP, modifiche a un database, code di messaggi o caricamenti di file.

Supponiamo di avere un'applicazione serverless che elabora automaticamente le immagini quando vengono caricate in un bucket Amazon S3. Quando un utente carica un'immagine, si attiva una funzione che la elabora e la salva in un altro bucket Amazon S3. In questo modo la funzione viene eseguita solo quando serve, rendendo il sistema efficiente e conveniente. 

Image demonstrating event-driven execution, using file upload as an example.

Esecuzione event-driven, con l'esempio del caricamento di file. Immagine dell'autore

Auto scaling

L'auto scaling è l'allocazione di risorse di calcolo in base alla domanda o all'aumento dei carichi di lavoro. È una caratteristica chiave del serverless che lo rende efficiente e adattabile, evitando sprechi di risorse quando il carico è basso e downtime quando la domanda è elevata.

Per esempio, la tua applicazione subisce un picco di traffico. Invece di avere interruzioni per via dell'afflusso, la piattaforma fornisce automaticamente ulteriori istanze per gestire il carico aumentato. Allo stesso modo, quando il traffico è basso la piattaforma riduce le risorse per minimizzare i costi. Questo garantisce efficienza senza interventi manuali, rendendo l'applicazione conveniente e reattiva in vari scenari. 

Fatturazione a consumo

Le piattaforme serverless addebitano gli utenti in base alle risorse effettivamente utilizzate, non a quelle allocate. A differenza dei modelli cloud tradizionali in cui potresti non sfruttare tutte le risorse assegnate, nel serverless paghi solo per il tempo di calcolo utilizzato. I costi sono misurati, il che significa che paghi per invocazione o per durata di esecuzione della funzione, garantendo un addebito preciso delle risorse utilizzate. 

Se, ad esempio, la tua applicazione elabora 100 immagini in un mese, invece di pagare un server attivo 24/7, paghi solo il tempo di calcolo impiegato per elaborare quelle 100 immagini. 

Astrazione della gestione dei server

È un'altra caratteristica chiave del serverless: sviluppatori e aziende non devono occuparsi del provisioning, dello scaling e della manutenzione dei server. Possono concentrarsi sui problemi di business principali e lasciare la manutenzione ai provider cloud. 

Gestione della concorrenza

Le piattaforme serverless possono eseguire più funzioni in parallelo. Questo le rende rapide ed efficienti rispetto agli approcci tradizionali. Se gli utenti vogliono caricare immagini e il provider serverless impone un limite di concorrenza predefinito di 100, qualsiasi richiesta oltre quel limite viene messa in coda ed eseguita al successivo giro di funzioni. 

Vantaggi del serverless computing

Efficienza dei costi

A differenza del cloud tradizionale, che richiede server dedicati e comporta costi anche quando il server è inattivo, le piattaforme serverless utilizzano un modello basato sugli eventi per addebitare gli sviluppatori. Un'analogia utile è il taxi rispetto all'auto di proprietà. Con il taxi non ti occupi di spese come parcheggio, carburante e così via: paghi solo la distanza percorsa. Nel serverless, proprio come con il taxi, paghi solo per le risorse di calcolo che usi. Con l'approccio tradizionale (avere un'auto), sei responsabile di ogni risorsa computazionale, anche quando il sistema è inattivo. 

Image showing cost efficiency comparison between traditional servers and serverless computing.

Confronto dell'efficienza dei costi tra tipi di server. Fonte: Cloudflare

Minore complessità operativa

Nel serverless si risparmia molto tempo perché gli sviluppatori non devono dedicarsi all'installazione e alla manutenzione dei server; possono concentrarsi sulla creazione dell'applicazione. Poiché le applicazioni sono costruite come funzioni cloud indipendenti, si può aggiornare una funzione senza interrompere le altre o l'intera applicazione.

Scalabilità migliorata

È uno dei vantaggi più importanti delle piattaforme serverless e il motivo per cui sono popolari tra le realtà più piccole e le startup. Le piattaforme serverless facilitano lo scaling automatico quando la domanda aumenta. Per funzioni con fluttuazioni nelle richieste, le piattaforme serverless scalano per soddisfarle aumentando o diminuendo l'allocazione di risorse, ottimizzando così il computo. 

Time-to-market più rapido

Con applicazioni serverless puoi rilasciare velocemente e ottenere subito feedback dagli utenti. Questo è fondamentale per le startup perché riduce tempi e personale necessari per sviluppare.

Affidabilità

A differenza delle applicazioni ospitate su server dedicati, le app serverless possono essere eseguite ovunque. Questo migliora le prestazioni e riduce la latenza rispetto al cloud tradizionale.

Architettura serverless e come funziona

L'architettura serverless è un modo di creare applicazioni senza installare e gestire l'infrastruttura che le ospita. Gli sviluppatori possono costruire applicazioni serverless con due modelli: Backend as a Service (BaaS) o Function as a Service (FaaS).

  • Backend as a Service (BaaS): Questo modello serverless è usato di solito per i backend di applicazioni web e mobile. Gli sviluppatori non devono scrivere funzionalità backend come database, autenticazione utente, storage e altro. Lo sviluppo è più rapido perché ci si concentra soprattutto sul frontend. Esempi di provider BaaS: Firebase, SupaBase e AWS Amplify.
  • Function as a Service (FaaS): Nel FaaS gli sviluppatori scrivono il codice che la piattaforma esegue senza doversi occupare della gestione delle risorse di calcolo e dello scaling. Consente l'esecuzione di funzioni in risposta a eventi attivati. Esempi di provider FaaS: AWS Lambda, Azure Cloud Functions e Google Cloud Functions.

Image showing FAAS and BAAS serverless cloud architectures

Architetture cloud serverless FaaS e BaaS. Fonte: Journal of Cloud Computing

L'obiettivo principale dell'architettura serverless è astrarre la gestione dei server dagli sviluppatori. Ecco come operano le piattaforme serverless nella loro infrastruttura.

  • Creazione delle funzioni: Le applicazioni costruite con architettura serverless hanno il codice suddiviso in sottoparti, in cui ciascuna è una funzione indipendente e mirata a un compito specifico. 
  • Sviluppo delle funzioni: Queste funzioni vengono pacchettizzate e distribuite su una piattaforma serverless come AWS Lambda, Azure Cloud Functions o Google Cloud Functions.
  • Esecuzione event-driven: Le funzioni vengono invocate in risposta a un evento o trigger particolare. Questi trigger possono essere modifiche al database, richieste HTTP o altro. 
  • Auto scaling: Le piattaforme serverless gestiscono l'uso delle risorse in funzione degli eventi quando il carico di lavoro aumenta o diminuisce. Per esempio, il server alloca più risorse quando una funzione riceve molto traffico.
  • Container transitori: L'attivazione di un evento crea container che permettono alla funzione eseguita di accedere alle risorse necessarie. Al termine del task, questi container vengono distrutti.
  • Fatturazione: La fatturazione si basa sul tempo di esecuzione e sulle risorse di calcolo utilizzate. 
  • Statelessness: Le funzioni serverless, quando eseguite, non mantengono informazioni. Qualsiasi informazione necessaria durante un'invocazione viene salvata in un database o esternamente. 
  • Log e monitoraggio: Le piattaforme serverless offrono strumenti di logging e monitoraggio per tracciare prestazioni dell'applicazione e problemi nelle funzioni.

Ci si potrebbe chiedere: l'architettura serverless non è la stessa dei container, visto che entrambe astraggono il server dagli sviluppatori? In parte sì, ma a differenza delle funzioni serverless, che astraggono completamente il server durante lo sviluppo e il rilascio, con i container quando un'applicazione ha molto traffico bisogna scalarli con strumenti come Kubernetes. Questo va contro l'obiettivo del FaaS, dove tutte le azioni legate al server sono gestite automaticamente dalla piattaforma serverless.

Con un'architettura a container, puoi avere istanze che restano attive a lungo, con relativi costi; nelle funzioni serverless, invece, paghi per il tempo in cui la funzione è in esecuzione. Per applicazioni più piccole, usare un'architettura serverless facilita la scomposizione in parti che la piattaforma può eseguire come funzioni indipendenti.

Piattaforme di serverless computing

Prima dell'arrivo di Google App Engine nel 2008, Zimki offriva la prima piattaforma "pay as you go" per l'esecuzione di codice, poi chiusa. Nella sua fase iniziale, Google App Engine supportava solo Python e prevedeva la fatturazione a consumo per le applicazioni, tra cui SnapChat. Intorno al 2010, un'altra piattaforma chiamata PiCloud offriva supporto FaaS per applicazioni Python.

Nel 2014 AWS ha reso popolare il modello serverless rilasciando strumenti come AWS Serverless Application Model (AWS SAM) e Amazon CloudWatch. Google ha poi pubblicato la sua seconda offerta serverless, Google Cloud Functions, insieme alle Azure Functions nel 2016. Da allora sono nate varie piattaforme, come Function Compute di Alibaba Cloud e IBM Cloud Functions di IBM Cloud.

Per eliminare la necessità di un database virtuale o fisico sono stati sviluppati anche database serverless. AWS offre Amazon Aurora, una versione serverless basata su MySQL e PostgreSQL. Azure offre Azure Data Lake e Google fornisce Firestore.

Piattaforme cloud serverless. Fonte: Network Interview

Applicazioni pratiche e casi d'uso

Siti web e API

Il serverless viene usato per creare applicazioni web e API REST. La parte interessante è che le applicazioni costruite su infrastruttura serverless effettuano auto scaling in base alla domanda degli utenti, migliorando l'esperienza d'uso.

Elaborazione di contenuti multimediali

L'architettura serverless semplifica l'elaborazione di media. Gli utenti possono caricare contenuti da dispositivi e con dimensioni diverse, e la piattaforma esegue una singola funzione che soddisfa le esigenze di tutti senza ridurre le prestazioni. Per esempio, un utente può caricare un'immagine in un bucket S3 che attiva una funzione AWS Lambda per aggiungere una filigrana o creare una miniatura.

Chatbot

Gli sviluppatori possono implementare un chatbot per rispondere alle domande dei clienti usando un'architettura serverless e pagare solo le risorse utilizzate dal chatbot. Ad esempio, Slack utilizza il serverless per gestire le richieste variabili dei bot ed evitare banda inutilizzata a causa delle fluttuazioni quotidiane delle esigenze dei clienti.

Webhook

Puoi usare una piattaforma serverless per interagire con fornitori SaaS tramite un endpoint HTTP di webhook, che riceve notifiche ed esegue attività. Questo garantisce manutenzione minima, costi ridotti e scalabilità automatica per il webhook creato.

IoT

Coca-Cola utilizza architetture serverless sulle sue macchine distributrici Freestyle per consentire ai clienti di ordinare, pagare e ricevere notifiche di pagamento per le bevande. Coca-Cola ha dichiarato che spendeva circa 13.000 $/anno per far funzionare i distributori automatici, cifra scesa a 4.500 $/anno dopo l'adozione del serverless. 

Elaborazione dati

Major League Baseball Advanced Media ha sviluppato il prodotto Statcast con architettura serverless per fornire metriche sportive accurate e in tempo reale. Usa il serverless per elaborare i dati e offrire insight sulle partite di baseball. 

Applicazioni event-driven

L'architettura serverless si usa per applicazioni guidate dagli eventi, tali che, quando un evento o uno stato cambia, viene attivato un servizio. Si possono usare piattaforme serverless per monitorare le modifiche a un database e confrontarle con standard di qualità.

Serverless edge computing

A causa delle grandi distanze percorse dai dati, le applicazioni impiegano tempo a elaborare richieste e fornire contenuti da server centralizzati, introducendo latenza e colli di bottiglia.

Il serverless edge computing risolve il problema distribuendo le risorse di calcolo in più sedi per ridurre il carico sul server centrale. Consiste nel collocare risorse che eseguono funzioni serverless più vicino agli utenti finali (edge). Questo consente all'applicazione serverless di operare su più dispositivi, diminuire la congestione e ridurre la latenza.

Nel serverless edge computing, l'infrastruttura è dedicata a ciascun dispositivo, permettendogli di eseguire compiti complessi senza inviare i dati alla sede centrale per l'elaborazione. Ecco alcuni casi d'uso che migliorano l'esperienza utente grazie alle funzioni edge serverless:

  • Esperienza personalizzata: Con le funzioni edge, gli utenti possono personalizzare i contenuti in base a preferenze, posizione e tipo di dispositivo. 
  • Streaming video e gaming: Elaborare le richieste vicino agli utenti riduce latenza e buffering durante lo streaming o il gioco online.
  • Sicurezza e autenticazione: Distribuendo il carico in varie sedi edge, il traffico malevolo viene controllato e filtrato prima di raggiungere l'infrastruttura centrale.
  • Dispositivi IoT: Il serverless edge computing facilita le prestazioni dei dispositivi IoT assicurando che l'infrastruttura che li esegue sia vicina agli utenti. 

Sfide e considerazioni

Nonostante i vantaggi, il serverless computing presenta alcune criticità.

  • Vendor lock-in: Molti provider cloud offrono servizi che si integrano bene con le applicazioni serverless. Sebbene sia possibile usare servizi di un altro vendor nella tua app serverless, i servizi dello stesso provider sono più semplici da integrare. 
  • Minor controllo: Un altro problema è la mancanza di controllo sul server. Se si verifica un problema, come un outage o un guasto hardware, non puoi intervenire direttamente e devi attendere il provider.
  • Cold start: Il cold start si verifica quando una funzione inattiva da un po' viene invocata e impiega alcuni secondi a partire. Questo può introdurre latenza, influenzando prestazioni ed esperienza utente.
  • Sicurezza: Affidando i dati a terzi e condividendo il server con altri utenti, rischi di esporre applicazione e dati se i server non sono configurati correttamente.
  • Complessità di debug: È difficile per gli sviluppatori replicare in locale l'ambiente di produzione per via delle caratteristiche delle app serverless, rendendo complicati i test locali. Anche i test di integrazione tra frontend e backend sono più difficili in un ambiente serverless. 

Conclusione

Per le aziende interessate a sviluppare applicazioni leggere, il serverless computing è la strada giusta. Per applicazioni composte da molti servizi con interazioni complesse, è consigliata un'infrastruttura ibrida con macchine virtuali per i processi più grandi; in questo caso, i container serverless vengono usati solo per attività brevi. Si possono anche considerare le funzioni serverless edge, perché minimizzano la latenza elaborando i dati localmente senza sovraccaricare il server centrale.

Tieni presente che sono in corso vari progressi per ampliare le capacità del serverless. Ad esempio, si può adottare un approccio multi-cloud per creare applicazioni serverless, utilizzando servizi di più provider. Sono stati fatti anche passi avanti per azzerare i cold start delle funzioni serverless, come implementato in Cloudflare Workers. 

Grazie per l'attenzione. Per approfondire il serverless computing e sviluppare le tue competenze nel campo, dai un'occhiata alle seguenti risorse DataCamp:

Per una lettura più breve, dai un'occhiata al nostro post sul blog con idee di progetto per tutti i livelli.


Adejumo Ridwan Suleiman's photo
Author
Adejumo Ridwan Suleiman
LinkedIn

Docente di data science esperto e biostatistico con competenze in Python, R e machine learning.

Domande frequenti

Che cos'è il serverless computing?

Il serverless computing è un modello di cloud computing in cui i provider gestiscono l'infrastruttura, allocando automaticamente le risorse man mano che le applicazioni scalano. Gli sviluppatori possono concentrarsi sulla creazione ed esecuzione delle applicazioni senza doversi occupare della manutenzione dei server.

In cosa differisce il serverless computing dal cloud computing tradizionale?

A differenza del cloud tradizionale, il serverless offre scalabilità dinamica, fatturazione a consumo e astrae la gestione dell'infrastruttura dalle aziende.

Quali sono i principali vantaggi del serverless computing?

I principali vantaggi includono efficienza dei costi, minore complessità operativa, migliore scalabilità, time-to-market più rapido e maggiore affidabilità.

Quali sono alcuni casi d'uso comuni del serverless computing?

Il serverless computing viene usato per creare siti web e API, elaborazione di media, chatbot, webhook, applicazioni IoT, elaborazione dati e applicazioni guidate dagli eventi.

Quali sfide considerare nell'adozione del serverless computing?

Alcune sfide includono il vendor lock-in, minore controllo sull'infrastruttura sottostante, cold start, potenziali problemi di sicurezza dovuti alla condivisione delle risorse e complessità di debug per la natura distribuita delle applicazioni serverless.

Argomenti
Data Engineering
Big Data

Impara con DataCamp

Corso

Comprendere il Cloud Computing

2 ore
260.2K
Un'introduzione semplice al cloud computing, che spiega i concetti chiave, i termini e gli strumenti.
Vedi i dettagliInizia Il Corso

Crea il tuo account gratuito

Pratica and corso your progress.

Continua Con Google
Continuando, accetti i nostri Termini di utilizzo, la nostra Informativa sulla privacy e che i tuoi dati siano conservati negli Stati Uniti.
Mostra altro
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra altro