b4t2 - Microservicios Flashcards
Cómo definirías un microservicio?
Pueden tener tecnologías de desarrollo distintas, incluso bbdd distintas
Qué es DDD?
Domain Driven Design
Se separan las áreas de negocio, se hace un microservicio (con varias operaciones) por cada área, con su propia bbdd (como el CommercialManager, PolicyManager, UserManager…)
Se puden desplegar en plataformas diferentes e independientes. Por tanto son escalable
Tiene pegas como, latencia, errores de red, sobrecarga de operaciones, trazabilidad de los errores o resolución de incidencias.
De qué dos formas se pueden comunicar los microservicios entre sí?
Síncrono
- Petición - respuesta
Asíncrono
- Petición - respuesta -> Colas de mensajes
- Dirigido por eventos -> Suscripción a temas
- Datos compartidos -> En una tabla base de datos o un fichero, menos usado
Qué tecnologías o protocolos se usan para comunicar microservicios
SOAP
REST
gRPC -> Opensource, hecho por Google, basado en HTML2, permite streaming. Usa Protocol Buffer (equivalente al wsdl en soap) que son archivos .proto
RMI
Qué es ProtocolBuffer
Es el equivalente en el wsdl en soap, pero para gRPC
Usa ficheros .proto, donde se definen las operaciones, los mensajes de entrada y salida, que luego se compila con proto compiler (comando protoc)
Qué es un broker de mensajes?
Indica 5 productos
Son intermediarios entre los microservicios para comunicación asíncrona (colas de mensajes, topics)
- Apache Kafka
- Confluent
- Apache ActiveMQ
- Rabbit MQ
- Google Cloud Pub/Sub
En el primer enfoque microservicios 1.0 qué herramientas se usaban y que liberó Netflix
Zuul -> Implementación del patrón de diseño Api Gateway
Ribbon -> Balanceo de clientes a los distintos nodos donde están replicados los microservicios
Hystrix -> Para la gestión de errores en cascada, que implementa el patrón CircuitBraker
Eureka -> Catálogo donde se registran los microservicios para encontrarlos
Spring coud -> Es una capa para manejar de forma más facil los anteriores
Qué es el patrón CircuitBraker
Para gestionar los errores y que no se propaguen en cascada entre los microservicios.
Para implementar las pólíticas de reintentos, políticas de espera ante time out, qué hacer ante fallos.
Tiene tres estados para el circuito de servicios
Cerrado, medio abierto y abierto -> deja pasar las peticiones, porque está todo arriba, cuando hay un error hace política de reintentos pero mientras no deja pasar más peticiones, hasta que esté el circuito cerrado de nuevo
En qué se basa el enfoque de microservicios 2.0?
Ya no hay que usar las herramientas tipicas del 1.0 como Zuul, Hystrix, Ribbon, Eureka, SpringCloud… sino que se instala Instio, que es una solución basada en Service Mesh
El proxy que hay que meter en los microservicios (el sidecar-proxy) es Envoy
Service Mesh, qué es
Service Mesh -> Tecnología para abordar las complejidades de las arquitecturas de microservicios, que ya no tienen que hacerla los microservicios (plano de control). En los microservicios se incluye un Proxy que se comunica con el Service Mesh
Qué funcionalidades y productos hay en Service Mesh
- Abstracción de complejidad a los desarrolladores -> envoy
- Centralización de control -> Istio, maistra, linkerd
- Trazabilidad de una solicitud entre varios servicios, distributed tracing, monitorizar transacciones distribuidas -> JAEGER, Zipkin server
- Observabilidad de telemetría de los servicios, topología, salud, métricas… -> Elasticsearch, kiali, grafana, prometheus
En microservicios, al estar los datos muy distribuidos no se puede garantizar ACID. Qué tres formas se usan para realizar transacciones?
CQRS
Transacciones distribuidas 2PC (2 phase commit)
SAGA
En qué consiste el patrón CQRS?
Command-query separation
Separa del CRUD la R
Es decir, separa las consultas de las escrituras en distintos sevicios, para flexibilidad en la escalabilidad en las lecturas
En qué consiste el patrón Two Phase Commit - 2PC
Una fase para comunicar las bbdd involucradas para ver si están listas y otra para hacer el commit propiamente dicho
En qué consiste el patrón SAGA
Se trata de hacer transacciones compensatorias para hacer rollback