# Escalabilitat

En telecomunicacions i en enginyeria informàtica, l'escalabilitat és la capacitat d'un sistema, una xarxa informàtica o un procés per a ampliar el marge d'operacions sense perdre qualitat. Això s'aconsegueix controlant l'augment del treball de manera fluida, o bé perquè està preparat per a créixer sense perdre qualitat en els serveis oferts. En general, també es pot definir com la capacitat del sistema informàtic de canviar la seva mida o configuració per a adaptar-se a les circumstàncies canviants.
Per exemple, una universitat que estableix una xarxa d'usuaris per Internet per a un edifici de docents i no solament vol que el seu sistema informàtic tingui capacitat per a acollir els actuals clients, que són tots professors, sinó també els clients que pugui tenir en el futur, com ara professors visitants. Per a això cal implementar solucions que permetin el creixement de la xarxa sense que la qualitat o velocitat disminueixi. Un sistema el rendiment del qual ha millorat després d'haver-li afegit més capacitat de maquinari, proporcionalment a la capacitat afegida, es diu sistema escalable.

## Dimensions

L'escalabilitat es pot mesurar en diferents dimensions.
* Escalabilitat en càrrega, un sistema distribuït ens fa fàcil ampliar i reduir els seus recursos per acomodar (a conveniència), càrregues més pesades o més lleugeres segons calgui.
* Escalabilitat geogràfica, un sistema geogràficament escalable, és aquell que manté la seva utilitat i usabilitat, sense importar que tan lluny estiguin els seus usuaris o recursos.
* Escalabilitat administrativa, no importa que moltes diferents organitzacions necessitin compartir un sol sistema distribuït, ha de ser fàcil d'usar i manejar.

## Exemples

Per exemple, un sistema de processament i transacció en línia o un sistema administrador de base de dades escalable poden ser actualitzats per poder processar més transaccions afegint per mitjà de nous processadors, dispositius i emmagatzematge que es poden implementar fàcilment i transparentment sense apagar-los.
Un protocol encaminador és considerat escalable pel que fa a la grandària de la xarxa, si la grandària de la necessària taula enrutadora en cada node creix com una cota superior asimptòtica (log N), on N és el nombre de nodes a la xarxa.
D'altra banda, una aplicació de programari és escalable si en incrementar els processadors on s'executa, el rendiment creix proporcionalment. Per contra, una aplicació no és escalable si el seu rendiment no "escala" o creix amb l'increment dels processadors.
Un altre exemple és: en el CoE = 4

## Tipus d'escalabilitat

És la capacitat del sistema informàtic de canviar la seva grandària o configuració per adaptar-se a les circumstàncies canviants.

### Escalabilitat vertical

Un sistema escala verticalment o cap a dalt, quan en afegir més recursos a un node particular del sistema, aquest millora en conjunt. Per exemple, afegir memòria o un disc dur més ràpid a una computadora pot millor el rendiment del sistema global. Un altre exemple molt bàsic dins l'economia digital seria augmentar el nombre de CPU que té el servidor del nostre lloc web.
Aquest és el sistema més simple, perquè com hem dit, significa créixer el maquinari d'un dels nodes, és a dir, augmentar el maquinari per un més potent com un disc dur, una memòria o un processador. Però també pot ser la migració completa del maquinari per un més potent. L'esforç d'aquest creixement és mínim, perquè no té repercussions en el programari, ja que només serà recolzar i migrar els sistemes al nou maquinari.
Tot i que hem vist que es tracta d'un procés senzill, la realitat és que aquest tipus d'escalament conté alguns aspectes negatius. La raó és que el creixement està directament lligat al maquinari, i aquest tard o d'hora tindrà un límit. Arribarà un moment en què tindrem el millor disc dur, el millor processador, la millor memòria, però que ja no podrem créixer més. Podríem comprar el següent model de servidors, però el cost d'aquesta operació seria enorme i el rendiment només milloraria una mica, és a dir, que no ens valdria la pena. Encara tindríem el mateix problema l'any següent i, per tant, no seria una solució efectiva. Però, així i tot, a nivell estructura no ens suposa cap modificació destacada, cosa que la convertiria en una bona opció si els costos anteriors són assumibles.
En qualsevol cas, això no significa que el sistema d'escalabilitat vertical sigui dolent, donat que podem combinar-lo amb l'escalament horitzontal i així obtenir millors resultats.

### Escalabilitat horitzontal

Un sistema escala horitzontalment si en afegir més nodes, el rendiment d'aquest millora. Es basa a mantenir el cost del desenvolupament i aplicació adaptant-se en tot moment al seu continu creixement, però és un sistema més complex d'implementar i d'administrar. Per això sol estar conformat per una agrupació d'equips que donen suport a la funcionalitat completa. Normalment, en una escalabilitat horitzontal s'afegeixen equips per a donar més potència a la xarxa de treball.
Amb un entorn d'aquest tipus, és lògic pensar que la potència de processament és directament proporcional al nombre d'equips de la xarxa. El total de la potència de processament és la suma de la velocitat física de cada equip transferida per la participació d'aplicacions i dades estesa a través dels nodes.
Si s'aplica un model d'escalabilitat basat en l'horitzontalitat, aparentment no existeixen limitacions. Però com a principal i important punt negatiu, és que aquest model de creixement suposa una gran modificació en el disseny i reimplantació. Si la lògica s'ha concebut per a un únic servidor, és probable que s'hagi d'estructurar l'arquitectura per a suportar aquest model d'escalabilitat.
Ha d'haver-hi un encarregat que s'encarregui de com realitzar el model de partició de dades dels diferents equips, ja que existeixen dependències en l'accés a l'aplicació. És convenient fer una anàlisi d'activitat dels usuaris per anar ajustant el funcionament del sistema. Amb aquest model d'escalabilitat, es disposa d'un sistema al qual es poden agregar recursos de manera gairebé infinita i adaptable al creixement de càrregues de treball i de nous usuaris.
L'escalabilitat compte com a factor crític el creixement dels usuaris. És molt més senzill dissenyar un sistema amb un nombre constant d'usuaris (per molt alt que sigui) que dissenyar un sistema amb un nombre creixent i variable d'usuaris. El creixement relatiu dels nombres és molt més important que els nombres absoluts.
Per exemple, en afegir una computadora nova a un sistema que balanci la càrrega entre l'antiga i la nova pot millorar el rendiment tot el sistema. Un altre exemple seria el d'una botiga en línia. En aquest cas es tractaria d'implementar un programari flexible que pugui anar-se ajustant a les sol·licituds en pics alts de demanda i que aporti una excel·lent gestió en termes de rendiment i optimització.

## Referències

* ↑ Bondi, André B. «Characteristics of scalability and their impact on performance». A: Proceedings of the second international workshop on Software and performance - WOSP '00, 2000, p. 195. DOI 10.1145/350391.350432. ISBN 158113195X.
* ↑ Hill, Mark D. «What is scalability?». ACM SIGARCH Computer Architecture News, 18, 4, 1990, pàg. 18. DOI: 10.1145/121973.121975. i Duboc, Leticia; Rosenblum, David S.; Wicks, Tony. «A framework for modelling and analysis of software systems scalability». A: Proceeding of the 28th international conference on Software engineering - ICSE '06, 2006, p. 949. DOI 10.1145/1134285.1134460. ISBN 1595933751.
* ↑ Hesham El-Rewini and Mostafa Abd-El-Barr. Advanced Computer Architecture and Parallel Processing. John Wiley & Son, Apr 2005, p. 66. ISBN 978-0-471-47839-3 [Consulta: octubre 2013].
* ↑ (26 març 2007) "Scale-up x Scale-out: A Case Study using Nutch/Lucene" a 2007 IEEE International Parallel and Distributed Processing Symposium. . DOI:10.1109/IPDPS.2007.370631
* 1 2 «Una visión diferente sobre escalabilidad y modelos de negocio» (en castellà), 12-04-2018. [Consulta: 20 desembre 2019].
* ↑ «Conceptos sobre la escalabilidad | Marco de Desarrollo de la Junta de Andalucía». [Consulta: 20 desembre 2019].

## Vegeu també

* Llei d'Amdahl

## Enllaços externs

* «TelecomDictionary: tips on wireless: Scability». Arxivat de l'original el 2008-03-10. [Consulta: 27 maig 2011].
* «Architecture of a Highly Scalable NIO-Based Server | Java.net».
* «Scalable definition by The Linux Information Project».