Infraestructura de comunicación de la malla de servicio

Sugerencia

Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Cloud Native .NET apps for Azure eBook cover thumbnail.

A lo largo de este capítulo, hemos explorado los desafíos de la comunicación de microservicios. Hemos dicho que los equipos de desarrollo deben ser sensibles a la forma en que los servicios back-end se comunican entre sí. Lo ideal es que cuanta menos comunicación haya entre servicios, mejor. Sin embargo, no siempre es posible evitarlo, ya que los servicios back-end a menudo dependen unos de otros para realizar operaciones.

Hemos examinado diferentes enfoques para implementar la comunicación HTTP sincrónica y la mensajería asincrónica. En cada uno de los casos, el desarrollador tiene la carga de implementar el código de comunicación. El código de comunicación es complejo y requiere mucho tiempo. Las decisiones incorrectas pueden provocar problemas de rendimiento significativos.

Una aproximación más moderna a la comunicación de microservicios gira en torno a una tecnología nueva y en rápida evolución llamada malla de servicios. Una malla de servicios es una capa de infraestructura configurable con funcionalidades integradas para controlar la comunicación entre servicios, la resistencia y muchos problemas transversales. Esta tecnología mueve la responsabilidad de estos problemas fuera de los microservicios y la lleva a la malla de servicios. La comunicación se abstrae de los microservicios.

Un componente clave de una malla de servicios es un proxy. En una aplicación nativa de nube, normalmente se coloca una instancia de un proxy con cada microservicio. Mientras se ejecutan en procesos independientes, los dos están estrechamente vinculados y comparten el mismo ciclo de vida. Este patrón, conocido como patrón Sidecar, se muestra en la figura 4-24.

Service mesh with a side car

Figura 4-24. Malla de servicios con sidecar

Observe en la ilustración anterior cómo los mensajes se interceptan mediante un proxy que se ejecuta junto con cada microservicio. Cada proxy se puede configurar con reglas de tráfico específicas del microservicio. El proxy entiende los mensajes y puede enrutarlos a través de los servicios y el mundo exterior.

Junto con la administración de la comunicación entre servicios, la malla de servicios proporciona compatibilidad con la detección de servicios y el equilibrio de carga.

Una vez configurada, una malla de servicios es muy funcional. La malla recupera un grupo correspondiente de instancias de un punto de conexión de detección de servicios. Envía una solicitud a una instancia de servicio específica y registra la latencia y el tipo de respuesta del resultado. Elige la instancia que es más probable que devuelva una respuesta rápida en función de distintos factores, incluida la latencia observada de las solicitudes recientes.

Una malla de servicios controla los problemas de tráfico, comunicación y redes a nivel de aplicación. Entiende los mensajes y las solicitudes. Normalmente, una malla de servicios se integra con un orquestador de contenedores. Kubernetes admite una arquitectura extensible en la que se puede agregar una malla de servicios.

En el capítulo 6, profundizaremos en las tecnologías de malla de servicios y explicaremos su arquitectura y las implementaciones de código abierto disponibles.

Resumen

En este capítulo se han descrito los patrones de comunicación nativos de nube. Comenzamos examinando cómo se comunican los clientes front-end con los microservicios back-end. Por el camino, hablamos de las plataformas API Gateway y de la comunicación en tiempo real. Luego, analizamos cómo se comunican los microservicios con otros servicios back-end. Hemos examinado tanto la comunicación HTTP sincrónica como la mensajería asincrónica entre servicios. Hemos hablado de gRPC, una tecnología emergente en el mundo nativo de nube. Por último, hemos presentado una tecnología nueva y en rápida evolución llamada malla de servicios que puede simplificar la comunicación de microservicios.

Se hizo especial hincapié en los servicios administrados de Azure que pueden ayudar a implementar la comunicación en sistemas nativos de nube:

A continuación, pasaremos a los datos distribuidos en sistemas nativos de nube y las ventajas y desafíos que presentan.

Referencias