Scalabilità

Nota disambigua.svg Disambiguazione – Se stai cercando scalabilità di un'azienda, vedi Scalabilità (economia).

Nell'ingegneria del software, nelle telecomunicazioni, in informatica e in altre discipline tra cui economia e business[1][2], la scalabilità denota in genere la capacità di un sistema di aumentare o diminuire di scala in funzione delle necessità e disponibilità. Un sistema che gode di questa proprietà viene detto scalabile[3][4][5].

DescrizioneModifica

 
Una mappa visiva e organizzativa di sistemi complessi suddivisi in sette sottogruppi.

L'uso più tradizionale si riferisce alla scalabilità di carico, ovvero la capacità di un sistema di incrementare le proprie prestazioni (il proprio throughput nel caso di sistemi trasmissivi) se a tale sistema vengono fornite nuove risorse (per esempio, nel caso dell'hardware, maggiore potenza di processore o processori aggiuntivi). Quanto un determinato sistema sia scalabile dipende dalla sua architettura software e/o architettura hardware; per esempio, la presenza di uno o più colli di bottiglia potrebbe rendere ininfluente l'aumento della potenza di calcolo complessiva. Questa dipendenza dall'architettura vale anche, in termini generali, per le altre accezioni in cui si può intendere il termine "scalabile"[6][7][8].

ClassificazioniModifica

Nel caso dei sistemi software, la scalabilità può essere intesa come capacità di crescita lungo tre dimensioni[8][9][10].

Scalabilità di carico
Un sistema software dovrebbe aumentare le proprie prestazioni in funzione della potenza di calcolo complessiva richiesta al momento. Per i sistemi distribuiti, di solito, l'enfasi viene posta sulla scalabilità rispetto al numero di processori invece della potenza dei singoli processori impiegati.
Scalabilità geografica
Un sistema geograficamente scalabile è quello che mantiene inalterata la sua usabilità e utilità indipendentemente dalla distanza fisica dei suoi utenti o delle sue risorse.
Scalabilità amministrativa
Un sistema amministrativamente scalabile è quello che mantiene inalterata la sua gestibilità indipendentemente da quante organizzazioni lo utilizzano.

La scalabilità di carico può esplicarsi in scalabilità verticale (relativa all'aumento della capacità di elaborazione di una singola macchina) e scalabilità orizzontale (relativa all'aggiunta di altre macchine in distribuzione di carico).

EsempiModifica

La scalabilità, nelle sue varie forme, è un parametro di qualità determinante in numerose famiglie di applicazioni software. Sistemi di online transaction processing o DBMS, per esempio, sono scalabili se possono essere messi in condizione di gestire più transazioni aggiungendo processori, memoria o dispositivi. In questo caso, il sistema stesso si presta a essere utilizzato in contesti molto semplici o molto complessi senza che questo richieda una sua riprogettazione[11].

In alcuni contesti esistono definizioni specifiche, più formali, del concetto di scalabilità; un protocollo di routing, per esempio, si dice scalabile se la dimensione della tabella di routing di ogni nodo cresce secondo un O(log N), dove N è il numero di nodi che compongono la rete[12].

NoteModifica

  1. ^ (EN) Scalability 101 - How to Run a Scalable Business, su UserGuiding, 11 gennaio 2021. URL consultato il 29 ottobre 2021.
  2. ^ (EN) Scalability: What It Is, and How It Works, su Investopedia. URL consultato il 29 ottobre 2021.
  3. ^ (EN) 2.1: The Amdahl's law, su Workforce LibreTexts, 5 marzo 2021. URL consultato il 29 ottobre 2021.
  4. ^ (EN) Why web-scale is the future, in Network World, 13 febbraio 2020. URL consultato il 1º giugno 2017.
  5. ^ Cosa significa scalabilità? – Computer semplice, su computersemplice.it. URL consultato il 29 ottobre 2021.
  6. ^ Mark D. Hill, What is scalability?, in ACM SIGARCH Computer Architecture News, vol. 18, n. 4, 1990, p. 18, DOI:10.1145/121973.121975. e Leticia Duboc, David S. Rosenblum e Tony Wicks, A framework for modelling and analysis of software systems scalability (PDF), Proceedings of the 28th international conference on Software engineering – ICSE '06, 2006, p. 949, DOI:10.1145/1134285.1134460, ISBN 1595933751.
  7. ^ Kenneth Craig Laudon e Carol Guercio Traver, E-commerce: Business, Technology, Society, Pearson Prentice Hall/Pearson Education, 2008, ISBN 9780136006459.
  8. ^ a b Hesham El-Rewini and Mostafa Abd-El-Barr, Advanced Computer Architecture and Parallel Processing, John Wiley & Sons, aprile 2005, p. 66, ISBN 978-0-471-47839-3.
  9. ^ Maged Michael, Jose E. Moreira, Doron Shiloach e Robert W. Wisniewski, Scale-up x Scale-out: A Case Study using Nutch/Lucene, 2007 IEEE International Parallel and Distributed Processing Symposium, 26 marzo 2007, p. 1, DOI:10.1109/IPDPS.2007.370631, ISBN 978-1-4244-0909-9.
  10. ^ Differenza tra scalabilità verticale (scale up) e scalabilità orizzontale (scale out), su Informatica e Ingegneria Online, 11 novembre 2020. URL consultato il 29 ottobre 2021.
  11. ^ Lucio Benfante, DBMS: cos'è e come funziona un sistema di gestione Database, su HTML.it. URL consultato il 29 ottobre 2021.
  12. ^ (EN) Lawrence Williams, Routing Protocols Types: Static, Dynamic, IP, CISCO, su guru99.com. URL consultato il 29 ottobre 2021.

Voci correlateModifica

Controllo di autoritàGND (DE4520890-6