È uscito il Corso SQL Completo
Torna al blog

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.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

4 min di lettura

"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:

  1. Scrivi una funzione che fa una cosa specifica (es. inviare un'email, elaborare un pagamento).
  2. La carichi su una piattaforma serverless.
  3. La funzione "dorme" finché non viene richiamata da un evento (una richiesta HTTP, un caricamento file, un timer).
  4. Quando l'evento arriva, la piattaforma avvia la funzione, la esegue e poi la spegne.
  5. 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

AspettoServer tradizionaleServerless
GestioneTu gestisci il serverIl provider gestisce tutto
CostoFisso, anche se inutilizzatoSolo per esecuzione effettiva
ScalabilitàManuale o configurataAutomatica
AvvioSempre attivoOn-demand
Adatto aCarichi costanti e prevedibiliCarichi 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.