Arquitectura y Funcionamiento

Sensedia Service Mesh es nuestra solución para la gestión de microservicios. Él abstrae los problemas de red involucrados en la comunicación entre servicios y permite la aplicación rápida y sencilla de políticas de enrutamiento, seguridad e implementación de diferentes versiones de servicios. También ofrece herramientas de observabilidad, con visualización de telemetría y datos de seguimiento, todo a través de una interfaz gráfica intuitiva y de bajo código.

Esta página muestra un resumen de la arquitectura y del funcionamiento del producto. En las siguientes páginas, puede leer acerca de cómo utilizar cada función de Sensedia Service Mesh y sacar el máximo provecho de ellas.

Conceptos

Para entender lo que Sensedia ofrece, es importante tener una idea de los conceptos detrás de las mallas de servicios y los problemas que buscan resolver.

Arquitectura de microservicios y mallas de servicios

La arquitectura de microservicios postula el desarrollo de aplicaciones no como un todo unificado, el llamado monolito, que se construye e implementa a la vez. En cambio, las aplicaciones compuestas de microservicios forman un sistema distribuido, dividido en muchas partes más pequeñas que normalmente se comunican a través de HTTP.

Esto permite que cada microservicio se desarrolle individualmente, bajo la responsabilidad de un equipo de desarrollo más pequeño — con libertad de elección de tecnología y lenguaje de programación — e implementado de forma autónoma, lo que facilita el mantenimiento de la aplicación como un todo.

Sin embargo, como cualquier estilo arquitectónico, los microservicios generan problemas específicos que deben ser abordados de manera holística para sacar el máximo provecho de sus enormes beneficios.

Estos problemas se refieren principalmente a la comunicación entre servicios, en particular las reglas de detección, enrutamiento y seguridad. De manera simplificada, la pregunta es definir cómo los servicios «sabrán» qué otros servicios forman parte de la aplicación, con qué otros servicios pueden comunicarse directamente y qué acciones se permiten dentro de esa red.

Las mallas de servicios se utilizan exactamente para solucionar estos problemas de red. Se caracterizan como una capa de infraestructura que proporciona control central para un sistema distribuido. Por lo tanto, es posible definir de forma declarativa el comportamiento de la red, la identidad de los nodos (nodes) y el flujo de tráfico a través de políticas.[1]

Además de gestionar aplicaciones ya desarrolladas como microservicios, las mallas de servicios son una gran opción para modernizar las aplicaciones monolíticas sin tener que reprogramarlas, ya sea creando un frente de microservicios para acceder a la aplicación y aumentar su funcionalidad a través de nuevos servicios, o establecer oportunidades de romper el monolito en porciones más pequeñas. Es decir, las mallas de servicio le ayudan a administrar e integrar los sistemas legados.

Sensedia Service Mesh

Sensedia Service Mesh permite la creación de políticas de tráfico y seguridad para un grupo de microservicios controlado centralmente (y este grupo se denomina malla, o mesh). Todo el sistema es observable y genera gráficos para que pueda realizar un seguimiento de cómo funcionan sus aplicaciones.

Al mismo tiempo, se integra plenamente con Sensedia API Platform, que se encarga del tráfico Norte-Sur (para dentro y fuera de las mallas), mientras que Sensedia Service Mesh controla el tráfico Este-Oeste, es decir, la comunicación entre servicios.

Su mayor ventaja es que todo esto se puede hacer a través de una interfaz gráfica intuitiva, que facilita el trabajo de los equipos de desarrollo y operaciones, pero también admite configuraciones de kubectl, aprovechando la experiencia del usuario con la línea de comandos.

Arquitectura

Nuestro producto fue desarrollado a partir de Istio y se ejecuta en Kubernetes.

Istio es una malla de servicios de código abierto para ejecutar un sistema de microservicios distribuido. Para obtener más información al respecto, consulte la documentación específica aquí.

Abstraemos las características de Istio, permitiendo el acceso a ellas a través de una interfaz gráfica, agregamos gestión de usuarios y herramientas adicionales integradas para el seguimiento y visualización de métricas que necesitarían, al trabajar directamente con Istio, de aplicaciones de terceros.

Esta abstracción permite la integración directa con las funcionalidades de Sensedia API Platform con la implementación de Istio.

Funcionamiento

Este diagrama representa, de forma simplificada, el funcionamiento de Sensedia Service Mesh:

diagram en

La plataforma API de Sensedia expone servicios a través de APIs, el API Gateway acepta el tráfico procedente del exterior y lo distribuye en el sistema: tráfico Norte-Sur (para dentro y fuera de una malla). Desde allí, Sensedia Service Mesh se encarga del tráfico entre servicios (Este-Oeste).

La capa de control configura proxies de microservicios con políticas aplicadas por la interfaz de Sensedia Service Mesh. Estas políticas combinan reglas de seguridad (con distribución de certificados al sistema), descubrimiento de servicios, y enrutamiento de tráfico. El sistema es observable a través de encabezados siguiendo la especificación OpenTracing y propagados con la comunicación entre servicios. Estos encabezados alimentan gráficos de métricas y recopilaciones de seguimiento.

Además de estas capacidades de gestión y visualización, el sistema de descubrimiento y enrutamiento de tráfico de Istio le permite implementar diferentes versiones de un servicio al mismo tiempo. Esto le permite crear fácilmente Canary Releases definiendo reglas para separar el tráfico de una versión a otra del producto, ya sea por porcentaje de peticiones o por control de encabezados. También puede probar nuevas versiones de servicios sin afectar al tráfico real, dirigiendo algunas de las peticiones ya manejadas por un servicio a otra versión del servicio, que no tendrá que responder a la petición (lo que se denomina traffic shadowing).


1. Calcote, Lee; Butcher, Zack. Istio Up & Running: using a service mesh to connect, secure, control, and observe. Sebastopool: O’Reilly, 2020.
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]