Scalabilità orizzontale o verticale: qual è la soluzione migliore per le API?

La scalabilità orizzontale aggiunge più computer a un sistema, distribuendo il carico di lavoro, mentre la scalabilità verticale aggiorna la CPU, la RAM e lo storage di un singolo computer. La scelta tra i due tipi dipende dall'architettura di sistema e dalle esigenze delle applicazioni.

La richiesta di un'API (Application Programming Interface), di solito, non è statica, ma aumenta e diminuisce nel corso del tempo. In alcuni casi, come i picchi di traffico durante le festività natalizie, un'API potrebbe dover gestire un volume di richieste significativamente più elevato rispetto ad altri momenti. Per far fronte a tale aumento di traffico, è necessario scalare l'utilizzo delle API. Gli amministratori di sistema hanno due opzioni per scalare un'API: tramite la scalabilità orizzontale, che implica l'aggiunta di più istanze API a un cluster, o tramite la scalabilità verticale, che implica l'aggiunta di capacità di elaborazione del computer che supporta l'API. In questo articolo vengono esaminate le differenze tra le due opzioni e qual è la soluzione migliore per la scalabilità delle API.

Scalabilità orizzontale

La scalabilità orizzontale è il processo di implementazione di ulteriori macchine virtuali (VM) in modo da disporre di una maggiore capacità delle API per gestire un carico maggiore (la riduzione della capacità è nota come "scalabilità verticale"). Poiché è necessaria una maggiore capacità, gli amministratori di sistema possono aggiungere più VM al cluster. Tuttavia, è richiesto un software specializzato per la gestione delle risorse che consente di gestire il carico delle chiamate API e instradarle all'istanza VM corretta nel cluster per mantenere il giusto equilibrio.

Scalabilità verticale

La scalabilità verticale è il processo di aggiunta di risorse a un singolo nodo. Si differenzia dalla scalabilità orizzontale, in cui, invece, vengono aggiunti nodi. La scalabilità verticale, detta anche scalabilità verso l'alto o verso il basso, implica l'aggiunta di risorse come la capacità della CPU (Central Processing Unit), la memoria o lo storage a un server. Nel caso delle API, la scalabilità verticale, di solito, implica l'aggiunta di capacità di elaborazione alla VM che ospita l'API.

Ad esempio, se un'API è ospitata su una VM a cui è stato assegnato un core della CPU e 512 megabyte di RAM (Random Access Memory), la scalabilità di tale API potrebbe significare il doppio del numero di core e della RAM. L'API avrebbe quindi due core del processore della CPU dedicata e 1.024 megabyte di RAM. Con questa nuova configurazione, l'API dovrebbe essere in grado di gestire all'incirca il doppio del carico, anche se i vincoli sulla larghezza di banda di rete, sulla velocità di storage e su altri fattori possono ridurre l'impatto della scalabilità verticale. La scalabilità verticale presenta anche un problema nella gestione delle risorse, che, tuttavia, può essere, in genere, risolto con un software specializzato.

Perché l'assenza di stato delle API è importante per la scalabilità

Le API sono, in genere, progettate come stateless, il che significa che non memorizzano i dati delle richieste né conservano le informazioni tra una sessione e l'altra. Questa natura stateless è fondamentale quando si considerano i metodi di scalabilità. Le API stateless non richiedono la replica dei dati tra le istanze, il che rende la scalabilità orizzontale più efficiente e più semplice da implementare. Gli amministratori di sistema possono aggiungere o rimuovere le VM in base alle necessità senza influire sulle operazioni delle API, poiché il client API non si basa su specifiche istanze del server per funzionare.

La natura stateful, tuttavia, non è sempre inadeguata, anzi, potrebbe essere essenziale per il funzionamento desiderato dell'app, ma, per un'app stateful è molto più complicato eseguire la scalabilità orizzontale perché, in tal caso, è necessario copiare i dati archiviati dalla versione originale dell'app a nuove istanze.

Un'app o un'API stateless, al contrario, non memorizza i dati delle richieste, non conserva i dati della sessione in memoria, ma, ogni volta che inizia una sessione, è come se l'app incontrasse il client per la prima volta. La sessione poi termina senza lasciare i suoi dati in memoria.

Un'app stateless può eseguire la scalabilità orizzontale perché non dipende dalla VM che sta rispondendo alle chiamate API. Il client API può chiamare un numero infinito di VM che ospitano l'API e gli amministratori di sistema possono aggiungere o rimuovere tutte le VM che desiderano senza influire sul funzionamento dell'API.

Scalabilità orizzontale: la scelta giusta per le API

Poiché le API sono stateless, la scalabilità orizzontale si rivela il modo giusto per scalarle. L'aggiunta di più VM per aumentare la capacità è un ottimo metodo per le API stateless. Gli amministratori possono creare cluster VM scalabili man mano che la domanda delle API cresce.

Inoltre, sebbene sia possibile scalare le API in modo verticale, è preferibile adottare la scalabilità orizzontale perché i problemi di allocazione delle risorse nella scalabilità verticale la rendono relativamente più difficile da eseguire. Al contrario, la scalabilità automatica orizzontale funziona facilmente con le API. Poiché gli strumenti di gestione dei sistemi rilevano un picco di traffico delle API, possono aggiungere automaticamente le VM necessarie per ospitare più istanze delle API in un cluster. Questo scenario si presenta un po' più complesso in una situazione di scalabilità verticale perché non adeguata per la scalabilità automatica.

La domanda di API cambia inevitabilmente nel corso del tempo, quindi è necessario aumentare o diminuire la loro capacità. La scalabilità orizzontale e verticale sono entrambe opzioni disponibili per le API, tuttavia, la natura stateless delle API, insieme alla relativa facilità di eseguire la scalabilità automatica orizzontale, favorisce la scalabilità orizzontale come approccio appropriato per aumentare il numero di API.

Architettura di microservizi e sistemi distribuiti

In un sistema distribuito, in cui le API fanno parte di un'architettura di microservizi, la scalabilità orizzontale è particolarmente vantaggiosa. Ogni microservizio può essere scalato in modo indipendente in base al carico di lavoro e ai requisiti specifici. Questo approccio modulare consente un utilizzo più efficiente delle risorse e una migliore tolleranza agli errori poiché gli errori in un microservizio non influiscono sugli altri.

Inoltre, in un'architettura di microservizi, la scalabilità orizzontale si allinea ai principi dei sistemi distribuiti, in cui diversi servizi vengono distribuiti su più nodi. Ciò garantisce che il sistema sia in grado di gestire carichi di lavoro variabili e mantenere performance ottimali anche durante i periodi di picco.

Minimizzazione dei problemi di downtime con le strategie di scalabilità

Il downtime è un problema critico durante la scalabilità delle API perché qualsiasi interruzione del servizio può causare perdite di ricavi e insoddisfazione dei clienti. La scalabilità orizzontale riduce al minimo il downtime consentendo agli amministratori di sistema di aggiungere o rimuovere server senza influire sulla disponibilità delle API. Al contrario, la scalabilità verticale potrebbe richiedere il riavvio o la disattivazione temporanea del server, causando così un'interruzione dei servizi.

I provider di API possono sfruttare la scalabilità orizzontale per garantire un funzionamento continuo, in particolare durante la manutenzione pianificata o i picchi di traffico imprevisti. Distribuendo il carico su più server, la scalabilità orizzontale garantisce che l'API rimanga reattiva e disponibile, anche se i singoli server devono essere disconnessi per eseguire aggiornamenti o riparazioni.

Domande frequenti

La scalabilità orizzontale ha un impatto positivo sulle performance di un'API. Questo approccio implica l'aggiunta di più server all'infrastruttura e la distribuzione del carico di lavoro tra loro. Di conseguenza, il sistema può gestire più richieste simultanee, migliorando i tempi di risposta e le performance complessive. 

Oltre ai vantaggi in termini di performance, la scalabilità orizzontale contribuisce alla ridondanza e all'affidabilità del sistema. Se un server si guasta, lo strumento di bilanciamento del carico devia il traffico ai server rimanenti, che possono assumere il controllo senza problemi, garantendo un funzionamento continuo. Ciò si allinea con le best practice per la sicurezza delle API e migliora la resilienza del sistema contro potenziali errori.

La scalabilità verticale implica l'aggiornamento delle risorse di un singolo server per migliorarne le performance. Ciò può migliorare la velocità di elaborazione delle richieste API perché un server più potente può gestire un carico più elevato. Tuttavia, è importante notare che la scalabilità verticale può causare una diminuzione del ROI. Esistono limiti alla quantità di aggiornamento possibile di un singolo computer. Oltre un certo punto, i vantaggi in termini di performance potrebbero non essere proporzionali all'investimento effettuato.

Al momento di scegliere la scalabilità orizzontale o verticale, è fondamentale valutare i potenziali vantaggi rispetto ai rischi di entrambi gli approcci. È necessario considerare alcuni aspetti come le implicazioni per la sicurezza delle API REST e assicurarsi che il sistema rimanga resiliente agli errori.

È importante comprendere la differenza tra la scalabilità orizzontale e verticale per stabilire quando utilizzare ciascuno di questi approcci.

Utilizzare la scalabilità verticale quando: 

  • L'applicazione web è nelle sue fasi iniziali o prevede un carico leggero, che un singolo server potente può gestire in modo efficace. Ciò vale soprattutto quando la domanda di chiamate API è bassa.
  • L'applicazione o l'API non supporta bene il computing distribuito. Nei casi in cui l'architettura o la progettazione non si allineano ai principi della scalabilità orizzontale, la scalabilità verticale può risultare una valida alternativa. 

Utilizzare la scalabilità orizzontale quando: 

  • L'applicazione registra un aumento della domanda, che è, probabilmente, destinato a raggiungere un picco. La scalabilità orizzontale consente all'infrastruttura di adattarsi ai carichi di lavoro in continua evoluzione aggiungendo più server in base alle specifiche esigenze. 
  • È necessario garantire un elevato livello di disponibilità e ridondanza. La scalabilità orizzontale fornisce ridondanza, rendendo il sistema più resiliente agli errori e garantendo un funzionamento continuo anche in caso di interruzione di uno o più server.

La scalabilità orizzontale rispetto a quella verticale offre vantaggi in termini di costi che dipendono da fattori quali i requisiti specifici dell'applicazione, la scalabilità dell'implementazione e la domanda complessiva. La scalabilità verticale è, in genere, più conveniente perché è possibile acquistare solo uno o due nuovi componenti quando necessario. Tuttavia, la soluzione diventa meno conveniente man mano che ci si avvicina ai limiti della capacità del server.

Perché i clienti scelgono Akamai

Akamai è l'azienda di cybersecurity e cloud computing che abilita e protegge il business online. Le nostre soluzioni di sicurezza leader del settore, l'innovativa intelligence sulle minacce e il team presente su scala globale forniscono una difesa approfondita in grado di proteggere applicazioni e dati critici ovunque. Le soluzioni complete di cloud computing offerte da Akamai assicurano performance elevate e notevoli risparmi grazie alla piattaforma più distribuita al mondo. Le maggiori aziende internazionali si affidano ad Akamai per ottenere la protezione, la scalabilità e le competenze leader del settore di cui hanno bisogno per far crescere le loro attività senza rischi.

Post del blog correlati

Presentazione di Akamai DNS Posture Management
La nuova soluzione Akamai DNS Posture Management risolve i problemi legati all'infrastruttura frammentata del DNS: visibilità, osservabilità e fattibilità.
Approfondimenti sulla conformità: come bloccare il movimento laterale e ottimizzare il processo di autorizzazione
Bloccate tempestivamente il movimento laterale. Scoprite come soddisfare le normative sulla conformità della sicurezza con una sicurezza multilivello, la microsegmentazione e una protezione intelligente delle API.
Bloccato e preso in ostaggio: la battaglia di un comune contro il crimine informatico
Scoprite come disporre di un piano apposito e prepararsi in anticipo sono azioni che possono ridurre la gravità di un attacco ransomware o, addirittura, impedirlo.