Cosa sono le serverless functions
Cosa sono le serverless functions spiegate semplice: come funziona il serverless, vantaggi e svantaggi, casi d'uso reali, cold start e differenza con i server tradizionali.
"Serverless" è uno dei termini più fraintesi dello sviluppo moderno, a partire dal nome stesso, che suggerisce l'assenza di server quando i server ci sono eccome. In questo articolo ti spiego cosa sono davvero le serverless functions, come funzionano, quando convengono e quali sono i loro limiti, in modo chiaro e con esempi concreti.
Cosa sono le serverless functions in parole semplici
Le serverless functions sono piccole porzioni di codice che vengono eseguite su richiesta, senza che tu debba gestire o mantenere il server su cui girano. Scrivi la funzione, la carichi su una piattaforma cloud, e questa si occupa di eseguirla quando serve, allocando automaticamente le risorse necessarie.
Il termine "serverless" non significa "senza server", ma "senza server da gestire": i server esistono, ma sono completamente nascosti e amministrati dal provider. Tu pensi solo al codice.
Come funziona il serverless
Il modello è semplice ed elegante:
- Scrivi una funzione che fa una cosa specifica (es. inviare un'email, elaborare un pagamento).
- La carichi su una piattaforma serverless.
- La funzione "dorme" finché non viene richiamata da un evento (una richiesta HTTP, un caricamento file, un timer).
- Quando l'evento arriva, la piattaforma avvia la funzione, la esegue e poi la spegne.
- Paghi solo per il tempo effettivo di esecuzione, non per un server sempre acceso.
È questo l'aspetto rivoluzionario: niente server da tenere attivo 24/7, niente costi fissi per risorse inutilizzate.
Serverless vs server tradizionale
| Aspetto | Server tradizionale | Serverless |
|---|---|---|
| Gestione | Tu gestisci il server | Il provider gestisce tutto |
| Costo | Fisso, anche se inutilizzato | Solo per esecuzione effettiva |
| Scalabilità | Manuale o configurata | Automatica |
| Avvio | Sempre attivo | On-demand |
| Adatto a | Carichi costanti e prevedibili | Carichi variabili o sporadici |
Le serverless functions vivono spesso ai bordi della rete, vicino agli utenti, e si integrano bene con il concetto di edge computing.
I vantaggi
- Zero gestione dell'infrastruttura: niente server da configurare, aggiornare o monitorare.
- Scalabilità automatica: se arrivano mille richieste insieme, la piattaforma scala da sola.
- Costi proporzionali all'uso: se nessuno usa la funzione, non paghi nulla.
- Velocità di sviluppo: ti concentri sulla logica, non sull'infrastruttura.
Gli svantaggi (i limiti reali)
Il serverless non è la soluzione a tutto. I principali limiti:
- Cold start: se una funzione è inattiva da un po', il primo avvio può essere più lento (deve "svegliarsi"). Per applicazioni molto sensibili alla latenza può essere un problema.
- Limiti di durata: le funzioni hanno tempi massimi di esecuzione, quindi non sono adatte a processi molto lunghi.
- Difficoltà di debug: testare e debuggare sistemi distribuiti di funzioni può essere più complesso.
- Vendor lock-in: ci si lega alle specifiche di una piattaforma.
Quando usare le serverless functions
I casi d'uso ideali:
- API leggere e endpoint che rispondono a richieste sporadiche.
- Elaborazioni scatenate da eventi: un file caricato, un pagamento, un webhook. Vedi cos'è un webhook.
- Task automatizzati e job pianificati.
- Microservizi che fanno una cosa sola e bene.
- Backend di applicazioni con traffico variabile.
Molti framework moderni come Next.js integrano nativamente le serverless functions, rendendo semplice aggiungere logica backend a un sito senza gestire un server dedicato.
In sintesi
Le serverless functions sono porzioni di codice eseguite su richiesta, senza che tu debba gestire alcun server: il provider si occupa di tutto e paghi solo per l'esecuzione effettiva. Offrono scalabilità automatica e costi proporzionali all'uso, ma hanno limiti come il cold start e la durata massima. Sono ideali per carichi variabili, API leggere ed elaborazioni guidate da eventi.
Per il contesto più ampio, vedi cos'è il cloud computing e introduzione all'edge computing.