Service Mesh explicado: Cómo las mallas open-source simplifican la comunicación de microservicios
Al desarrollar en una arquitectura de microservicios, hay muchos componentes individuales que el equipo DevOps necesita configurar. Para que los microservicios trabajen juntos, requieren canales de comunicación establecidos para compartir información y transferir datos.
Una forma de gestionar y monitorizar la comunicación entre servicios es usando un service mesh.
¿Qué es un Service Mesh?
Un service mesh es una capa de infraestructura dedicada añadida a la arquitectura de microservicios. Su papel principal es asegurar comunicación rápida y segura entre servicios. Esta herramienta de baja latencia gestiona y monitoriza la comunicación y intercambio de datos entre servicios.
Consiste en un control plane desde el cual los desarrolladores implementan reglas y políticas específicas a la capa de red. El control plane trabaja directamente con el data plane, una colección de proxies sidecar que se ejecutan junto a los servicios. Estos proxies son responsables de toda la comunicación entre servicios. Adicionalmente, monitorizan y proporcionan información valiosa sobre el rendimiento general de la aplicación y ayudan a encontrar problemas potenciales y evitar downtime.
Los proxies proporcionan capacidades valiosas, incluyendo:
- Descubrimiento de servicios dinámico
- Balanceo de carga
- Health checks
- Cifrado
- Observabilidad
- Circuit breakers
- Despliegues escalonados con división de tráfico basada en porcentajes
- Autenticación
- Métricas ricas
- Autorización
El auge de la arquitectura Service Mesh
Para entender completamente cómo funciona un service mesh, necesitamos ver por qué se desarrolló tal herramienta. El auge de la arquitectura service mesh surgió como solución a varios problemas relacionados con microservicios.
Muchos equipos de desarrollo hicieron el cambio de desarrollar aplicaciones monolíticas a arquitectura de microservicios. Esto dividió una aplicación de una unidad monolítica a un sistema de servicios individuales trabajando juntos. La aplicación consiste en múltiples servicios autónomos con sus funcionalidades individuales.
La dificultad con desarrollar tal aplicación es configurar la mejor forma para que estos servicios se hablen entre sí. El rendimiento de la aplicación depende de los servicios trabajando juntos y compartiendo datos para proporcionar la mejor experiencia de usuario. Por ejemplo, una tienda web podría consistir en un servicio de login que se comunica con un servicio de compra que requiere información de una base de datos de inventario y así sucesivamente.
Como los microservicios se comunican a través de APIs, encontrar la mejor solución para resolver descubrimiento y enrutamiento era importante. Adicionalmente, los desarrolladores necesitaban asegurar que la comunicación dentro del sistema era segura. Mientras los firewalls protegían la aplicación de ataques externos, había una red plana y abierta dentro de la arquitectura de microservicios.
Antes de la arquitectura de service mesh, esta tarea era manejada por balanceadores de carga. Sin embargo, no era una solución práctica, especialmente a gran escala, debido a problemas de despliegue y coste. El service mesh se desarrolló como solución definitiva para todos los problemas mencionados. Presentó una capa de red con un registro centralizado (control plane) que gestionaba todos los servicios con sus proxies sidecar. Estos son mucho más fáciles de configurar y escalar comparados con balanceadores de carga. Los desarrolladores pueden escalar los proxies arriba y abajo según necesidad y cambiar reglas de enrutamiento sin modificar los servicios.
Beneficios del Service Mesh
Los beneficios más significativos del service mesh son:
- Seguridad mejorada – Implementar un service mesh en una arquitectura de microservicios mejora la seguridad general. Esta capa de red introduce autorización, autenticación, cifrado y aplicación de políticas automáticas. Usa mutual Transport Layer Security (mTLS) para asegurar que toda comunicación servicio-a-servicio es segura. Los servicios se identifican con sus certificados TLS para establecer una conexión. Una vez validan su identidad, establecen un canal cifrado para intercambio de datos.
- Control de tráfico y visibilidad – Una de las funciones principales de un service mesh es proporcionar control de tráfico. Gestiona tráfico este-oeste, así como tráfico entre servicios. Toda comunicación se hace a través de proxies sidecar, administrados por el control plane. El tráfico se enruta transparentemente, dando a desarrolladores mejor visibilidad de todo intercambio de datos. Con mayor insight en el rendimiento de la aplicación, es más fácil detectar problemas potenciales dentro del sistema.
- Observabilidad – Como la plataforma gestiona todo el tráfico, recopila información valiosa sobre comportamiento de tráfico e interacción de usuarios. Con tales grandes cantidades de datos, analistas de negocio pueden planificar una estrategia para mejorar la aplicación.
- Desarrolladores enfocados en desarrollo de app en lugar de redes – En lugar de que el equipo de desarrollo configure y gestione toda la capa de red, pueden implementar service mesh en la arquitectura. Aunque la plataforma requiere configuración inicial, automatiza tareas consumidoras de tiempo relacionadas con gestión de red. Esto permite a desarrolladores enfocarse en microservicios. Dejar que el service mesh gestione interacciones servicio-a-servicio ahorra tiempo y dinero mientras mejora productividad.
- Resiliencia – Un service mesh proporciona características que ayudan a crear aplicaciones de microservicios resilientes. Una tal característica es el patrón circuit breaker que ayuda a detectar fallos y picos de latencia. Adicionalmente, un service mesh usa balanceo de carga para descubrimiento de servicios y enrutamiento de tráfico a través de la red de microservicios. Otras características que añaden resiliencia incluyen reintentos, timeouts y deadlines.
- Ciclos de prueba y despliegue más rápidos – Usar proxies sidecar para comunicación pod-a-pod es mucho más simple y rápido de configurar. En lugar de codificar funciones redundantes en cada servicio, despliegan proxies y los conectan al servicio. Esto acelera los ciclos generales de desarrollo y prueba.
Lista de Service Meshes Open Source
Hay varios service meshes open source disponibles. Istio, Linkerd y Consul son los más ampliamente usados.
A continuación encontrará más detalles sobre cada plataforma.
Istio
Istio es una infraestructura open source diseñada por Google, IBM y Lyft. Es una de las primeras plataformas de service mesh. Usa Istiod, un control plane consistente en múltiples componentes (Pilot, Citadel y Mixer) para operar y configurar el service mesh. El data plane está compuesto por proxies Envoy, desarrollados en C++. Las conexiones HTTP/TCP son gestionadas por el Gateway, el balanceador de carga de Istio. VirtualService y DestinationRules definen reglas de enrutamiento y políticas.
Linkerd
Linkerd es un service mesh open source ligero, desarrollado por el proyecto Cloud Native Computing Foundation (CNCF). Es simple de instalar en un clúster Kubernetes sobre cualquier plataforma, sin configuración adicional. No tener configuración es beneficioso al trabajar con clústeres pequeños. Sin embargo, proyectos a gran escala requieren la posibilidad de configuración para gestionar todos los servicios en el clúster exitosamente.
Sus proxies sidecar están escritos en Rust. Linkerd usa el Controller para el control plane y el Web Deployment para el dashboard. Adicionalmente, utiliza Prometheus para explorar y almacenar métricas y Grafana para renderizar y mostrar dashboards.
Consul Connect
Consul fue diseñado primero como herramienta de descubrimiento de servicios y luego evolucionó a service mesh. A diferencia de Linkerd, Consul Connect incluye mucha configuración, dándole más control sobre el entorno de red. En consecuencia, es más difícil de usar que Linkerd. Este service mesh open source es platform-agnostic, significando que no requiere Kubernetes o Nomad. Aún, Nomad simplifica el proceso de gestión de comunicación de microservicios a través de Consul.
Open Service Mesh de Microsoft
Open Service Mesh (OSM) es un proyecto CNCF Envoy que implementa una interfaz de service mesh para gestionar y asegurar aplicaciones de microservicios dinámicas. Usa Envoy xDS como contenedores sidecar. Sus características principales incluyen traffic shifting, gestión de certificados, habilitación de mTLS, inyección automática de sidecar y políticas de control de acceso.
Kuma
Kuma es un control plane open source para Kubernetes y VMs ejecutándose dentro de un service mesh. Tiene arquitectura de políticas L4+L7 que implementa características como descubrimiento de servicios, enrutamiento, seguridad zero-trust y observabilidad. La plataforma es altamente escalable y fácil de configurar.
OpenShift Service Mesh Red Hat
Red Hat desarrolló su OpenShift Service Mesh para gestionar aplicaciones de microservicios. Proporciona múltiples interfaces para redes y seguridad aumentada con Security Context Constraint. Mide rendimiento con Jaeger y observa interacciones entre servicios con Kiali. Adicionalmente, OpenShift incluye el Red Hat 3scale Istio Mixer Adapter para mejor seguridad API.
AWS App Mesh
Amazon desarrolló App Mesh, un software de service mesh gratuito que gestiona todos sus servicios dentro de una arquitectura de microservicios. Proporciona alta disponibilidad y visibilidad end-to-end para su aplicación de microservicios. AWS App Mesh se integra con AWS Fargate, Amazon ECS, Amazon EC2, Amazon EKS, Kubernetes y AWS Outposts. Con sus herramientas de monitorización, exporta automáticamente datos de monitorización.
Network Service Mesh
Network Service Mesh es un proyecto CNCF Sandbox open source. Es un service mesh IP híbrido/multi-cloud que usa un conjunto simple de APIs para facilitar conectividad. Establece una conexión entre servicios ejecutándose dentro de contenedores y con endpoints externos. Cuando se implementa, requiere cambios mínimos a Kubernetes.
En conclusión
Un service mesh simplifica la gestión y mantenimiento de una aplicación desarrollada usando arquitectura de microservicios. Mejora la seguridad general dentro de la arquitectura de microservicios y asegura visibilidad y observabilidad del flujo de tráfico. En general, las características del service mesh mejoran el rendimiento y aceleran el ciclo de desarrollo. Con una amplia variedad de soluciones open source disponibles, encuentre una que se adapte mejor a las necesidades de sus aplicaciones.
Computación en la nube
- Explorando los 7 Tipos Fundamentales de Tecnología
- Entendiendo los Diversos Tipos de Prototipado: Guía para Fundadores
- Explorando los 4 Tipos Fundamentales de Procesos de Fabricación
- Dominando el Mecanizado de 5 Ejes: Precisión, Eficiencia y Aplicaciones Clave
- Explorando tipos de rodamientos: Bolas, rodillos y opciones de precisión
- ¿Por Qué Corte por Chorro de Agua? Beneficios Clave para Fabricación Metálica de Precisión
- Arenado (Sandblasting): beneficios clave para preparación de superficies y fabricación metálica
- Sirviendo el futuro: cómo los robots transforman la industria de servicios
- Descubre las Ventajas del Corte por Chorro de Agua para Fabricación de Precisión
- Top cursos cloud computing 2026: desde fundamentos AWS hasta MicroMasters de Maryland
- Propiedades Clave del Grafito: Estructura, Resistencia y Aplicaciones