Per poter spiegare i vantaggi della scalabilità di un servizio, occorre prendere in prestito un concetto che più che ai servizi in cloud è associato agli ambienti di produzione industriale. Si tratta del concetto di "sistema a capacità finita", ovvero del bilanciamento del fabbisogno di risorse con la disponibilità reale. Se nel vostro magazzino avete scorte per fabbricare 100 macchinari, la vostra "capacità finita" è 100 macchinari, anche se in produzione ne avete solo 50; sapete quindi di poter prendere ordini per altri 50 macchinari prima di dover riallestire il magazzino scorte. Se però vedete che in produzione avete sempre più di 100 macchinari, allora dovrete allargare il vostro magazzino scorte, ovvero ampliare la capacità finita del vostro potenziale di produzione.
Passare da un sistema a capacità finita ad un sistema scalabile consente di aumentare o ridurre le risorse in base alla necessità di produzione. Per chiarire ulteriormente possiamo fare l'esempio dell'automobile, che ha una capacità finita di trasporto passeggeri. Se abbiamo più di 4 o 5 passeggeri, possiamo noleggiare un pullman. Se non basta ancora serve un aereo e così via in base alle esigenze. Il punto è che una volta scelto il sistema di trasporto, non è possibile aumentare o diminuire il numero di passeggeri: di più non ce ne stanno, diminuendoli verrebbe meno la convenienza economica. Provate solo a pensare quanto può costare far volare un Boeing con solo 4 persone.
La scalabilità in un server: come e quando conviene
La scalabilità verticale (o vertical scaling) aumenta la capacità produttiva del server aggiungendo risorse come RAM, CPU, Core o spazio disco. I tempi di inattività necessari al passaggio da una macchina più piccola a una più grande sono inevitabili. Lo scaling up del server di produzione ne aumenta la capacità facendo un upgrade delle singole risorse. Questo tiene conto dei carichi di lavoro previsti facendo avanzare la capacità computazionale "a scatti". Un po' come quando da piccoli ci venivano comprati i vestiti più grandi in modo che durassero il più possibile. Ovviamente scalando verticalmente un servizio in cloud è possibile programmare le attività e non avere blocchi di produzione, che invece ci sono con le macchine on premise (quelle che custodiamo in azienda nel nostro datacenter, per intenderci).
Quando conviene scalare verticalmente? Quando i tempi sono brevissimi e non si vuole ricorrere a interventi troppo specifici sugli applicativi in produzione. Non devono sussistere vincoli di tipo strutturale che costringano a una scalabilità differente (generalmente quella orizzontale). La scalabilità orizzontale (o horizontal scaling) aumenta la capacità collegando più entità hardware o software in modo che funzionino come una singola unità logica. Raggruppando i server, quello originale viene scalato orizzontalmente, consentendo tra l'altro in maniera abbastanza semplice di poter lavorare in alta affidabilità (HA) aggiungendo server al cluster. La scalabilità orizzontale si fa "su misura", efficientando l'utilizzo di risorse alla necessità di produzione. Se il sistema di archiviazione è distribuito su vari datacenter, ancora meglio: si ottiene una struttura resiliente senza il cosiddetto "singolo punto di errore" (single point of failure o SPoF).
Bisogna prestare attenzione ai costi di licenza per i server aggiuntivi e ai costi addizionali delle operazioni di alimentazione e raffreddamento derivanti dall'occupazione di spazio maggiore nel datacenter ospite. Il vantaggio della la scalabilità orizzontale oltre ad essere più resiliente di natura è anche virtualmente infinita come capacità di espansione. Particolare attenzione va posta alla riconfigurazione di alcuni servizi come il filesystem condiviso tra i vari server. Per questo è necessaria un'accurata progettazione da fare assieme al vostro IT o alla società che vi segue dal punto di vista informatico.
Volete avvalervi della nostra consulenza in questo senso? Dovete solo contattarci!