# Service mesh

> Una capa que maneja cómo se hablan los microservicios, por fuera del código.

- Nivel: Avanzado
- Temas: Cloud
- URL: https://tidbit.legios.com.ar/es/service-mesh/
- En inglés: [Service mesh](https://tidbit.legios.com.ar/service-mesh/)

Un **service mesh** (malla de servicios) es infraestructura que se mete entre los servicios de un sistema de microservicios y administra cada llamada que se hacen entre ellos. En vez de que cada equipo escriba su propio código para reintentos, timeouts, cifrado y métricas, la malla lo resuelve igual para todos, por fuera del código de la aplicación.

El diseño clásico pone un proxy chico, un **sidecar**, al lado de cada instancia de un servicio, en general dentro del mismo pod de Kubernetes. El servicio cree que llama directo a otro servicio, pero el pedido en realidad pasa por su sidecar, cruza la red y entra por el sidecar del otro lado. Todos los sidecars juntos forman el **plano de datos** (data plane). Un **plano de control** (control plane) los configura desde un lugar central: qué servicio puede llamar a cuál, cuánto tráfico va a una versión nueva, qué certificados usar. Los diseños más nuevos sacan el sidecar por pod y comparten proxies por nodo para ahorrar recursos.

Lo que ganás: TLS mutuo entre todos los servicios sin tocar el código, reglas finas de tráfico útiles para canary releases, reintentos automáticos y telemetría pareja para la observabilidad. Lo que cuesta: otro sistema complejo para operar, latencia extra en cada salto y más memoria. Suele convenir con decenas o cientos de servicios, no con cinco. **Istio** y **Linkerd** son las mallas open source más conocidas.

## Una analogía

Como darle a cada oficina de una empresa grande su propio asistente que maneja todo el correo. La gente solo dice "mandá esto a contaduría"; los asistentes se ocupan de los sobres cerrados, de reintentar cuando nadie contesta y de anotar todo, siguiendo reglas que pone una oficina central.

## Para quedarse

- Saca reintentos, timeouts, cifrado y métricas del código y los lleva a la capa de red.
- Plano de datos: proxies al lado de cada servicio. Plano de control: la configuración central.
- Da TLS mutuo, reparto de tráfico y telemetría uniforme.
- Suma latencia y complejidad operativa; rinde a escala grande.

## Para seguir leyendo

- [¿Qué es una malla de servicios? (AWS)](https://aws.amazon.com/es/what-is/service-mesh/)
- [What is a service mesh? (Istio, en inglés)](https://istio.io/latest/about/service-mesh/)
- [Service mesh en Wikipedia (en inglés)](https://en.wikipedia.org/wiki/Service_mesh)

## Términos relacionados

- [Microservicios](https://tidbit.legios.com.ar/es/microservices/): Construir una aplicación como muchos servicios chicos que hacen una sola cosa cada uno.
- [Cifrado](https://tidbit.legios.com.ar/es/encryption/): Mezclar datos para que solo quien tiene la clave pueda leerlos.
- [Proxy](https://tidbit.legios.com.ar/es/proxy/): Una computadora intermediaria que hace pedidos en nombre de otro.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
- [Certificado TLS](https://tidbit.legios.com.ar/es/tls-certificate/): La credencial que un sitio le muestra a tu navegador para probar que es quien dice ser.
- [Canary release](https://tidbit.legios.com.ar/es/canary-release/): Lanzar una versión nueva primero a pocos usuarios y ampliar solo si anda bien.
- [Observabilidad](https://tidbit.legios.com.ar/es/observability/): Poder saber qué está haciendo un sistema en marcha, y por qué, a partir de lo que emite.
- [Ancho de banda y latencia](https://tidbit.legios.com.ar/es/bandwidth-and-latency/): Cuántos datos entran por segundo, y cuánto tarda cada viaje. Dos cosas distintas.
