En aquest tema, explorarem els principis fonamentals que guien el disseny de microserveis. Aquests principis són essencials per assegurar que els microserveis siguin eficients, escalables i fàcils de mantenir.
- Desacoblament
Explicació
El desacoblament implica que cada microservei funcioni de manera independent dels altres. Això permet que els desenvolupadors treballin en diferents serveis sense interferir-se mútuament.
Exemples
- Desacoblament de dades: Cada microservei ha de tenir la seva pròpia base de dades per evitar dependències fortes.
- Desacoblament de funcionalitats: Un microservei que gestiona usuaris no hauria de dependre directament d'un microservei que gestiona productes.
Exercici
Pregunta: Per què és important que cada microservei tingui la seva pròpia base de dades?
Resposta: Això permet que els microserveis siguin independents i puguin evolucionar o escalar de manera autònoma sense afectar altres serveis.
- Responsabilitat Única
Explicació
Cada microservei ha de tenir una única responsabilitat o funció dins del sistema. Això segueix el principi de responsabilitat única (SRP) de la programació orientada a objectes.
Exemples
- Microservei d'Autenticació: Gestiona només l'autenticació d'usuaris.
- Microservei de Pagaments: Gestiona només les transaccions de pagament.
Exercici
Pregunta: Què podria passar si un microservei té múltiples responsabilitats?
Resposta: Això podria complicar el manteniment i l'escalabilitat del servei, ja que els canvis en una funcionalitat podrien afectar altres funcionalitats dins del mateix servei.
- Escalabilitat Independent
Explicació
Cada microservei ha de poder escalar de manera independent segons les seves necessitats de càrrega.
Exemples
- Microservei de Cerca: Pot necessitar més recursos durant les hores punta.
- Microservei de Notificacions: Pot necessitar escalar quan hi ha molts esdeveniments que generen notificacions.
Exercici
Pregunta: Com ajuda l'escalabilitat independent a millorar el rendiment del sistema?
Resposta: Permet assignar recursos de manera eficient, assegurant que només els serveis que necessiten més capacitat la rebin, sense malgastar recursos en serveis que no ho necessiten.
- Comunicació a través d'APIs
Explicació
Els microserveis han de comunicar-se entre ells a través d'APIs ben definides. Això assegura que els serveis estiguin desacoblats i que la comunicació sigui clara i consistent.
Exemples
- API RESTful: Utilitzada per la majoria de microserveis per a la comunicació síncrona.
- Missatgeria: Utilitzada per a la comunicació asíncrona entre microserveis.
Exercici
Pregunta: Quins avantatges té l'ús d'APIs per a la comunicació entre microserveis?
Resposta: Facilita el desacoblament, permet la interoperabilitat entre diferents tecnologies i llenguatges de programació, i assegura que els contractes de comunicació siguin clars i estables.
- Tolerància a Fallades
Explicació
Els microserveis han de ser dissenyats per ser resilients i tolerants a fallades. Això implica que un error en un microservei no hauria de causar la fallada de tot el sistema.
Exemples
- Circuit Breaker: Un patró que ajuda a prevenir que les fallades es propaguin.
- Retry Logic: Reintentar operacions fallides després d'un cert temps.
Exercici
Pregunta: Com pot un circuit breaker ajudar a millorar la tolerància a fallades en un sistema de microserveis?
Resposta: Un circuit breaker pot detectar quan un servei està fallant i evitar que es facin més sol·licituds a aquest servei fins que es recuperi, prevenint així la propagació de l'error.
- Automatització i DevOps
Explicació
La implementació i el desplegament de microserveis han de ser altament automatitzats per assegurar una integració i un desplegament continus (CI/CD).
Exemples
- Pipelines de CI/CD: Automatitzen la construcció, les proves i el desplegament de microserveis.
- Infraestructura com a codi (IaC): Permet gestionar la infraestructura de manera programàtica.
Exercici
Pregunta: Per què és important l'automatització en el context dels microserveis?
Resposta: L'automatització redueix els errors humans, accelera els desplegaments i assegura que els processos siguin repetibles i consistents.
Conclusió
Els principis de disseny de microserveis són fonamentals per construir sistemes escalables, resilients i fàcils de mantenir. Aquests principis inclouen el desacoblament, la responsabilitat única, l'escalabilitat independent, la comunicació a través d'APIs, la tolerància a fallades i l'automatització. En el proper tema, explorarem com descompondre aplicacions monolítiques en microserveis seguint aquests principis.
Curs de Microserveis
Mòdul 1: Introducció als Microserveis
- Conceptes Bàsics de Microserveis
- Avantatges i Desavantatges dels Microserveis
- Comparació amb Arquitectura Monolítica
Mòdul 2: Disseny de Microserveis
- Principis de Disseny de Microserveis
- Descomposició d'Aplicacions Monolítiques
- Definició de Bounded Contexts