Cosa si intende per “scalabilità” nell’ingegneria del software?

"Scalabilità" *di solito* (o più appropriatamente) si riferisce al carico che un sistema può gestire. Cioè, man mano che il carico aumenta (più utenti, più file, più qualsiasi cosa), il sistema può gestirlo naturalmente o adattarsi a gestirlo.

Similmente, quando il business parla se un processo scala bene o no, si riferisce alla stessa cosa. Quando il processo viene esteso a un pubblico più vasto (ad esempio aggiungendo più team), si potrebbe scoprire che il processo non scala bene perché più grande è l'organizzazione, più difficile è gestire il processo. Di solito, il problema è che mancano dei ruoli o dei processi interstiziali, o il processo stesso non scala bene.

Nella conversazione, "scalabilità" può riferirsi ad alcune cose diverse a seconda del contesto, dato che la parola viene buttata in giro spesso, specialmente con gli sviluppatori:

A volte quando gli sviluppatori gettano la parola là fuori, in realtà si riferiscono alla manutenibilità dell'applicazione. Cioè, quanto è facile lavorare sul codice? Se l'architettura dell'applicazione non è giusta, diventa sempre più difficile avere molte persone che ci lavorano, non si scala bene.

A volte quando gli sviluppatori buttano fuori la parola, in realtà si riferiscono all'estensibilità. Cioè, un sistema può essere facilmente esteso o è troppo fatto per lo scopo e difficile da aggiungere nuove funzionalità? Se non possiamo aggiungere nuove funzionalità senza rischi irragionevoli, allora il sistema potrebbe non essere scalabile.

Quindi, la parola viene lanciata in giro per descrivere una situazione in cui il sistema (software o persone) riceve più di qualcosa. Più utenti, più codice, più processi, più qualsiasi cosa. La scalabilità descrive quanto bene il sistema gestisce l'aumento di carico.