Microservicios Flashcards

(44 cards)

1
Q

¿Qué enfoque tienen los microservicios?

A

El desarrollo de aplicaciones, al estilo SOA/EBS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué se busca con microservicios?

A

Conseguir una arquitectura altamente distribuida, para tener mayor escalabilidad horizontal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Inconvenientes de los microservicios

A

Complejidad en todos los sentidos, ya que no es facil trazar la lógica de negocio (trazabilidad), gestión de errores, tratamientos de logs, etc (por eso surgen patrones de diseño, para solucionar estas complejidades)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cómo deben de ser los servicios?

A
  • Cada servicio tiene que ser autónomo en el sentido del desarrollo, despliegue, etc. La arquitectura de microservicios no nos impone contenedores, pero los aconseja, dado que la arquitectura de docker le viene muy si cada servicio se va a desplegar de una forma independiente. (lenguajes distintos, bases de datos distintas, etc)
  • Cada servicio tiene que estar muy acotado, es decir, que la parte funcional sea algo muy concreto (servicio de gestión de pedidos, otro de pagos, etc). Cajas negras con funcionalidad muy definida y concreta.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿En qué consiste bounded context?

A

Es el contexto funcional que tiene cada microservicio o caja negra

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Como se identifica los bounded context de los microservicios en la fase de diseño de una aplicación?

A

Basándonos en la metodología DDD (Domain Driver Diging), que nos dice que las clases que podría haber en los distintos contextos funcionales no se dupliquen, si no que creemos una versión distinta de ellas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Diferencia entre acoplamiento y cohesión

A
  • Acoplamiento: es malo y no deseable. Si hemos hecho “cajas negras” lo que modifique en una, no debería afectar a otra
  • Cohesión: es bueno y sí deseable. Colaboración entre “cajas negras” pero con total independencia, para cumplir con un objetivo común.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cómo se consigue una buena cohesión y un bajo acoplamiento?

A

Teniendo un diseño independiente de cada microservicio y la opción de comunicar los microservicios por “eventos/mensajes”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cómo se lleva acabo la comunicación entre microservicios?

A

Hay opciones para ello y hay que elegir la que mejor venga, a nivel de publicación, es decir, lo que verían nuestros clientes (front-end):
- Opción Síncrona: es la que está basada en eventos
- Opción Asíncrona: más bien en mensajes (Resquest-Response, Event-Driven, Common Data)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ejemplos de opciones de comunicación síncrona

A
  • REST
  • gRPC: la ventaja respecto REST es que va sobre HTTP2 y al ser binario hace que tenga un alto rendimiento en la comunicación
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué son los brokers de mensajes?

A

Son intermediarios entre los microservicios para una comunicación asíncrona, es decir, gestores de cola (middlewares de mensajería)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Productos, servicios de mensajería asíncrona

A
  • Apache Kafka
  • Apache Active MQ
  • Rabbit MQ
  • ZERO MQ
  • Google Cloud Pub/Sub (Publicación/Subscripción, en modo nube)
  • Amazon Simple Queue Service (SQS)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Tipos de topologías o arquitecturas para desarrollar microservicios

A
  • API Gateway
  • Service Mesh
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿En qué consiste API Gateway?

A

Es la pieza que hace como de proxy inverso, balanceador de cargas, etc y reparte curro a los distintos microservicios (“cajas negras”), en el momento en el que alguien de a un botón en el navegador

El Gateway actúa como un punto de entrada centralizado para las solicitudes, aplicando políticas de seguridad y enrutamiento para el tráfico north-south (comunicación hacia y desde el exterior del centro de datos).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿En qué consiste Service Mesh?

A

Con Service Mesh, cada microservicio va a tener una pieza ayudante (proxy) y va a hacer todo el trabajo duro de gestión de errores, balanceo de carga, etc. En esos proxys se puede delegar toda esa infraestructura más técnica y de más bajo nivel que no es nuestra lógica de negocio

El Service Mesh se enfoca en la comunicación de servicio a servicio dentro de la arquitectura, optimizando y asegurando el flujo de tráfico east-west (comunicación dentro de un centro de datos).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Productos API Gateway (Clásico)

A
  • Zuul : soluciona el API Gateway Pattern
  • Eureka : soluciona el Service Discovery Pattern (encontrar la ubicación de otros servicios)
  • Ribbon : soluciona el Load Balancing Pattern (balanceo de carga)
  • Hystrix : soluciona el Circuit Breaker Pattern (política de reintentos)
  • Quarkus
  • Micronaut
  • Spring Boot
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Productos Service Mesh (Moderno)

A
  • Istio/Envoy : desarrollando mi microservicio sobre este producto o marco de trabajo, ya tengo las ventajas de Service Mesh. La pieza Envoy hace de proxy, y hace toda esa gestión de bajo nivel, y así en el microservicio sólo se programa la lógica de negocio. Istio es una malla de servicios de código abierto que utiliza proxies Envoy para gestionar la comunicación entre microservicios de forma segura, rápida y fiable.
  • Linkerd : Linkerd es una malla de servicios de código abierto que facilita la gestión de microservicios al agregar observabilidad, confiabilidad y seguridad sin necesidad de modificar el código de la aplicación. Se instala en clústeres de Kubernetes y funciona inyectando un micro-proxy
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿?

¿Qué es Microprofile?

A

Microprofile es equivalente a cualquier producto de la topología API Gateway (clásica), pero no es un producto, es un estándar. Es el único estandar que existe para el desarrollo de microservicios.

19
Q

¿Se pueden combinar API Gateway con Service Mesh?

A

Sí, Mesh se inventó porque con API Gateway no se cubrían bien todos los tipos de arquitectura de microservicios, pero no invalida a API Gateway

20
Q

¿Cuál es la librería de java que utiliza por debajo Elastic Search y SOLR para indexar logs?

A

APACHE LUCENE

21
Q

¿Cuáles son las patas que toca la Observabilidad?

A
  • Logs, dado que al generarse muchos logs y estar a su vez distribuidos, se tiene que hacer una centralización de todos ellos.
  • Métricas, dado que es necesario generarlas para poder medir tiempo de tardanza
  • Trazas, dado que al desencadenar la ejecución de varios microservicios, ahora es más dificil saber por donde ha pasado
22
Q

Productos para centralización de logs

A

ELK (Elastic Search - Logstash - Kibana)
- Elastic Searh: indexa logs
- Logstash: extrae logs
- Kibana: muestra logs

23
Q

Productos para centralización de métricas

A
  • Prometheus
  • Datadog
24
Q

Productos para centralización de trazas

A
  • Jaeger
  • Sleuth (de spring cloud)
  • Zipkin
25
¿Se podría incluir algún producto como cuadro de mandos?
Grafana
26
En qué consiste el patron SAGA
Es una estrategia para gestionar transacciones distribuidas en sistemas de microservicios
27
En qué consiste el patron CQRS
Es un patrón de diseño de software que separa las operaciones de lectura (consultas) de las operaciones de escritura (comandos) en una aplicación con microservicios. (Command Query Responsibility Segregation)
28
Framework para el desarrollo de aplicaciones distribuidas en .NET
.NET ASPIRE: es un marco de trabajo preparado para la nube en .NET.
29
Framework para el desarrollo de aplicaciones distribuidas en Python
Flask
30
Framework para el desarrollo de aplicaciones distribuidas en JAVA
Spring Boot, Dropwizard, Restlet, Spork
31
Dentro de la comunicación entre microservicios, en qué consiste la opción o el bloqueo síncrono
Consiste en que hago una petición, y me quedo esperando la respuesta, es decir, bloqueando mi ejecución
32
Dentro de la comunicación entre microservicios, en qué consiste cada una de las opciones de bloqueo asíncrono: - Request-Response - Event-Driven - Common Data
- Petición-Respuesta: modelo tradicional donde un servicio (cliente) envía una solicitud a otro (servidor) y espera activamente una respuesta para continuar con su ejecución. Protocolos: HTTP/REST, gRPC. Acoplamiento: Fuerte, dado que el emisor necesita conocer al receptor (URL, endpoint) y ambos deben estar disponibles al mismo tiempo. Fácil de implementar, ideal y típico en operaciones críticas donde se requiere confirmación inmediata. - Dirigido por eventos: modelo donde un servicio emite un mensaje ("evento") indicando que algo ha sucedido (ej. "OrdenCreada"), y otros servicios se suscriben a estos eventos para reaccionar de manera independiente. Protocolos: Mensajería (Kafka, RabbitMQ, RabbitMQ, Azure Service Bus). Acoplamiento: Débil (Loose coupling), ya que el emisor no sabe quién consume el mensaje ni cuándo lo procesará. Alta escalabilidad y resiliencia, pero mayor complejidad operativa y consistencia eventual - Datos compartidos: enfoque donde varios microservicios acceden a la misma base de datos. Acoplamiento: Muy fuerte, ya que, si un servicio cambia el esquema de la base de datos, puede romper los otros servicios. Facilita la consistencia fuerte y transacciones complejas inmediatas, pero se considera un anti-patrón en microservicios porque elimina la independencia de los equipos y servicios, limitando la escalabilidad. Generalmente su uso está desaconsejado, excepto en etapas de migración de un monolito
33
Opciones o posibilidades para comunicación entre microservicios de forma asíncrona mediante Request-Response
RPC, gRPC, RMI, SOAP, REST
34
Opciones o posibilidades para comunicación entre microservicios de forma asíncrona mediante Events-Driven
Apache Kafka, Apache ACTIVE MQ, RabbitMQ, Azure Service Bus, Amazon SQS, GoogleCloud Pub/Sub (modo nube), ZEROMQ
35
Comunicación entre microservicios: muy usado. HTTP 1.1
REST
36
Comunicación entre microservicios: agregador de consultas con capacidades de filtrado, con conceptos como Resolver, Queries y Mutations. Permite a los clientes definir consultas basadas en esquemas, que pueden residir en múltiples fuentes (como microservicios) - Consultas y obtienes lo que necesitas - Clientes para móviles, o Fronts (React)
GraphQL
37
Comunicación entre microservicios: muy dependiente de la tecnología (Java), pero puede aprovechar conocimiento previo
RMI
38
Comunicación entre microservicios: muy usado en la AGE por el ENI
SOAP
39
Comunicación entre microservicios: muy usado. HTTP2. Protocol Buffer
RPC/gRPC
40
Cómo se conoce a los intermediarios entre los microservicios para una comunicación asíncrona, mediante colas de mensajes o Topics, que garantizan entrega y confianza
Brokers de mensajería
41
Tecnología diseñada para abordar las complejidades de las arquitecturas de microservicios, eliminando en ellos dicha responsabilidad
Service Mesh
42
Tecnología que consiste en una puerta de entrada a los microservicios, pero aislándolos del exterior
API Gateway
43
¿Qué patrón separa R y CUD desde CRUD, y se caracteriza por las siguientes fases? - 0: Todo normal - 1: API R/W separadas - 2: Modelos separados - 3: BBDD R/W separados
CQRS (modelos con segregación de responsabilidad)
44
Patrón que nos ayuda con la gestión distribuida de transacciones locales de cada microservicio, funcionando de tal forma, que divide una transacción compleja (Long Lived Transaction LLT) en una secuencia de transacciones locales e independientes, donde cada una actualiza su propia base de datos y lanza eventos; si un paso falla, ejecuta transacciones de compensación para revertir los cambios anteriores (Reintentar o Hacer Rollback)
SAGA