Service Mesh es una capa de control ideada para dotar de una comunicación enriquecida a los microservicios de forma que se facilite la administración, trazabilidad, aplicación de algunos patrones, etc.
12. Poniendo en contexto service mesh
1 Historia / contenedores
Docker se ha convertido en el nuevo POSIX, en la nueva interfaz universal.
Donde antes se ponían máquinas virtuales para aislamiento, etc. Ahora se
ven cada vez más contenedores.
Hypervisor + SO
SO SO
SO
13. Poniendo en contexto service mesh
1 Historia / contenedores
Donde antes solo había unas pocas VMs,
empezamos a tener muchos contenedores:
Pets vs Cattle!
15. Poniendo en contexto service mesh
1 Historia / orquestadores
Qué aportan?
● Distribución inteligente de los contenedores
● Número objetivo de contenedores
● Service discovery basado en DNS
● Balanceo L3/L4
● ...
16. Poniendo en contexto service mesh
1 Historia / orquestadores
Qué no aportan?
● Control sobre degradación (y propagación de la degradación)
● Gestión de cambios de topología
● Balanceo del lado del cliente
● ...
17. Poniendo en contexto service mesh
1 Historia / computación distribuida
Computación altamente distribuida:
No se puede confiar en la red
18. Poniendo en contexto service mesh
1 Historia / computación distribuida
1. The network is reliable.
2. Latency is zero.
3. Bandwidth is infinite.
4. The network is secure.
5. Topology doesn't change.
6. There is one administrator.
7. Transport cost is zero.
8. The network is homogeneous.
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
19. Poniendo en contexto service mesh
Service mesh
Poniendo en contexto service mesh
2
20. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Todo lo que no nos aportaban los orquestadores, se conseguía en forma de
librerías u otros microservicios.
Apareciendo frameworks enteros orientados a mejorar la resiliencia de
aplicaciones.
21. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Aparece para springboot:
● spring-cloud-netflix-hystrix
● spring-cloud-netflix-zuul
● spring-cloud-netflix-eureka-client
● spring-cloud-netflix-ribbon
● spring-cloud-netflix-atlas
● spring-cloud-netflix-spectator
● spring-cloud-netflix-hystrix-stream
22. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Aparece para vert.x:
● vertx-circuit-breaker
● vertx-service-discovery
● vertx-dropwizard-metrics
● vertx-zipkin
23. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Y para go, python, nodejs... y un largo etc.
24. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Es decir, que para un largo número de lenguajes se tenían que desarrollar
estrategias de:
● Service discovery
● Load balancing
● Circuit breaking
● Retries
● ...
25. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Alternativas?
Service mesh
26. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Una infraestructura de software dedicada para
manejar la comunicación entre microservicios.
27. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Hay dos formas de desplegar un service mesh (1/2):
- Con un proxy por host:
28. Poniendo en contexto service mesh
2 Service mesh / Qué es?
POD: Unidad lógica básica de kubernetes
POD
Container
Container
Container
· IP
· Hostname
· Volúmenes
· Destino
compartido
29. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Hay dos formas de desplegar un service mesh (2/2):
- Como sidecar de un contenedor:
30. Poniendo en contexto service mesh
2 Service mesh / Qué es?
Dentro de un service mesh, se distinguen dos planos:
● Plano de datos
● Plano de control
32. Poniendo en contexto service mesh
2 Service mesh / Plano de datos
A alto nivel, la responsabilidad del plano de datos es asegurar que las
solicitudes sean entregadas desde el microservicio A al microservicio B.
Proporciona las siguientes funcionalidades:
● Service Discovery
● Comprobación de disponibilidad (Health check).
● Enrutamiento y balanceo de carga: time-out, reintentos,
circuit-breaker, fail-over…
● Securización y control de acceso (autenticación / autorización).
● Métricas, monitorización, logging y trazabilidad distribuidos…