Escalabilitat: decisions de disseny claus per a un creixement sense límits
Blog Detail Page
Blog Detail Page
Blog Detail Page

Escalabilitat: decisions de disseny claus per a un creixement sense límits

Blog Detail Page
Blog Detail Page
Blog Detail Page

Descobreix com l’escalabilitat influeix en l’èxit d’un projecte i aprèn a prendre les decisions de disseny correctes des del començament per garantir un creixement eficient i sostenible.

En el món actual, amb un ús de la tecnologia en expansió constant, l’escalabilitat s’ha convertit en un aspecte crucial en el desenvolupament de projectes. L’escalabilitat es refereix a la capacitat d’un sistema per manejar una càrrega de treball creixent de manera eficient. Però l’escalabilitat no és un producte de la casualitat. És el resultat de decisions de disseny preses durant les etapes inicials d’un projecte.

Elecció de la tecnologia

L’elecció de la tecnologia és una de les primeres decisions de disseny que es prenen en un projecte. Aquesta tria pot tenir un impacte significatiu en l’escalabilitat; és important investigar i entendre les capacitats i les limitacions de totes les tecnologies que pretenem fer servir abans de seleccionar-les per a un projecte.

Això inclou:

  • Entendre com la tecnologia maneja la concurrència.
  • La gestió de la memòria.
  • Com es comporta sota càrrega.

L’elecció d’una tecnologia que no és capaç de manejar les demandes d’escalabilitat d’un projecte pot resultar en problemes de rendiment i una necessitat de redisseny futur (i precoç) del sistema.

Arquitectura del sistema

L’arquitectura del sistema és una altra decisió de disseny que pot afectar l’escalabilitat. Una arquitectura ben dissenyada permet que el sistema s’expandeixi i s’adapti a les demandes creixents.

L’arquitectura d’un sistema ha de ser flexible i adaptable:

  • Ha de permetre l’addició de nous components i serveis sense interrompre el funcionament del sistema existent.
  • Ha de ser resilient i capaç de suportar fallades d’un component sense causar una interrupció dràstica del servei.

Arquitectures com ara l’arquitectura de microserveis o l’arquitectura d’esdeveniments ens pot facilitar l’escalabilitat del sistema.

Els beneficis de l’arquitectura de microserveis

L’arquitectura de microserveis emergeix com una solució que ofereix una escalabilitat sense precedents, de manera que permet a les empreses adaptar-se ràpidament a les demandes canviants del mercat i a l’evolució tecnològica.

L’arquitectura de microserveis és un enfocament de disseny de software que consisteix a descompondre una aplicació en un conjunt de serveis més petits; cadascun s’executa de manera independent i es comuniquen entre si per mitjà d’interfícies ben definides, com ara API. Aquesta modularitat permet una flexibilitat i una eficiència més grans en el desenvolupament, el desplegament i el manteniment d’aplicacions.

Un dels avantatges principals dels microserveis és la capacitat d’escalar horitzontalment. En lloc d’augmentar la capacitat d’un sol servidor (escalabilitat vertical), els microserveis permeten afegir més instàncies d’un servei en diferents servidors. Això no tan sols millora la capacitat de gestió de les càrregues de treball, sinó que també ofereix més resistència davant de fallades, ja que el problema en un servei no afecta la resta.

Amb els microserveis, es pot optimitzar l’ús de recursos assignant més potència de còmput als serveis que ho requereixen, mentre que els serveis menys demanats poden funcionar amb menys recursos. Aquesta assignació dinàmica de recursos no tan sols és eficient des del punt de vista del cost, sinó que també assegura un rendiment òptim de l’aplicació.

Un enfocament clau per dissenyar una arquitectura de microserveis efectiva és el disseny orientat a dominis (DDD, per les sigles en anglès). El disseny orientat a dominis és una metodologia que se centra en l’entesa profunda del domini del negoci i en la creació de models que reflecteixin fidelment aquest domini. En lloc de centrar-se en la tecnologia o en l’estructura de dades, el DDD posa l’èmfasi en els conceptes i els processos de negoci, de manera que permet que els desenvolupadors creïn solucions que realment resolguin problemes específics del negoci i ens ajuden a evitar pràctiques incorrectes com una segmentació elevada en microserveis o bé el contrari, la creació de microserveis amb un acoblament entre diferents dominis.

Seguir el DDD ens ajuda a definir límits clars entre els diferents dominis del negoci, assegura que cada microservei tingui un propòsit clar i alineat amb els objectius del negoci i promou la creació d’interfícies ben definides per a la comunicació entre microserveis.

Els beneficis de l’arquitectura d’esdeveniments

L’arquitectura d’esdeveniments és un estil d’arquitectura de software que promou la producció, la detecció i la reacció als esdeveniments. Presenta múltiples beneficis:

  1. Escalabilitat: un dels avantatges principals d’una arquitectura d’esdeveniments és la capacitat que té per escalar. Com que els esdeveniments són independents entre si, es poden processar en paral·lel, fet que permet un alt grau d’escalabilitat.
  2. Desacoblament: l’arquitectura d’esdeveniments promou el desacoblament entre els productors i els consumidors d’esdeveniments. Això significa que un canvi en un servei no hauria de requerir un canvi en altres serveis, cosa que facilita l’escalabilitat i la mantenibilitat.
  3. Resiliència: l’arquitectura d’esdeveniments pot augmentar la resiliència d’un sistema. Si un servei falla, els esdeveniments que no ha pogut processar els pot tractar un altre servei, i això millora la disponibilitat del sistema.

Però recorda que, com que els esdeveniments es processen de manera asíncrona, hi pot haver un endarreriment abans que els canvis es reflecteixin a tot el sistema. Valida que aquest aspecte compleix els requeriments del sistema.

Base de dades

La tria de la base de dades també pot afectar l’escalabilitat. Algunes bases de dades són excel·lents per manejar grans volums de dades i permetre hibridació al Cloud, mentre que altres hi poden tenir dificultats. A més, el disseny de la base de dades, com l’elecció d’índexs i la normalització de dades, pot tenir un impacte en l’escalabilitat.

Una base de dades ben dissenyada pot manejar un gran volum d’usuaris i transaccions. Hem d’estudiar l’ús de tècniques com la de partició o fins i tot sharding (dividir una base de dades en parts més petites i manejables) i la replicació (crear còpies de la base de dades per distribuir la càrrega). Relacionat amb la replicació, un dels patrons que mereix ser analitzat en el teu projecte és el patró CQRS.

CQRS (Command Query Responsibility Segregation)

CQRS és una solució arquitectònica que separa les operacions de lectura (consultes, que llegeixen l’estat del sistema) de les operacions d’escriptura (comandaments, que canvien l’estat del sistema) per optimitzar tots dos processos. Entre els avantatges d’aquest patró podem trobar:

  1. Escalabilitat independent: permet escalar els sistemes de lectura i escriptura de manera independent, la qual cosa és especialment útil en aplicacions amb una càrrega desigual entre lectures i escriptures.
  2. Optimització del rendiment: en separar les consultes dels comandaments, es poden optimitzar les bases de dades, l’indexat de dades i els models per a cada tipus d’operació, i així se’n millora el rendiment general. Podem utilitzar diferents solucions de gestors de bases de dades per a les consultes i els comandaments.
  3. Seguretat millorada: CQRS facilita la implementació de mesures de seguretat específiques per a lectures i escriptures.
  4. Simplicitat en les consultes: les consultes poden ser més senzilles i directes, ja que no estan barrejades amb la lògica dels comandaments ni amb el disseny de la base de dades de comandaments.
  5. Manteniment i evolució: la clara separació de responsabilitats fa que el codi sigui més fàcil de mantenir i evolucionar amb el temps. Permet incrementar les funcionalitats de les consultes sense afectar el rendiment dels comandaments.

Ús de la cau

La memòria cau és una tecnologia que emmagatzema temporalment dades en un espai d’emmagatzematge d’accés ràpid.

Té com a objectiu reduir el temps d’accés a les dades i disminuir la càrrega dels sistemes.

Si fem servir memòria cau en la nostra solució aconseguirem:

  • Reduir la latència: com que s’emmagatzemen dades accedides freqüentment a la cau, es redueix significativament la latència, ja que les dades es recuperen molt més de pressa que si hem d’accedir als repositoris de dades. Addicionalment, en respondre més ràpidament a les peticions dels usuaris, aconseguirem una millor experiència d’usuari.
  • Disminuir la càrrega de treball: la cau pot disminuir la càrrega als servidors perquè s’evita la necessitat de processar repetidament les mateixes peticions, de manera que l’eficiència del nostre sistema augmenta.

Monitorització i alertes

Per últim, però no menys important, és imprescindible tenir un sistema de monitorització i alertes que ens permeti detectar i respondre ràpidament a qualsevol problema que pugui sorgir a mesura que augmenta el nombre d’usuaris.

En la majoria dels casos, les tecnologies seleccionades per a l’arquitectura del sistema ja disposaran d’una solució de monitorització out of the box o estaran preparades per integrar-se amb diverses eines de mercat que poden ajudar en la gestió de la monitorització i les alertes. És fonamental disposar d’una monitorització contínua i una configuració d’alertes basades en regles o machine learning.

D’aquesta manera podrem detectar proactivament els problemes abans que afectin els usuaris, optimitzar els recursos, entenent com els fem servir o detectant pics inesperats de consum, i detectar anomalies que es puguin convertir posteriorment en problemes que afectin els nostres usuaris.

Conclusió

L’escalabilitat és un aspecte essencial en el disseny de projectes. Les decisions de disseny preses durant les primeres etapes poden tenir un impacte significatiu en l’escalabilitat. Per tant, és crucial considerar l’escalabilitat des del principi i prendre decisions de disseny ben estudiades. En el cas de CaixaBank, CaixaBankTech és el motor de la transformació tecnològica del Grup CaixaBank i ens encarreguem d’assegurar l’escalabilitat de les seves solucions, de manera que garantim que puguin gestionar el creixement constant del banc i adaptar-se a les necessitats futures de manera eficient.


Segueix llegint...