Microservicios Flashcards
Consideraciones generales de microservicios
- Micro –> Funcionalidad muy acotada, pero ojo, no tiene porque ser pequeño en tamaño y desarrollo.
- Cajas negras que tienen una funcionalidad definida y producen un resultado.
- Arquitecturas Orientada a Servicios SOA/ESB
- DDD –> Domain Driven Design
- Acoplamineto (Mal)
- Cohexión (Bien)
- Como lo tres mosqueteros, todos a una pero haciendo lo que cada uno sabe hacer bien, sin saber que hace el otro.
- Eventos/Sincrona, por un lado se lanzan, por otro cada microservicio decide a que eventos suscribirse.
- Comunicación Asincrona
- Las comunicaciones pueden ser:
- Sincronas
- Asincronas
¿Qué es Nexus? ¿Y Artifactory?
Es un repositorio de empresa, con los productos corporativos que se pueden usar.
Ej.: Tienes un Maven de empresa con las librerias que se pueden usar.
¿Con qué tecnología se comunican los microservicios
- RPC
- SOAP (no se usa pero no está prohibida)
- RMI
- gRPC
- GraphQL
Productos para intercambio de mensajes (Brokers de mensajes)
- Kafka
- Amazon SQS (simple queue service)
- RabbitMQ
- ActiveMQ
- ZeroMQ
- Google Cloud Pub/Sub
Arquitecturas de microservicios
- API Gateway (Clásica)
- Spring Cloud (recubrimiento de librerias de Netflix)
- Eureka / Relilience4j –> Services Discovery Pattern / Circuit Breaker
- Ribbon –> Load Balancing Pattern
- Zuul –> API Gateway Pattern
- Hystrisx –> Circuit Braker Pattern
- Quarkus
- MicroNaut
- Spring Boot
- Spring Cloud (recubrimiento de librerias de Netflix)
- Service Mesh (Más moderna) –> Para problemas más complejos pero se sigue usando la ‘clasica’ para otros problemas. Solo nos preocupamos de nuestro negocio, el resto de problemas lo soluciona la “malla”. Productos:
- Envoy (Proxy)/ Istio (malla)
- LinkedRD
¿Qué es Microprifile?
Estandard que implementa Spring boot/Micronaut/Quarkus
Lista de frameworks para microservicios
- Spring Boot
- Flasks (Python)
- NodeJS ( Javascript)
- Aspire (.net)
De que se compone la observabilidad de microservicios
- Cuadro de mando general –> Grafana
- Centralizar Logs –> ELK (ElasticSearch-Logstash-Kibana)
- Generación de Metricas –> Prometheus, Datadog
- Generación de Trazas distribuidas –> Jaeger, Sleuth, Zipkin
NOTA: Libreria java para gestión de observabilidad Apache Lucen
¿Qué es ELK?
ElasticSearch-Logstash-Kibana
- ElasticSearch –> Indexa
- Logstash –> Recoge y agrupa
- Kibana –> Visualiza
Patrón SAGA
- SAGA (gestion distribuida de las transacciones locales de cada microservicio)
Patrón CQRS
Command Query Responsibility Segregation
De un microservicio que raliza funciones de consulta y modificación –> es separarlos.
Qué caso de uso resuleve el patron CQRS
Separar en dos microservicios diferentes, la parte de consultas de la parte de modificaciones.
NOTA: Los almacenamientos de ambos tendrán que estar sincronizados
Caso de uso del patron Circuit Breaker
Desconectar el microservicio que falla, hacer politica de reintentos y volverlo a conectar cuando vuelva a estar activo
Uso del producto ELK y Jaeger
- ELK
- ElasticSerarch (indexador basado en Lucene)
- Logstash (agregador de logs)
- Kibana (cuadro de mandos / visualizador)
- Jaeger–> Generación de trazas distribuidas (patron)
Uso del producto Zuul
Implementación del Patron API Gateway (autenticación, enrutado, cache,….)
Productos para implementar un modelo Mesh
- Istio + Envoy (proxy)
- Linkerd