El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Escalabilitat

De la wikipedia:

Escalabilidad: En telecomunicaciones y en ingeniería informática, la escalabilidad es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos.

Quan hom posa en marxa un negoci o una aplicació on-line l'escalabilitat és un dels principals factors a tenir en compte. El creixement pot ser molt ràpid si tenim èxit, i el poder créixer al mateix ritme que ho fan els nostres clients o visitants és fonamental.

L'escalabilitat, però es sol entendre com que afegint més màquines i més ampla de banda ja està tot arreglat. No és així, a més de l'escalabilitat del ferro, hem de parlar de l'escalabilitat econòmica, determinar abans de triar una solució si a més de ser escalable en hardware és escalable econòmicament.

L'escalabilitat econòmica ve determinada per les restriccions que tengui l'aplicatiu. Algunes empreses ens venen aplicacions amb un nivell d'entrada molt baix, però amb versions ultra-mega-enterprise  a les que hem de passar una vegada necessitem un nombre major de processadors, d'usuaris, de volum de dades, etc. En altres casos la limitació ve donada per afegitons al producte, indispensables per una organització en creixement, i que per a funcionar necessiten de la versió enterprise del producte. Si aquesta pràctica ja era greu quan parlàvem d'aplicacions de gestió clàssiques, on més o manco es pot controlar el creixement, és un punt crític a considerar en aplicacions orientades a Internet. D'un dia a l'altra ens podem trobar presoners del nostre proveïdor: bé perquè els servidors nous ja duen més cores i la llicència va per processador, bé perquè el nombre d'usuaris ha anat augmentant considerablemente, però amb un volum de vendes que no compensa passar a la versió enterprise de cap de les maneres.

Així doncs, quan consideran l'escalabilitat econòmica, la projecció de la despesa futura, a més de tan sols la possibilitat d'escalar posant més màquines, veurem que el programari privatiu poques vegades és realment escalable. Tenir autèntica escalabilitat significa sols haver-se de preocupar de posar més màquines i algú que les administri i no haver-se d'hipotecar el futur, el programari lliure hi té molt amb dir a això: podem triar distribucions GNU/Linux per exemple que ens permetran ser realment escalables, ja que el cost sols vindrà determinat pel que val el servei i el ferro.

Suposem però que estam fent una aplicació per la nostra empresa, o que ens dedicam a la programació d'aplicacions. En aquest cas hem de mirar també l'escalabilitat del desenvolupament. És a dir, la possibilitat de que el rendiment cresqui de manera gairebé lineal amb el creixemnt de l'equip de programació. En aquest cas són les eines de desenvolupament les que ens han de permetre ser escalables i fer que sigui possible que el treball es pugui distribuir fàcilment entre els components de l'equip.

L'arquitectura en capes: sistemes, capa de presentació, negoci, persistència, base de dades ens permet distribuir la feina en equips  especialitzats sempre que les eines de desenvolupament ens ho permetin, tant des de el punt de vista econòmic com des del punt de vista funcional. Per exemple, de la capa de presentació normalment se n'encarregarà un equip de disseny, això vol dir que el llenguatge de plantilles que tengui la nostra aplicació de desenvolupament ha de permetre als dissenyadors fer la seva feina sense preocupar-se massa del llenguatge de programació, o millor i tot, sense haver de programar. Per la resta de capes hem de tenir mecanismes de control de versions que ens permetin gestionar fàcilment els conflictes, però sobretot, hem de permetre que aquests conflictes puguin existir. Si algú pot bloquejar l'edició d'un arxiu per fer un canvi mínim, és temps que es perd quan potser hi ha tota la reste de l'equip aturat per aquest canvi. Una altra vegada més, la capacitat de tenir un entorn de desenvolupament escalable ens ve donada per defecte en moltes eines de programació i bastiments que trobam al programari lliure, precisament perquè les eines han estat concebudes per encabir-hi un gran volum de gent fent feina a l'hora i evitar que una sola persona pugui bloquejar la feina dels altres.

Així doncs, la propera vegada que algú ens parli de l'escalabilitat de la seva aplicació, podem demanar-li en quin sentit és escalable, quan ens diguin que l'eina de programació permet treball en grup investiguem si compleix els requisits bàsics del desenvolupament escalable. Les solucions privatives gairebé mai són realment escalables, part del seu negoci es basa precisament en que no ho siguin.

blog comments powered by Disqus