de monolitos a microservicios

Migrar de monòlits a microserveis: Quatre Estratègies d’èxit

En migrar de monòlits a microserveis i amb la intenció de millorar temps, els equips de desenvolupament i operacions tenen una forta pressió de millorar aquest desplegament i reduir-lo a components específics independents per a així limitar l’impacte d’una actualització i mitigar els riscos. Això implica moure’s de components i aplicacions monolítiques a estructures de microserveis. Ja que en les monolítiques qualsevol canvi implica haver de modificar tota l’aplicació sencera. A això afegim que el núvol està més optimitzada per a usar microserveis, amb el que moure’s a ella sol implicar un canvi de perspectiva.

L’opció Lift-and-shift de pujar una aplicació monolítica al núvol i anar modificant-la per a crear microserveis complementaris no és fàcil i tendeix a presentar problemes. És millor realitzar una refactorització més profunda i crear serveis i microserveis a partir de l’aplicació monolítica.

Per a això hi ha quatre estratègies que ens serveixen per a assegurar una correcta migració a microserveis.

1.  Entendre el monòlit

Les aplicacions monolítiques solen ser fràgils, en tenir dependències i interaccions complexes entre els seus components interns. En intentar fragmentar-les és fàcil crear disrupcions i problemes.

Abans de començar el procés, és vital primer preparar aquesta migració mapeando correctament les interaccions entre components i diferents dependències que existeixin. Sabent amb profunditat les accions que realitza l’aplicació monolítica és bàsic per a evitar problemes. Per a això cal definir un pla clar de dependències i funcions per a tota l’aplicació.

Recomanem evitar errors humans mitjançant eines que aconsegueixin realitzar aquest mapatge automàtic. D’aquesta manera es pot visualitzar l’aplicació en temps real i crear topologies a partir de les traces de transaccions i crides. Això resulta en una representació gràfica dels components i interaccions que ha d’usar-se com a base per al desenvolupament posterior.

2. Realitzar la transició en increments

Refactoritzar una aplicació monolítica per a utilitzar contenidors de Kubernetes és una tasca molt gran i complicada que moltes vegades implica reestructurar i desenvolupar des de 0. Per tant, és vital dividir aquesta tasca en petites tasques incrementals, més fàcils de gestionar.

Després de mapear l’aplicació, els equips de DevOps poden anar reemplaçant els seus components per microserveis un a un. Així, cada microservei es pot testar de manera individual abans de realitzar el següent. Comparant-ho amb l’aplicació monolítica i observant el seu rendiment i resistència.


Una vegada l’aplicació es comporta d’igual manera amb el microservei que amb la versió monolítica, es pot eliminar les dependències a l’antic component monolític. I, llavors, començar a desenvolupar el següent microservei.

3.  Crear dependències lleugeres

Les dependències entrellaçades de les aplicacions monolítiques són una de les raons per les quals és bo migrar a microserveis. Aquestes dependències no permeten canvis flexibles ni desplegaments àgils.

Quan es realitza la migració a microserveis és vital que s’entenguin aquestes dependències i es redueixin les mateixes al mínim necessari. És molt important que la missatgeria entre aplicacions sigui asíncrona i s’utilitzin cues.

En implementar comunicació asíncrona reduïm les possibilitats de crear colls d’ampolla i facilitem la possibilitat de canviar o substituir un microservei individual.

4.  Implementar monitoraje en tot el procés

En migrar de monòlits a microserveis en Kubernetes implica que una aplicació es converteixi en diverses microaplicacions. Cadascuna amb la seva tecnologia, corrent de manera independent. Això sol ser més complex de monitorar i de revisar.

De la mateixa manera que fa falta mapear les dependències de l’aplicació monolítica abans de migrar, s’han de mantenir mapes dels entorns amb microserveis que siguin observables en cada pas del procés.

Això implica utilitzar dades de logs, mètriques i traces de components en la tecnologia del núvol. I, així entendre les relacions entre serveis i les seves dependències.

Aquest monitoratge s’ha d’estendre a cada component de l’aplicació, incloent-hi clústers, nodes, pods, workloads, etc. Quan alguna incidència ocorri, les dades de monitoratge han de permetre a l’equip de DevOps identificar l’arrel del problema. I, d’aquesta manera, poder resoldre-ho ràpidament.

Per a una major eficàcia, els equips haurien d’usar plataformes de monitoratge que unifiquin totes les dades de l’aplicació i infraestructura usada. Aquesta plataforma deuria també usar IA per a donar respostes exactes sobre la salut dels entorns. Amb això podrem automatitzar part del treball al voltant de la revisió i solució de problemes.


Conclusions

Migrar aplicacions monolítiques a microserveis pot ser difícil i llarg. No obstant això, una vegada la migració s’ha completat, els equips de DevOps són lliures per a ser mes interactius i flexibles, alhora que es poden aprofitar millor els serveis disponibles en el núvol.

El treball realitzat per a la migració donarà beneficis a llarg termini. Adoptar tecnologies modernes per a facilitar la migració com monitoraje integrat o IA permet als equips optimitzar els entorns i desplegaments, i donarà peu a facilitar millores i desenvolupaments nous alhora que reduir costos posteriors i aconseguir avantatges competitius.

Daniel Morales – Cloud Engineer