La malla de servicios se utiliza para gestionar la comunicación entre microservicios dentro de una aplicación distribuida. Actúa como una capa de infraestructura dedicada que maneja la comunicación entre servicios y proporciona capacidades como descubrimiento de servicios, equilibrio de carga, gestión del tráfico, políticas de seguridad y observabilidad. Al abstraer la complejidad de la red del código de la aplicación, la malla de servicios simplifica la comunicación del servicio, mejora la confiabilidad y permite funciones avanzadas como interrupción de circuitos y reintentos. Las arquitecturas de malla de servicios suelen utilizar servidores proxy complementarios (como Envoy o Linkerd) implementados junto con cada microservicio para gestionar el enrutamiento del tráfico y la aplicación de políticas de forma transparente.
Debería considerar el uso de una malla de servicios en escenarios en los que tenga una arquitectura de microservicios compleja con múltiples servicios que se comunican a través de una red. Las mallas de servicios son particularmente beneficiosas en entornos que requieren alta confiabilidad, escalabilidad y observabilidad. Proporcionan control centralizado sobre la comunicación de servicios, lo que permite una implementación fluida de nuevos servicios, escalamiento dinámico y gestión eficiente del tráfico en implementaciones distribuidas. La malla de servicios también facilita la implementación de medidas de seguridad como el cifrado mutuo TLS (Transport Layer Security) entre servicios, lo que garantiza la confidencialidad e integridad de los datos.
La función principal de una malla de servicios es mejorar la confiabilidad, seguridad y observabilidad de la comunicación de microservicios. Lo logra interceptando y gestionando el tráfico entre servicios, aplicando políticas de comunicación y proporcionando visibilidad de las interacciones de los servicios y las métricas de rendimiento. Las arquitecturas de malla de servicios suelen incluir componentes para el descubrimiento de servicios (para localizar los servicios disponibles), el equilibrio de carga (para distribuir el tráfico de manera uniforme) y la telemetría (para monitorear y registrar el comportamiento del tráfico). Al descargar estas responsabilidades de los microservicios individuales, la malla de servicios mejora la resiliencia general del sistema y la eficiencia operativa.
Para utilizar una malla de servicios en una arquitectura de microservicios, normalmente implementa una implementación de malla de servicios junto con sus microservicios. Luego, cada instancia de microservicio se empareja con un proxy complementario, que intercepta el tráfico entrante y saliente. Los servidores proxy secundarios se comunican entre sí y con un plano de control centralizado, que gestiona la configuración, la aplicación de políticas y la supervisión en toda la red de servicios. La configuración de reglas de enrutamiento, estrategias de equilibrio de carga, políticas de interrupción de circuitos y medidas de seguridad (como TLS mutuo) generalmente se administra a través del plano de control, lo que proporciona una forma centralizada de configurar y aplicar el comportamiento de comunicación en todo el entorno de microservicios. Este enfoque garantiza una comunicación consistente y confiable entre microservicios al tiempo que permite funciones avanzadas para la gestión del tráfico y la observabilidad en implementaciones distribuidas.