Vai al contenuto principale

Load Balancing: come i sistemi moderni restano disponibili sotto pressione

Il load balancing mantiene le app moderne veloci, disponibili e scalabili distribuendo il lavoro tra i server. Questo articolo spiega come funziona, perché è importante e quali compromessi comporta.
Aggiornato 29 set 2026  · 14 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Il load balancing è un concetto che si presenta in più contesti di quanto potresti pensare.

Prendi un sabato mattina in un supermercato pieno con una sola cassa aperta. Quindici persone in fila, tutti irritati, e il povero cassiere che sembra riconsiderare ogni scelta di vita che lo ha portato fin lì. La tensione sta davvero salendo quando all’improvviso arrivano 3 membri dello staff, aprono qualche cassa in più e iniziano a indirizzare le persone verso le code più corte. Tutto accelera, la pressione diminuisce e le file ricominciano a scorrere normalmente. Questo, in sostanza, è il load balancing.

In questo articolo ti guiderò attraverso cos’è il load balancing, perché è importante, come funziona sotto il cofano e come impedisce al mondo digitale di andare in pezzi quando le cose si fanno intense. Non ti serve alcuna conoscenza specifica per seguire: non preoccuparti se non sei dentro reti o architetture cloud! Questa guida manterrà tutto chiaro, pratico e (si spera) anche un po’ divertente.

Cos’è il Load Balancing e perché è importante?

In ambito tech, il load balancing è il modo in cui distribuiamo il traffico o i task in arrivo tra più server o risorse. Invece di lasciare che una macchina affoghi sotto il peso di tutto, un load balancer distribuisce il lavoro così che tutto resti veloce, stabile e scalabile. È ovunque nelle infrastrutture moderne: le piattaforme cloud lo usano per gestire milioni di utenti, le pipeline di AI si affidano a esso per distribuire i carichi di dati tra i nodi e i siti ecommerce ci contano per sopravvivere al Black Friday.

Immagina, solo per un secondo, che la tua app non abbia un load balancer. Un server riceve tutte le richieste, tutto il traffico, tutta la pressione. Magari regge per un po’, finché (inevitabilmente) non regge più. Rallenta, gli utenti si frustrano, magari va persino in crash. Nel frattempo, gli altri server se ne stanno con le mani in mano, a fare nulla.

Senza load balancing, in pratica ti ritrovi con:

  • Single point of failure: se un server va giù, va giù tutto.
  • Scarse prestazioni sotto pressione: i server sovraccarichi rispondono più lentamente (se rispondono).
  • Scalabilità limitata: aggiungere altri server non aiuta se non vengono utilizzati.
  • Utenti frustrati: che, diciamolo, è il vero problema.

Ora, aggiungi un load balancer e lo scenario cambia del tutto. Si mette davanti ai server di backend, tiene d’occhio come sta andando ciascuno e distribuisce le richieste in arrivo a quello più in salute o meno occupato. Alcuni monitorano persino in tempo reale tempi di risposta o risorse del server.

Ecco cosa ottieni:

  • Alta disponibilità: se un server fallisce, il traffico viene reindirizzato automaticamente.
  • Prestazioni migliori: nessuno è sovraccarico, quindi tutto gira più veloce.
  • Scalabilità: puoi aggiungere o rimuovere server secondo necessità e il load balancer si adatta.
  • Tolleranza ai guasti: i failure non si portano giù tutto il sistema.
  • Efficienza dei costi: sfrutti meglio le risorse.
  • Sicurezza migliorata: alcuni load balancer aiutano a bloccare traffico malevolo e a nascondere i servizi interni.

Se stai ancora pensando all’esempio del supermercato, immagina quella fila di 15 persone suddivisa in modo intelligente tra cinque casse. Nessuno va in panico, nessuno urla e tu arrivi più in fretta al reparto pizze surgelate. Questo è l’obiettivo.

Come funziona il Load Balancing

Abbiamo parlato del perché il load balancing è utile. Ora vediamo come funziona davvero sotto il cofano.

A livello alto, un load balancer si posiziona tra i client (persone o sistemi che fanno richieste) e i server di backend (quelli che fanno il lavoro). Il suo compito è ricevere ogni richiesta in arrivo e decidere dove inviarla.

Ecco il flusso di base:

  1. Un utente prova ad accedere alla tua app o al tuo servizio.
  2. La richiesta raggiunge prima il load balancer.
  3. Il load balancer verifica quali server di backend sono disponibili, in salute e non troppo occupati.
  4. Inoltra la richiesta al server scelto.
  5. Il server gestisce la richiesta e invia la risposta, direttamente o tramite il load balancer.

In teoria è piuttosto lineare, ma dietro le quinte succede parecchio, e ci sono alcuni concetti chiave che fanno sì che tutto funzioni:

  • Health check: il load balancer verifica regolarmente ogni server di backend per assicurarsi che sia vivo e vegeto. Se uno fallisce un health check, viene temporaneamente rimosso dal giro finché non si riprende.
  • Failover: se un server va in crash a richiesta in corso (succede), il load balancer può reindirizzare il traffico a uno sano senza disturbare l’utente finale.
  • Persistenza di sessione (a.k.a. “stickiness”): a volte vuoi che un utente continui a parlare con lo stesso server, per esempio durante una sessione di login. Le sessioni sticky lo rendono possibile, anche se comportano dei compromessi (ne parleremo più avanti).
  • Terminazione SSL: i load balancer possono gestire la decrittazione del traffico HTTPS così che i server di backend non debbano farlo. Questo scarica parte del costo computazionale e mantiene tutto veloce.

Load balancing vs. load balancer

Nota veloce: “load balancing” è il concetto (distribuire il traffico), mentre un “load balancer” è lo strumento o servizio che lo rende possibile. Spesso sentirai usare i due termini in modo intercambiabile, ma aiuta conoscere la distinzione.

Algoritmi di Load Balancing

Anche se a volte i load balancer scelgono un server a caso, esistono strategie vere e proprie, chiamate algoritmi di load balancing, che determinano come il traffico in arrivo viene distribuito tra le risorse di backend.

Alcuni sono piuttosto semplici e prevedibili, mentre altri si adattano in tempo reale in base alle prestazioni del server, al numero di connessioni o alla velocità di risposta. Suddividiamoli in due grandi categorie.

Algoritmi statici

Questi non si adattano a ciò che sta succedendo nel sistema; seguono solo una regola predefinita. Questo li rende prevedibili e facili da implementare, ma non sempre ideali sotto la pressione del mondo reale.

  • Round Robin: il load balancer invia le richieste ai server in ordine rotante: A, B, C, A, B, C… Semplice, ma non tiene conto di quanto sia occupato ciascun server.
  • Weighted Round Robin: come il Round Robin, ma alcuni server ricevono più richieste di altri in base a pesi assegnati: utile se alcune macchine sono più potenti di altre.
  • IP Hash: usa l’indirizzo IP del client per decidere a quale server instradare. Garantisce che lo stesso utente continui a colpire lo stesso backend, il che è utile per una stickiness di sessione di base.
  • Selezione casuale lato client: come suggerisce il nome, i client scelgono un server a caso (spesso da un elenco fornito dal DNS). Questo rimuove l’overhead del load balancer ma può portare a una distribuzione disomogenea.

static load balancing algorithms

Algoritmi statici. Immagine dell’Autore

Algoritmi dinamici

Questi algoritmi si adattano in base a ciò che sta realmente accadendo nel sistema. Sono più intelligenti, ma richiedono più monitoraggio e consapevolezza del sistema.

  • Least Connections: invia la prossima richiesta al server con il minor numero di connessioni attive. Ottimo per sistemi con sessioni di lunga durata o picchi di traffico imprevedibili.
  • Weighted Least Connections: stessa idea, ma tenendo conto dei pesi dei server. I server più grandi possono gestire più connessioni, quindi ricevono più traffico.
  • Least Response Time: instrada le richieste al server con il tempo di risposta più rapido. Ideale per configurazioni ottimizzate per le prestazioni.
  • Resource-based Load Balancing: tiene conto di fattori come CPU, memoria o utilizzo I/O. Se le risorse di un server sono sotto stress, riceve meno traffico. Questo approccio è potente, ma più complesso da implementare e monitorare.

dynamic load balancing algorithms

Algoritmi dinamici. Immagine dell’Autore

Gli algoritmi statici sono perfetti quando il tuo traffico è prevedibile e i server sono omogenei. Quelli dinamici brillano quando le cose sono un po’ più caotiche.

Bene, ora parliamo dei diversi tipi di load balancer: hardware, software, cloud-native e altro ancora.

Tipi di Load Balancer

Non tutti i load balancer sono uguali. Alcuni vivono nell’hardware, alcuni girano come software, altri sono inclusi nei servizi cloud e alcuni sono specializzati in casi d’uso molto specifici. Quale usare dipende dalla tua architettura, dalla tua scala e, a volte, semplicemente dal budget.

In base al deployment

Hardware load balancer

Sono appliance fisiche presenti nel tuo data center, costruite ad hoc per bilanciare il traffico. Sono potenti e veloci, ma costose e più difficili da scalare on demand. Pensa a grandi enterprise e ambienti on-prem.

Software load balancer

Girano come applicazioni su server generici. Strumenti come HAProxy, nginx (di F5) o Envoy rientrano in questa categoria. Sono più economici, flessibili e facili da integrare nella maggior parte degli ambienti.

Cloud-native load balancer

Se usi AWS, Azure o GCP, probabilmente stai già usando un load balancer cloud-native, come AWS ELB, Azure Load Balancer o GCP Load Balancing. Sono gestiti per te, scalano automaticamente e si integrano bene con gli altri servizi.

Se vuoi familiarizzare con come AWS gestisce questo (e molte altre componenti di infrastruttura), dai un’occhiata al nostro corso AWS Cloud Technology and Services Concepts.

Forse hai sentito parlare di elastic load balancer. Sono progettati per scalare su e giù con il tuo carico di lavoro. Spesso fanno parte di sistemi cloud-native, ma il termine “elastic” significa solo che possono adattarsi dinamicamente al traffico, ideale per carichi a picchi o imprevedibili.

In base al layer OSI

Il modello OSI è un framework concettuale usato per descrivere come i dati si muovono in rete. Ha sette layer, dal cavo fisico fino all’app nel tuo browser. Per il load balancing, i layer più rilevanti sono il 4 e il 7.

Load balancer di Layer 4 (Transport layer)

Prendono decisioni di routing basate su indirizzi IP, porte e traffico TCP/UDP. Sono veloci ed efficienti, ma non sanno nulla del contenuto inviato.

Load balancer di Layer 7 (Application layer)

Guardano al contenuto effettivo della richiesta, come header HTTP, cookie o URL. Questo consente cose più avanzate come il routing basato sul percorso URL, l’A/B testing o le preferenze di lingua. Per esempio, se vuoi che le richieste /api/ vadano a un cluster e /login a un altro, ti serve il Layer 7.

Tipi specializzati

Global server load balancer (GSLB)

Usati per distribuire il traffico tra data center geograficamente distribuiti. Utili per setup multi-regione, a bassa latenza o per il disaster recovery.

Load balancer interni

Operano interamente all’interno di reti private, usati per bilanciare il traffico tra servizi dentro un cloud o un cluster.

Diameter load balancer

Specializzati per i sistemi di telecomunicazione che usano il protocollo Diameter, spesso presenti nelle reti mobili per l’instradamento, l’autenticazione e le richieste di billing.

Load balancer HTTP(S)

Ottimizzati specificamente per gestire traffico HTTP e HTTPS. Spesso includono terminazione SSL, routing basato su URL e protezione DDoS integrata.

Ogni tipo di load balancer risolve un problema diverso. Alcuni sono focalizzati sulla scala, altri sulla latenza, la sicurezza o la facilità d’uso. Sapere quale scegliere può fare una grande differenza su quanto sia fluida (o dolorosa) la gestione della tua infrastruttura.

Architetture e topologie dei Load Balancer

Finora abbiamo parlato di cosa fanno i load balancer e dei tipi che potresti usare, ma come sono costruiti sotto il cofano? L’architettura di un sistema di load balancing influisce su tutto: da quanto bene scala a quanto elegantemente gestisce i guasti.

Modello leader-follower

Questo è il setup classico: un nodo “leader” prende le decisioni e distribuisce il lavoro a più nodi “worker”. È semplice e facile da comprendere, ma il leader può diventare un collo di bottiglia o un single point of failure se non è adeguatamente ridondato.

Load balancing distribuito

Invece di un cervello centrale, ogni load balancer è consapevole dei propri pari e si divide il lavoro. Questo migliora la tolleranza ai guasti e la scalabilità, ma rende il coordinamento un po’ più complicato. Lo vedi spesso in sistemi su larga scala con routing anycast o distribuzione basata su DNS.

Negli ambienti containerizzati, soprattutto con Kubernetes, il load balancing diventa ancora più interessante. Services, ingress controller e sidecar collaborano per instradare il traffico in modo intelligente all’interno dei cluster. Se stai iniziando a esplorare questo mondo, il nostro corso Introduction to Kubernetes è un ottimo modo pratico per imparare le basi.

Work stealing

In questo setup, i worker inattivi possono “rubare” task da quelli più occupati. È comunemente usato in ambienti ad alta computazione come code di task o pipeline di elaborazione dati, ma non molto per il traffico web. È comunque un pattern utile per bilanciare carichi imprevedibili.

Gerarchie multilivello

Alcuni sistemi stratificano i propri load balancer, ad esempio uno a livello globale (tra regioni), un altro a livello di data center e un terzo all’interno di uno specifico cluster di servizi. Questo aiuta a gestire la complessità e mantiene ogni layer focalizzato su un ambito specifico.

Load balancing architectures

Architetture di load balancing.

Ciascuna di queste architetture ha dei compromessi. I modelli centralizzati sono facili da capire ma rischiano di diventare colli di bottiglia; i modelli distribuiti scalano meglio ma aggiungono complessità; le topologie a livelli offrono modularità ma possono introdurre latenza se non progettate con attenzione. Come al solito, non esiste una risposta valida per tutti. Dipende dalle dimensioni del tuo sistema, dai pattern di traffico e dalla tua tolleranza al rischio.

Sfide e limitazioni

Il load balancing è potente, ma non è magia. Sebbene possa rendere i sistemi più affidabili, scalabili ed efficienti, introduce anche nuovi livelli di complessità e potenziali punti di failure. Parliamo di alcuni dei compromessi con cui si confrontano gli ingegneri, sia tecnici sia operativi.

Sfide generali nel load balancing

Il load balancer stesso può diventare un collo di bottiglia

Paradossalmente, lo strumento pensato per distribuire il traffico può diventare un single point of failure se non è architettato correttamente, soprattutto nei modelli centralizzati o basati su leader. Per questo molti sistemi usano più load balancer, meccanismi di failover o persino bilanciamento a livello DNS per distribuire il rischio.

Aggiunge overhead

Per quanto veloce, un load balancer aggiunge comunque un hop tra client e backend. Questo può introdurre latenza, specialmente in architetture multilivello o con routing a livello applicativo (Layer 7).

La terminazione SSL è utile ma costosa

Gestire il traffico HTTPS al livello del load balancer (cioè la terminazione SSL) può scaricare lavoro CPU dai server di backend, ma significa anche che il load balancer fa di più e diventa responsabile di impostazioni di sicurezza e certificati sensibili.

Persistenza di sessione vs statelessness

Le sessioni sticky sono utili per mantenere gli utenti legati allo stesso backend (ad esempio durante il login), ma complicano la scalabilità e rendono più difficile avere servizi completamente stateless. Spesso gli ingegneri devono scegliere tra esperienza utente ed eleganza architetturale.

La configurazione diventa complessa, in fretta

Più è intelligente la tua logica di routing, più spazio c’è per bug, instradamenti errati o problemi prestazionali sottili e difficili da tracciare. Ti sentirai brillante quando la imposti, molto meno quando vieni svegliato alle 2 di notte per fare debug di health check ballerini.

Sfide pratiche per ingegneri e amministratori

Sintonizzare gli algoritmi non è one-size-fits-all

Ogni applicazione si comporta in modo diverso sotto carico. Scegliere tra algoritmi statici o dinamici e regolare soglie di connessione o intervalli degli health check può richiedere molti tentativi, errori ed esperienza.

Il troubleshooting è più difficile con un layer in mezzo

Quando qualcosa va storto, il load balancer aggiunge un altro posto in cui cercare. Route mal configurate, richieste perse, layer di caching o risultati incoerenti degli health check possono confondere le acque.

La sicurezza aggiunge complessità extra

Se il tuo load balancer gestisce l’SSL, devi assicurarti che sia configurato correttamente, aggiornato e monitorato. Qualsiasi passo falso può creare vulnerabilità o rompere la comunicazione sicura.

L’osservabilità diventa più importante

Questo è in parte collegato al punto sulla complessità aggiunta. Hai bisogno di log, metriche e tracing solidi per capire come scorrono le richieste nel sistema. Senza una buona osservabilità, un load balancer che si comporta male può essere difficile da individuare e ancora più difficile da correggere.

Chiariamo: nessuno di questi è un motivo per non usare il load balancing. Sono solo la realtà di costruire sistemi resilienti: ogni layer che aggiungi può aiutare, ma introduce anche nuove sfide da gestire.

Tendenze future nel Load Balancing

Come tutto nella tecnologia, il load balancing sta evolvendo. Man mano che i sistemi diventano più complessi, distribuiti e dinamici, gli approcci tradizionali vengono messi alla prova e si sperimentano nuove strategie.

Load balancing guidato da AI e ML

Questo è abbastanza ovvio, vista la tendenza globale. Le piattaforme moderne stanno iniziando a integrare il machine learning per prevedere i pattern di traffico e prendere decisioni di routing più intelligenti. Invece di reagire solo al carico attuale, questi sistemi possono anticipare i picchi (come un lancio di prodotto o una breaking news) e pre-regolare il flusso di traffico. È ancora presto, ma il potenziale per un’infrastruttura auto-ottimizzante è reale.

Se vuoi esplorare questo lato, il nostro tutorial su Machine Learning, Pipelines, Deployment and MLOps è un ottimo punto di partenza.

Load balancing application-aware

I load balancer tradizionali non sanno davvero cosa fa la tua app; guardano solo il traffico. Il load balancing application-aware va più a fondo. Può prendere decisioni basate sull’identità dell’utente, il tipo di dispositivo o l’importanza business della richiesta. Per esempio, potrebbe dare priorità agli utenti loggati durante un picco o instradare il traffico sensibile verso cluster con sicurezza più elevata.

Ambienti multi-cloud e ibridi

Man mano che le aziende distribuiscono i carichi tra più provider cloud (o mescolano on-prem e cloud), i load balancer si adattano. Devono essere più consapevoli della collocazione, supportare il failover cross-cloud e gestire il routing tra ambienti molto diversi. Aspettati di vedere più direttori di traffico globali e orchestrazione a livello DNS in questi setup.

Edge e load balancing localizzato

Con l’ascesa dell’edge computing, il load balancing si sposta più vicino all’utente. Invece di instradare tutto attraverso un cloud centrale, le richieste vengono servite da nodi edge, abbattendo la latenza. Il load balancing all’edge deve essere leggero, intelligente e iper-locale.

Sistemi autonomi e basati su agent

Alcune piattaforme sperimentali stanno esplorando il load balancing basato su agent, in cui i singoli servizi contribuiscono a decidere come dovrebbe fluire il traffico in base a ciò che vedono localmente. È più distribuito e può rispondere rapidamente a variazioni su piccola scala, ma introduce anche sfide di coordinamento.

Mi sembra abbastanza chiaro che tutte queste tendenze puntano verso una cosa: un load balancing più dinamico, intelligente e consapevole del contesto. I giorni del semplice round robin sono ancora vivi e vegeti (perché buttare via qualcosa che funziona?), ma iniziano a condividere il palco con sistemi che imparano, si adattano e prendono decisioni in tempo reale basate su molto più che il carico del server.

Conclusione

In tutto l’articolo abbiamo visto cos’è il load balancing, perché conta e come funziona sotto il cofano. Abbiamo parlato di algoritmi, architetture e applicazioni reali e, si spera, reso il tutto un po’ meno misterioso. Spero che questo articolo ti abbia dato un quadro più chiaro di come tutto si incastri!

Come passo successivo, se ti interessa approfondire, iscriviti ai nostri corsi dedicati. Ti consiglio il nostro corso Introduction to Kubernetes e il corso AWS Cloud Technology and Services Concepts.


Marie Fayard's photo
Author
Marie Fayard

Sono una tech lead orientata al prodotto, specializzata nel far crescere startup nelle fasi iniziali, dal primo prototipo al product-market fit e oltre. Sono instancabilmente curiosa di come le persone usano la tecnologia e adoro lavorare a stretto contatto con founder e team cross‑funzionali per dare vita a idee ambiziose. Quando non costruisco prodotti, inseguo l’ispirazione in angoli nuovi del mondo o scarico le tensioni in una sala yoga.

Domande frequenti sul Load Balancing

Si può usare il load balancing con le architetture serverless?

In un certo senso. Sebbene i load balancer tradizionali di solito non intervengano nelle funzioni serverless come AWS Lambda, è il provider cloud stesso a gestire scalabilità e instradamento dietro le quinte. Quindi sì, il load balancing avviene comunque, solo che è astratto rispetto a te.

Qual è la differenza tra load balancing e autoscaling?

Il load balancing distribuisce il traffico tra le risorse disponibili, l’autoscaling aggiunge o rimuove quelle risorse in base alla domanda. Lavorano bene insieme: lo scaling assicura che ci siano abbastanza server e il load balancing fa sì che quei server vengano usati in modo efficiente.

In che modo il load balancing influisce sulle prestazioni o sull’architettura dei database?

Anche i database possono trarre vantaggio dal load balancing, soprattutto per carichi di lettura elevati. Strumenti come read replica, layer di proxy e connection pooling aiutano a distribuire le query, ma le operazioni di scrittura richiedono comunque strategie di consistenza, che possono essere complicate.

Argomenti
Cloud

Impara con DataCamp

Corso

Introduzione a dbt

4 ore
34K
Questo corso ti spiega cos'è il DBT per modellare i dati, trasformarli, testarli e creare la documentazione.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
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 AltroMostra Altro