Aumentare la propria infrastruttura è una caratteristica tipica di ogni azienda in crescita. Anche nel contesto IT è possibile, mediante la scalabilità orizzontale. Ecco cos’è e cosa permette di fare


Per comprendere cos’è la scalabilità orizzontale è bene partire dal concetto di scalabilità. È la proprietà di un sistema di aggiungere funzionalità senza modificare le caratteristiche essenziali. Con esso si intende anche la capacità di mantenere i livelli di prestazioni quando si aggiungono processori aggiuntivi” non solo continuando a funzionare bene, nella situazione ridimensionata, ma di trarne il massimo vantaggio.

Per fare un esempio di scalabilità in ambito aziendale pensiamo a Google: negli anni ha aggiunto clienti, in termini sia di clienti commerciali paganti che utenti gratuiti supportati dalla pubblicità, pur essendo in grado di mantenere i costi al minimo. Nel 2017 aveva sette prodotti con oltre un miliardo di utenti attivi ciascuno, pur impiegando solo circa 88mila persone.

Tornando all’IT, un server facilmente scalabile può essere aggiornato rapidamente, aumentando la sua allocazione di risorse nei periodi di traffico elevato.

La scalabilità è una delle caratteristiche più peculiari del cloud computing ed è uno dei componenti più importanti della gestione dei costi del cloud.

Le aziende possono pensare di scalare orizzontalmente o verticalmente. Scegliere la soluzione giusta può migliorare drasticamente le prestazioni o l’efficacia dei costi.

Cosa si intende per scalabilità orizzontale

Lo scaling orizzontale e lo scaling verticale implicano entrambi l’aggiunta di risorse all’infrastruttura di calcolo. Nel primo caso significa scalare aggiungendo più macchine al proprio pool di risorse (descritto anche come scaling out), mentre quello verticale si riferisce allo scaling aggiungendo più potenza (per esempio CPU, RAM) a una macchina esistente (scaling up).

Con lo scaling orizzontale invece di avere un singolo server che gestisce l’intera operazione, si ha un insieme di più nodi che formano una rete distribuita.

L’obiettivo principale qui è che il carico possa essere distribuito equamente tra i nodi. Spesso, questa configurazione include software di virtualizzazione, clustering e bilanciamento del carico.

Lo scaling orizzontale nel cloud significa aggregare istanze aggiuntive invece di passare a un’istanza di dimensioni maggiori. Fornire istanze aggiuntive significa anche avere una maggiore ridondanza nel raro caso di un’interruzione. È molto più facile da realizzare senza tempi morti.

Una tecnologia che fa della scalabilità orizzontale (e della flessibilità) il suo punto forte è il database NoSQL, ovvero database non relazionali. Un esempio in questo è Apache Cassandra, database per grandi quantità di dati, utilizzato da Facebook e Twitter, tra gli altri.

Scalabilità orizzontale e verticale: le differenze

Come abbiamo visto, per la scalabilità di un sistema ci sono due metodi profondamente diversi: “verticale” o “orizzontale”. Il primo implica l’aumento dei parametri di sistema della velocità di elaborazione, dello storage e della memoria per ottenere maggiori prestazioni. Questo approccio è limitato dalle capacità fisiche, richiedendo elementi sempre più sofisticati (hardware, software, ecc.) che aggiungono tempo e spese all’implementazione. Il metodo alternativo è utilizzare lo scaling orizzontale e fare uso di un cluster di risorse individuali integrate per agire come un unico sistema.

Lo scaling orizzontale è molto più facile da realizzare senza incorrere in tempi morti. Inoltre, lo scaling out in un ambiente cloud ha il vantaggio di una disponibilità istantanea e continua di risorse, nessun limite alla capacità hardware, costi gestibili (legati all’uso effettivo), facilità di dimensionamento e ridimensionamento in base alle proprie esigenze.

Quando è la soluzione giusta

La scalabilità orizzontale è un’opzione affidabile per chi esegue operazioni di alto livello, ed è la migliore per quanto riguarda la redditività a lungo termine. Ecco perché sceglierla:

  • Resilienza – Data la sua natura, poiché non c’è un singolo punto debole, gli ambienti cloud distribuiti o i pool di risorse sono resistenti al malfunzionamento di una singola istanza.

Inoltre, il rischio di perdita di dati è ridotto al minimo, poiché è distribuito su tutti i nodi all’interno dell’ambiente.

  • Scalabilità – Dal momento che si sta aggiungendo più potenza a un pool esistente impostando su più macchine, i tempi di inattività sono quasi inesistenti quando si scala orizzontalmente. Non c’è praticamente alcun limite nel numero di istanze che possono essere aggiunte. Pertanto, questa opzione offre una crescita teorica illimitata, a seconda dell’hardware della propria infrastruttura.
  • Aumento delle prestazioni – Per gestire il traffico di rete, lo scaling orizzontale permette di avere più endpoint per le connessioni, dato che il carico sarà delegato tra più macchine. Il carico è distribuito su tutti i nodi, fornendo una migliore esperienza complessiva, aumentando le prestazioni della rete e la sicurezza, ed evitando un uso pesante dei singoli componenti.