Arquitectura de Software Technology

¿Qué es Service Mesh?

Service Mesh se presenta como la respuesta a este desafío, una infraestructura de software dedicada a manejar la comunicación entre microservicios. En lugar de sobrecargar cada microservicio con «inteligencia adicional», la malla de servicios ofrece un conjunto de características que descargan estas tareas a una capa de infraestructura, manteniendo así el código del servicio independiente.

Funcionalidades de Service Mesh

  1. Disponibilidad Garantizada:

    • Patrones de Circuit-breaking.
    • Reintentos y timeouts.
    • Gestión de errores.
    • Balanceo de carga y failover.
  2. Descubrimiento de Servicios:

    • Registros de servicio dedicados para localizar endpoints.
  3. Capacidades de Enrutamiento:

    • Dirige peticiones a diferentes versiones de servicios.
  4. Observabilidad:

    • Métricas, monitorización, logging y trazabilidad distribuidas.
  5. Seguridad:

    • TLS para seguridad en la transmisión.
    • Autenticación y autorización.
  6. Despliegue:

    • Soporte nativo para contenedores (Docker, Kubernetes).
  7. Protocolos de Comunicación:

    • HTTP/1.1, HTTP/2, gRPC, entre otros.

Elevando la funcionalidad con Patrón Sidecar

Service Mesh adopta el patrón Sidecar, donde un proceso paralelo (sidecar) mejora la funcionalidad del proceso principal sin acoplamiento directo. Este enfoque, similar a un proxy, proporciona servicios de infraestructura esenciales al proceso principal, como descubrimiento de servicios y circuit breakers.

Este patrón es particularmente útil cuando se utiliza Kubernetes como plataforma de orquestación de contenedores. En Kubernetes se utilizan los “pods”, cada uno de los cuales está compuesto por uno o más contenedores de aplicaciones.

Planos

1. Plano de Datos (Data Plane)

En una malla de servicios, el plano de datos hace referencia al proxy-sidecar que se despliega junto con cada servicio para facilitar su comunicación con otros servicios del sistema.

Características: 

  • Conjunto de sidecars que garantizan conectividad subyacente.
  • Descubrimiento de servicios. 
  • Securización y control de acceso
  • Comprobación de disponibilidad.
  • Enrutamiento y balanceo de carga.
  • Observabilidad

Conjunto de servicios independientes, donde cada uno está desplegado junto con un proxy-sidecar en un mismopod de Kubernetes. Además cada servicio se comunica únicamente con su propio proxy-sidecar y que, en lugar de comunicarse directamente entre ellos y que sean los sidecars los que terminan siendo los responsables de la entrega fiable de las peticiones a través de una topología o arquitectura. 

Ahora eliminaremos del esquema los propios servicios de negocio, dejando el conjunto de sidecars y la forma de intercomunicación entre ellos. 

Plano de control

Se encarga de supervisar y administrar las instancias de los proxy-sidecar, implementando políticas de control, recopilando métricas, y brindando funciones de monitorización.

Características:

  • Enrutamiento.
  • Balanceo de carga.
  • Circuit-breaker, políticas de reintentos, time-outs…
  • Despliegues.
  • Descubrimiento de servicios.

Es una pieza obligatoria para el correcto funcionamiento de un service mesh. 

¿Qué es el Istio?

Istio es una herramienta de código abierto que permite a las organizaciones ejecutar aplicaciones distribuidas y basadas en microservicios en cualquier entorno. Con Istio, las organizaciones pueden asegurar, conectar y supervisar sus microservicios para modernizar sus aplicaciones empresariales de manera rápida y segura.

Demo práctica de Istio

Exploraremos un escenario práctico con Istio, un popular service mesh:

  • Despliegue de microservicios.
  • Versiones y enrutamiento avanzado.
  • Inyección de fallos.
  • Demostración de gestión de releases.
  • Circuit Breaking y simulación de delays de red.

En CloudAPPi entendemos la importancia de mejorar la comunicación es por esto que destacamos Service Mesh, la cual redefine la forma en que los microservicios se comunican, proporcionando una solución integral para gestionar la complejidad y mejorar la confiabilidad.

Si buscas potenciar la comunicación entre tus microservicios y mejorar la confiabilidad de tus aplicaciones, te invitamos a descubrir como puedes transformar tu entorno de microservicios y llevar tus aplicaciones al siguiente nivel. 

Author

CloudAPPi