Per entendre bé què aporten els microserveis cal entendre igual de bé allò amb què es comparen: l'arquitectura monolítica. És la manera més habitual de construir programari, la que fa servir avui TechCorp i, probablement, la que has utilitzat a la majoria dels teus projectes. Lluny de ser una relíquia, el monòlit té virtuts importants i, ben construït (l'anomenat monòlit modular), és una opció excel·lent per a moltíssims sistemes.
En aquesta lliçó definirem què és un monòlit i les seves variants, compararem totes dues arquitectures dimensió a dimensió amb una taula i diagrames, i seguirem pas a pas el cicle de vida d'un mateix canvi funcional ("afegir cupons de descompte a la botiga de TechCorp") en cadascuna d'elles per veure on són les diferències reals. Acabarem desmuntant el mite que el monòlit és sempre l'opció dolenta. Aquí encara no decidirem quan convé l'una o l'altra (això arriba a la lliçó 01-04) ni veurem la tècnica de dividir un monòlit (lliçó 02-02).
Contingut
- Què és un monòlit
- El monòlit modular: un punt intermedi
- Comparativa dimensió a dimensió
- Els dos sistemes en diagrames
- Un mateix canvi, dos cicles de vida: cupons de descompte a TechCorp
- Altres alternatives: SOA i monòlit modular com a destinació
- El mite que el monòlit és sempre dolent
- Errors comuns i consells
- Exercicis
- Conclusió
- Què és un monòlit
Un monòlit és una aplicació construïda i desplegada com una única unitat: un sol procés (o un sol artefacte que s'executa en diversos processos idèntics), habitualment un sol repositori de codi, i gairebé sempre una sola base de dades. Tota la funcionalitat (interfície, lògica de negoci, accés a dades) viu al mateix desplegament.
Característiques típiques:
- Una unitat de desplegament: es compila o s'empaqueta tot junt i es puja tot junt. A TechCorp,
techcorp-shopés un únic projecte Node.js que s'arrenca ambnode servidor.jsi serveix tota la botiga. - Crides internes en memòria: quan el mòdul de comandes necessita comprovar l'estoc, crida una funció del mòdul d'inventari al mateix procés. Res no viatja per la xarxa.
- Una base de dades compartida: totes les taules (
clients,productes,estoc,comandes,pagaments,notificacions) són al mateix PostgreSQL i qualsevol mòdul pot consultar qualsevol taula. Les transaccions abasten tot el que calgui. - Escalat horitzontal per rèplica completa: si cal més capacitat, s'executen diverses còpies idèntiques del monòlit darrere d'un balancejador.
És important subratllar que "monòlit" no vol dir "codi desordenat". Un monòlit pot estar perfectament organitzat en capes i mòduls. Quan el codi d'un monòlit està embolicat, sense límits interns clars, es parla de big ball of mud ("gran bola de fang"), que és un problema de qualitat, no d'arquitectura de desplegament.
- El monòlit modular: un punt intermedi
Un monòlit modular és un monòlit el codi del qual està dividit en mòduls amb límits explícits, cadascun amb la seva API interna i, en la versió més disciplinada, amb el seu propi esquema o conjunt de taules a què els altres mòduls no accedeixen directament. Continua desplegant-se com una unitat, però per dins s'assembla molt a un conjunt de microserveis que viuen al mateix procés.
| Aspecte | Monòlit "clàssic" | Monòlit modular | Microserveis |
|---|---|---|---|
| Unitat de desplegament | Una | Una | Una per servei |
| Límits entre àrees | Difusos o inexistents | Explícits (mòduls amb API interna) | Explícits (processos amb API de xarxa) |
| Accés a dades | Qualsevol mòdul llegeix qualsevol taula | Cada mòdul accedeix només a les seves taules | Cada servei té la seva base de dades |
| Comunicació interna | Crides a funcions sense restricció | Crides a funcions a través de l'API del mòdul | Crides HTTP o missatges |
| Cost de la xarxa | Cap | Cap | Present a cada interacció |
El monòlit modular té un valor doble: és una arquitectura excel·lent per si mateixa, i a més és el millor punt de partida si algun dia es vol migrar a microserveis, perquè els límits ja estan traçats. Un mòdul ben aïllat es pot "extreure" a un servei amb relativa facilitat; una bola de fang, no. Tornarem sobre aquesta idea al mòdul 2.
- Comparativa dimensió a dimensió
Aquesta és la taula central de la lliçó. Compara totes dues arquitectures en les dimensions que més importen a la pràctica. Llegeix-la amb calma; gairebé cada fila correspon a una lliçó posterior del curs.
| Dimensió | Monòlit | Microserveis |
|---|---|---|
| Desplegament | Una unitat. Qualsevol canvi, per petit que sigui, implica desplegar tota l'aplicació. Desplegaments menys freqüents i més "grans". | Una unitat per servei. Cada equip desplega el seu servei quan vol. Desplegaments petits i freqüents, però molts més pipelines a mantenir. |
| Escalat | Es replica tota l'aplicació encara que només una part necessiti capacitat. Senzill però poc eficient. | S'escala cada servei de manera independent segons la seva càrrega. Eficient, però exigeix orquestració i balanceig per servei. |
| Dades | Una base de dades compartida. Transaccions ACID entre qualsevol taula. Consistència immediata i senzilla. | Una base de dades per servei. No hi ha transaccions globals; consistència eventual i patrons com les sagues. Cada servei tria el seu motor. |
| Equips | Diversos equips treballen sobre el mateix codi i el mateix desplegament; es trepitgen i necessiten coordinar-se. | Cada equip és propietari dels seus serveis de cap a cap. Menys coordinació en el dia a dia, però cal governança comuna. |
| Tecnologia | Un únic stack per a tota l'aplicació. Canviar de versió d'un framework afecta tot. | Cada servei pot fer servir el seu stack. Llibertat, a canvi de més tecnologies a mantenir. |
| Proves | Les proves de cap a cap són fàcils: s'arrenca l'aplicació i es prova. Les suites creixen i es tornen lentes. | Provar un servei aïllat és ràpid. Provar la integració de molts serveis és difícil: calen proves de contracte i entorns complexos. |
| Rendiment | Crides internes en memòria, gairebé gratuïtes. Consultes SQL amb JOIN entre qualsevol taula. |
Cada interacció entre serveis creua la xarxa: latència, serialització, possibles fallades. Els "joins" entre dades de diferents serveis s'han de fer a l'aplicació. |
| Tolerància a fallades | Un error greu (fuita de memòria, excepció no controlada) pot tombar tota l'aplicació. | Un servei caigut no ha de tombar necessàriament els altres, si es dissenya bé la resiliència. Però hi ha molts més punts de fallada. |
| Cost inicial | Baix. Un projecte, un servidor, una base de dades. Es comença a lliurar valor en dies. | Alt. Calen contenidors, orquestració, missatgeria, observabilitat, CI/CD per servei... abans que la primera funcionalitat sigui en producció. |
| Complexitat | És al codi: a mesura que creix, es torna difícil d'entendre i de canviar. | És a les interaccions: cada servei és simple, però el conjunt és un sistema distribuït. |
| Depuració | Un procés, un log, un depurador. | Molts processos, molts logs; cal traçabilitat distribuïda per seguir una petició. |
Una manera útil de llegir la taula: el monòlit és senzill al principi i es complica en créixer; els microserveis són complicats al principi i mantenen la complexitat acotada en créixer. La qüestió d'on és el punt d'encreuament és exactament el que abordarem a la lliçó següent.
- Els dos sistemes en diagrames
El monòlit de TechCorp (situació actual)
flowchart TB
Client[Navegador / App mòbil]
subgraph Monòlit techcorp-shop (Node.js + Express, un sol procés)
direction TB
R[Rutes Express]
subgraph Mòduls
MC[clients]
MCat[catàleg]
MI[inventari]
MP[comandes]
MPa[pagaments]
MN[notificacions]
end
R --> MC & MCat & MI & MP & MPa & MN
MP --> MI
MP --> MPa
MP --> MN
MP --> MCat
end
BD[(PostgreSQL única<br/>totes les taules)]
Client --> R
MC & MCat & MI & MP & MPa & MN --> BD
Tot viu al mateix rectangle. Les fletxes entre mòduls són crides a funcions. Tots els mòduls apunten a la mateixa base de dades.
La mateixa botiga en microserveis (punt d'arribada del curs)
flowchart TB
Client[Navegador / App mòbil]
GW[API Gateway :8080]
Client --> GW
subgraph Serveis
CLI[servei-clients :3004]
CAT[servei-cataleg :3001]
INV[servei-inventari :3006]
COM[servei-comandes :3002]
PAG[servei-pagaments :3003]
NOT[servei-notificacions :3005]
end
BDC[(PG clients)]
BDCat[(MongoDB catàleg)]
BDI[(PG inventari)]
BDP[(PG comandes)]
BDPa[(PG pagaments)]
MQ[(RabbitMQ)]
GW --> CLI & CAT & COM
CLI --> BDC
CAT --> BDCat
INV --> BDI
COM --> BDP
PAG --> BDPa
COM -. esdeveniments .-> MQ
MQ -. esdeveniments .-> INV & PAG & NOT
Cada servei té el seu propi rectangle i la seva pròpia base de dades. Les relacions entre serveis passen per la xarxa (HTTP o RabbitMQ). El gateway és l'únic punt de contacte amb l'exterior.
- Un mateix canvi, dos cicles de vida: cupons de descompte a TechCorp
Res no il·lustra millor les diferències que seguir un canvi real. La Marta demana una funcionalitat nova: cupons de descompte. Un client introdueix un codi en fer la comanda, el sistema valida el cupó, aplica el descompte al total i registra que el cupó s'ha fet servir. A més, s'ha de poder consultar al catàleg quins productes admeten cupó i enviar un correu diferent quan la comanda porta descompte.
5.1 Al monòlit
| Pas | Què passa |
|---|---|
| 1. Disseny | Un desenvolupador (o dos) dissenya la taula cupons i decideix on va la lògica. Com que tot és al mateix codi, pot tocar el que vulgui. |
| 2. Base de dades | Afegeix una migració: taula cupons (codi, descompte, data de caducitat, usat) i una columna cupo_id a comandes. Una sola migració, una sola base de dades. |
| 3. Codi | Modifica crearComanda perquè rebi codiCupo, fa un SELECT sobre cupons, valida, aplica el descompte i marca el cupó com a usat dins de la mateixa transacció que crea la comanda. Modifica la consulta del catàleg perquè inclogui admet_cupo. Modifica la plantilla de correu. |
| 4. Proves | Arrenca l'aplicació sencera en local, crea una comanda amb cupó i comprova de cap a cap. Les proves automatitzades de tota l'aplicació triguen 25 minuts perquè són moltes. |
| 5. Coordinació | Tot i que el canvi el fa una persona, toca les àrees de comandes, catàleg i notificacions. Els responsables d'aquestes àrees revisen el pull request; de vegades hi ha conflictes amb altres canvis en curs sobre els mateixos fitxers. |
| 6. Desplegament | El canvi entra al desplegament setmanal del divendres juntament amb tota la resta. Es desplega l'aplicació completa. Si alguna cosa falla en qualsevol altra part, es reverteix tot, cupons inclosos. |
| 7. Operació | Si el càlcul del descompte té un error, es busca a l'únic log i es corregeix per al divendres següent (o es fa un desplegament d'urgència de tota l'aplicació). |
Balanç: desenvolupament ràpid i senzill (una transacció, un repositori, un desplegament), però amb dependència del calendari global de desplegament, risc de trepitjar-se amb altres canvis i un desplegament que ho arrossega tot.
5.2 En microserveis
| Pas | Què passa |
|---|---|
| 1. Disseny | Primera pregunta: de qui és la capacitat "cupons"? És un servei nou (servei-promocions) o forma part de servei-comandes? Suposem que l'equip decideix que és un servei nou, perquè màrqueting voldrà gestionar campanyes. Cal definir-ne l'API (GET /cupons/{codi}, POST /cupons/{codi}/bescanvis) i els esdeveniments. |
| 2. Base de dades | servei-promocions crea la seva pròpia base de dades amb la taula cupons. servei-comandes afegeix cupoAplicat al seu propi esquema. Dues migracions, en dues bases de dades, sense transacció comuna. |
| 3. Codi | servei-comandes canvia crearComanda per cridar per HTTP servei-promocions i validar el cupó, aplicar el descompte i, un cop creada la comanda, demanar-ne el bescanvi. Cal decidir què passa si promocions no respon (es rebutja la comanda? s'ignora el cupó?). servei-cataleg afegeix admetCupo al seu document i a la seva API. servei-notificacions escolta comanda.confirmada, que ara inclou descompteAplicat, i tria la plantilla adequada. |
| 4. Contractes | L'API de servei-cataleg i l'esdeveniment comanda.confirmada canvien: cal fer-ho de manera compatible cap enrere (afegir camps, no treure'n) perquè els consumidors no actualitzats no es trenquin. |
| 5. Proves | Cada servei prova el que és seu en segons. A més, proves de contracte entre comandes i promocions i una prova d'integració amb els serveis implicats aixecats junts. |
| 6. Coordinació | Hi participen tres o quatre equips, però cadascun treballa al seu servei. La coordinació és sobre contractes, no sobre codi: "quins camps retorna GET /cupons/{codi}?" |
| 7. Desplegament | Primer es desplega servei-promocions (nou, no trenca res). Després catàleg i notificacions (canvis compatibles). Finalment comandes, que activa la funcionalitat. Cada desplegament és petit i independent i es pot fer qualsevol dia. |
| 8. Operació | Si el descompte es calcula malament, es corregeix i es redesplega només servei-comandes en minuts. Si l'error és "el cupó s'ha marcat com a usat però la comanda no s'ha creat", cal revisar la traça entre dos serveis i potser afegir una compensació. |
Balanç: més feina inicial (definir servei, API, contractes, gestió de fallades), però desplegaments independents, equips que no es trepitgen i una capacitat de negoci (promocions) que neix ja aïllada i podrà evolucionar sola.
5.3 El que ensenya el recorregut
flowchart LR
subgraph Monòlit
A1[Disseny ràpid] --> A2[Una migració] --> A3[Un PR gran] --> A4[Proves lentes] --> A5[Desplegament setmanal de tot]
end
subgraph Microserveis
B1[Disseny: de qui és?] --> B2[Definir contractes] --> B3[Diversos PR petits] --> B4[Proves ràpides + contracte] --> B5[Desplegaments independents]
end
- El monòlit optimitza el desenvolupament del canvi; els microserveis optimitzen el lliurament i l'evolució independent.
- Al monòlit la dificultat apareix al final (coordinar el desplegament, revertir-ho tot). En microserveis apareix al principi (decidir límits i contractes).
- La gestió de fallades, que al monòlit la resol la transacció, en microserveis és una decisió explícita de disseny.
- Altres alternatives: SOA i monòlit modular com a destinació
L'elecció no és binària. Entre "un monòlit" i "dotzenes de microserveis" hi ha parades intermèdies vàlides:
- Monòlit modular (vist a l'apartat 2): mateix desplegament, límits interns rigorosos. Moltes organitzacions haurien d'aspirar a això i quedar-s'hi. És també la base ideal per a una futura extracció de serveis.
- SOA "clàssica": serveis de gra més gruixut que els microserveis, sovint amb un bus d'integració. Encara és comuna a grans corporacions. Comparteix amb els microserveis la idea de serveis, però amb més centralització (vegeu la lliçó 01-01).
- Pocs serveis grans ("macroserveis"): dividir el sistema en dues o tres peces per raons molt concretes (per exemple, separar el catàleg d'alta lectura de la resta) sense anar més enllà. És una estratègia pragmàtica que captura part dels avantatges amb una fracció del cost.
Cap d'aquestes opcions no és "fer trampes". Són punts diferents d'un mateix espectre, i el raonable és triar el que respongui als problemes reals que es tenen.
- El mite que el monòlit és sempre dolent
Convé dir-ho amb claredat, perquè la indústria de vegades ho oblida: el monòlit no és un error d'arquitectura. És l'opció per defecte correcta per a la majoria de projectes nous i per a molts sistemes madurs. Els seus avantatges són reals:
- Es comença a lliurar valor en dies, no en mesos d'infraestructura.
- Un desenvolupador pot entendre i executar tot el sistema al seu portàtil.
- Les transaccions i els
JOINresolen gratis problemes que en microserveis costen patrons complexos. - Refactoritzar és fàcil perquè el compilador o les proves veuen tot el codi alhora; moure una responsabilitat d'un mòdul a un altre és canviar un
import, no renegociar un contracte entre equips. - Operar-lo és barat: un procés, una base de dades, un log.
Empreses grans i molt respectades operen monòlits enormes amb èxit, i d'altres que van migrar a microserveis han tornat parcialment a consolidar serveis perquè el cost operatiu no compensava. Els microserveis no fan bo un sistema; resolen un conjunt concret de problemes (escalat desigual, equips que es destorben, cicles de desplegament lents) a canvi d'un altre conjunt de problemes. Si no tens els primers, no compris els segons.
El cas de TechCorp que seguim al curs està triat precisament perquè sí que té aquests problemes: campanyes que saturen només el catàleg, desplegaments setmanals amb por, equips que es trepitgen al mateix codi. Per això la seva història és una història de migració. Però un TechCorp de quatre persones i mil comandes al mes s'hauria de quedar al seu monòlit, idealment modular, i ser feliç.
Errors Comuns i Consells
- Confondre monòlit amb codi dolent. Un monòlit pot estar impecablement organitzat. Si el problema és que el codi és un caos, la solució és refactoritzar cap a un monòlit modular, no repartir el caos per la xarxa.
- Comparar un monòlit real amb uns microserveis idealitzats. És fàcil guanyar el debat si es compara el monòlit heretat ple de deute tècnic amb un diagrama net de serveis. Compara amb la mateixa honestedat: els microserveis també acumulen deute, només que distribuït.
- Oblidar el cost inicial. La taula comparativa mostra que els microserveis paguen per endavant. Si el projecte necessita lliurar valor en setmanes, aquest cost pot ser prohibitiu.
- Pensar que les transaccions "se substitueixen" sense més. El pas d'"una transacció que ho fa tot" a "diversos serveis sense transacció comuna" és la part més difícil de la comparació i mereix la màxima atenció en el disseny.
- Consell: en avaluar un canvi funcional, fes l'exercici de l'apartat 5 mentalment: recorre els passos en la teva arquitectura actual i en l'alternativa. És la manera més ràpida de detectar on són els costos reals.
Exercicis
Exercici 1: Classificar arquitectures
Per a cada descripció, indica si es tracta d'un monòlit clàssic, un monòlit modular o microserveis, i justifica-ho amb la taula de l'apartat 2.
- Una aplicació Node.js en un únic repositori, dividida en carpetes
clients/,cataleg/,comandes/, cadascuna amb el seu propi conjunt de taules a què les altres carpetes només accedeixen a través de funcions públiques del mòdul; es desplega com un únic procés. - Sis processos Node.js independents, cadascun amb la seva base de dades, que es comuniquen per HTTP i RabbitMQ i es despleguen per separat.
- Una aplicació Java desplegada com un únic fitxer
.waren què qualsevol classe pot executar consultes SQL sobre qualsevol taula.
Exercici 2: Recórrer un canvi
La Marta demana una altra funcionalitat: llista de desitjos (un client pot desar productes per a més endavant i rebre un correu si baixen de preu). Descriu, en format de llista de passos com a l'apartat 5, com s'implementaria al monòlit actual de TechCorp i a la versió de microserveis. Assenyala en cadascun el pas més costós.
Exercici 3: Defensar el monòlit
Un company afirma: "Els monòlits són cosa del passat; qualsevol projecte seriós avui hauria de començar amb microserveis". Escriu tres arguments, recolzats en la taula de l'apartat 3, per rebatre'l.
Solucions
Exercici 1
- Monòlit modular. Una unitat de desplegament, però amb límits explícits entre mòduls i dades "privades" per mòdul. És exactament el punt intermedi descrit.
- Microserveis. Diverses unitats de desplegament, base de dades per servei, comunicació per xarxa.
- Monòlit clàssic (i probablement amb tendència a bola de fang). Una unitat de desplegament i accés indiscriminat a les dades.
Exercici 2 (una solució possible)
Monòlit:
- Migració: taula
llista_desitjos (client_id, producte_id, preu_en_el_moment). - Endpoints a les rutes de clients per afegir i llistar desitjos, amb un
JOINaproductesper mostrar nom i preu actual. - En actualitzar el preu d'un producte (mòdul de catàleg), consultar
llista_desitjosi cridar la funció de notificacions per enviar el correu, tot al mateix procés. - Proves de l'aplicació completa; desplegament setmanal. Pas més costós: el desplegament conjunt i les proves lentes; el desenvolupament en si és senzill.
Microserveis:
- Decidir on viu la llista de desitjos: probablement a
servei-clients(és una preferència del client). servei-clientsafegeix la seva taula i els seus endpoints; per mostrar nom i preu actual ha de cridarservei-catalego desar una còpia local actualitzada per esdeveniments.servei-catalegpublica un esdevenimentproducte.preu-canviat;servei-clientsel consumeix, busca qui tenia aquest producte a la seva llista i publica alguna cosa comdesig.baixada-preu;servei-notificacionsel consumeix i envia el correu.- Contractes: definir els dos esdeveniments nous i els seus camps.
- Desplegaments independents de catàleg, clients i notificacions, en aquest ordre. Pas més costós: decidir com obté clients les dades del producte (crida síncrona enfront de còpia per esdeveniments) i dissenyar la cadena d'esdeveniments; cal pensar en fallades i duplicats.
Exercici 3 (arguments possibles)
- Cost inicial: un monòlit lliura valor en dies amb un servidor i una base de dades; els microserveis exigeixen contenidors, orquestració, missatgeria i observabilitat abans de la primera funcionalitat. Per a un projecte nou, el risc més gran del qual és no trobar mercat, aquest cost és difícil de justificar.
- Dades i rendiment: en un monòlit, una transacció i un
JOINresolen problemes que en microserveis requereixen sagues, duplicació de dades i crides per xarxa amb latència. Mentre el domini no estigui clar, aquesta simplicitat val or. - Equips: els avantatges d'autonomia dels microserveis només apareixen quan hi ha diversos equips que es destorben. Amb un únic equip petit no hi ha a qui deixar de destorbar, i sí que hi ha molts més serveis a operar. A més, un monòlit modular ofereix límits clars sense cost de xarxa i deixa oberta la porta a extreure serveis més endavant.
Conclusió
En aquesta lliçó hem definit el monòlit com una única unitat de desplegament amb una base de dades compartida i crides internes en memòria, i hem presentat el monòlit modular com una variant disciplinada que combina la senzillesa operativa del monòlit amb límits interns clars. La comparació dimensió a dimensió ha mostrat un patró consistent: el monòlit és barat i simple al principi i es complica en créixer, mentre que els microserveis paguen un cost inicial alt a canvi de mantenir acotada la complexitat de cada peça i permetre desplegaments, escalat i equips independents. El recorregut del canvi "cupons de descompte" ha fet tangible on apareixen les dificultats en cada cas: al final del cicle al monòlit, al principi als microserveis. I hem deixat clar que el monòlit no és una arquitectura de segona: és l'opció correcta per a molts sistemes.
Amb aquesta comparació a la mà, ja podem abordar la pregunta que de debò importa a la pràctica: quan convé adoptar microserveis i quan no? La lliçó següent dona criteris concrets, senyals d'alarma, prerequisits i una llista de comprovació per prendre aquesta decisió amb fonament.
Curs de Microserveis
Mòdul 1: Introducció als Microserveis
- Conceptes Bàsics de Microserveis
- Avantatges i Desavantatges dels Microserveis
- Comparació amb l'Arquitectura Monolítica
- Quan Adoptar Microserveis: Criteris de Decisió
- El Cas Pràctic del Curs: la Botiga Online de TechCorp
Mòdul 2: Disseny de Microserveis
- Principis de Disseny de Microserveis
- Descomposició d'Aplicacions Monolítiques
- Definició de Bounded Contexts
- Gestió de Dades: una Base de Dades per Servei
- Consistència Distribuïda: Sagues, CQRS i Event Sourcing
Mòdul 3: Comunicació entre Microserveis
- APIs RESTful
- Missatgeria Asíncrona
- Protocols de Comunicació: gRPC, GraphQL
- API Gateway i Backend for Frontend
- Descobriment de Serveis i Balanceig de Càrrega
- Contractes i Versionat d'APIs
Mòdul 4: Implementació de Microserveis
- Elecció de Tecnologies i Eines
- Desenvolupament d'un Microservei Simple
- Gestió de Configuració
- Integració Pràctica: Consumir APIs i Publicar Esdeveniments
- Proves en Microserveis: Unitàries, d'Integració i de Contracte
Mòdul 5: Desplegament i Orquestració
- Contenidors i Docker
- Orquestració amb Kubernetes
- CI/CD per a Microserveis
- Estratègies de Desplegament: Rolling, Blue-Green i Canary
- Service Mesh: Istio i Linkerd
Mòdul 6: Monitoratge i Manteniment
- Monitoratge i Logging
- Traçabilitat Distribuïda amb OpenTelemetry
- Gestió d'Errors i Recuperació
- Escalabilitat i Rendiment
- SLOs, Alertes i Gestió d'Incidents
Mòdul 7: Seguretat en Microserveis
- Autenticació i Autorització
- Seguretat en la Comunicació
- Pràctiques de Seguretat
- Seguretat en Contenidors i Kubernetes
