¿Qué es una red de servicios? ¿Cuáles son las mallas de servicios de código abierto disponibles?
Cuando se desarrolla en una arquitectura de microservicios, hay muchos componentes individuales que el equipo de DevOps necesita configurar. Para que los microservicios funcionen juntos, requieren canales de comunicación establecidos para compartir información y transferir datos.
Una forma de administrar y monitorear la comunicación entre servicios es usar una red de servicios.
¿Qué es una red de servicios?
Una red de servicios es una capa de infraestructura dedicada agregada a la arquitectura de microservicios. Su función principal es garantizar una comunicación rápida y segura de servicio a servicio. Esta herramienta de baja latencia administra y supervisa la comunicación entre servicios y el intercambio de datos.
Consiste en un plano de control desde el cual los desarrolladores implementan reglas y políticas específicas a la capa de red. El plano de control funciona directamente con el plano de datos, una colección de proxies sidecar que se ejecutan junto con los servicios. Estos proxies son responsables de toda la comunicación entre el servicio. Además, monitorean y brindan información valiosa sobre el rendimiento general de la aplicación y ayudan a encontrar posibles problemas y evitar el tiempo de inactividad.
Los proxies brindan capacidades valiosas, que incluyen:
- Descubrimiento dinámico de servicios
- Equilibrio de carga
- Controles de salud
- Cifrado
- Observabilidad
- Disyuntores
- Lanzamientos por etapas con división de tráfico basada en porcentajes
- Autenticación
- Métricas enriquecidas
- Autorización
El auge de la arquitectura de malla de servicio
Para comprender completamente cómo funciona una red de servicios, debemos analizar por qué se desarrolló dicha herramienta. El auge de la arquitectura de malla de servicios surgió como una solución a una serie de problemas relacionados con los microservicios.
Muchos equipos de desarrollo cambiaron del desarrollo de aplicaciones monolíticas a la arquitectura de microservicios . Esto dividió una aplicación de una unidad monolítica a un sistema de servicios individuales que trabajan juntos. La aplicación consta de múltiples servicios autónomos con sus funcionalidades individuales.
La dificultad de desarrollar una aplicación de este tipo es configurar la mejor manera para que estos servicios se comuniquen entre sí. El rendimiento de la aplicación depende de que los servicios trabajen juntos y compartan datos para brindar la mejor experiencia de usuario. Por ejemplo, una tienda web podría consistir en un servicio de inicio de sesión que se comunica con un servicio de compra que requiere información de una base de datos de inventario y así sucesivamente.
A medida que los microservicios se comunican a través de las API, encontrar la mejor solución para resolver el descubrimiento y enrutamiento era importante Además, los desarrolladores debían asegurarse de que la comunicación dentro del sistema fuera segura. . Si bien los cortafuegos protegían la aplicación de ataques externos, había una red plana y abierta dentro de la arquitectura del microservicio.
Antes de la arquitectura de servicio de malla, esta tarea la realizaban equilibradores de carga. . Sin embargo, no fue una solución práctica, especialmente a mayor escala, debido a problemas de implementación y costos. La red de servicios se desarrolló como una solución definitiva para todos los problemas mencionados anteriormente. Presentó una capa de red con un registro centralizado (plano de control) que gestionaba todos los servicios con sus proxies sidecar. Son mucho más fáciles de configurar y escalar en comparación con los balanceadores de carga. Los desarrolladores pueden escalar los proxies hacia arriba y hacia abajo según sea necesario y cambiar las reglas de enrutamiento sin modificar los servicios.
Beneficios de la red de servicios
Los beneficios más significativos de Service Mesh son:
- Seguridad mejorada – La implementación de una red de servicios en una arquitectura de microservicios mejora la seguridad general. Esta capa de red introduce la autorización automática , autenticación , cifrado y aplicación de políticas . Utiliza Seguridad de la capa de transporte mutua (mTLS) para garantizar que todas las comunicaciones de servicio a servicio sean seguras. Los servicios se identifican con sus certificados TLS para establecer una conexión. Una vez que validan su identidad, establecen un canal encriptado para compartir datos.
- Control de tráfico y visibilidad – Una de las funciones principales de una red de servicios es proporcionar control de tráfico. Gestiona el tráfico este-oeste, así como el tráfico entre servicios. Toda la comunicación se realiza a través de los proxies sidecar, que son administrados por el plano de control. El tráfico se enruta de forma transparente, lo que brinda a los desarrolladores una mejor visibilidad de todo el intercambio de datos. Con una visión más clara del rendimiento de la aplicación, es más fácil detectar posibles problemas dentro del sistema.
- Observabilidad – Como la plataforma gestiona todo el tráfico, recopila información valiosa sobre el comportamiento del tráfico y la interacción del usuario. Con cantidades tan grandes de datos, los analistas de negocios pueden planificar una estrategia para mejorar la aplicación.
- Desarrolladores centrados en el desarrollo de aplicaciones en lugar de redes – En lugar de que el equipo de desarrollo configure y administre toda la capa de red, pueden implementar una red de servicios en la arquitectura. Si bien la plataforma requiere una configuración inicial, automatiza las tareas relacionadas con la administración de la red que consumen mucho tiempo. Esto permite a los desarrolladores centrarse en los microservicios. Dejar la red de servicios para administrar las interacciones de servicio a servicio ahorra tiempo y dinero al mismo tiempo que mejora la productividad.
- Resiliencia – Una red de servicios proporciona características que ayudan a crear aplicaciones de microservicio resistentes. Una de esas características es el patrón del disyuntor que ayuda a detectar fallas y picos de latencia. Además, una red de servicios utiliza el equilibrio de carga para el descubrimiento de servicios y el enrutamiento del tráfico a través de la red de microservicios. Otras características que se suman a su resiliencia incluyen reintentos, tiempos de espera y fechas límite.
- Ciclos de prueba e implementación más rápidos – El uso de proxies sidecar para la comunicación de pod a pod es mucho más simple y rápido de configurar. En lugar de codificar funciones redundantes en cada servicio, implementan proxies y los conectan al servicio. Esto acelera los ciclos generales de desarrollo y prueba.
Lista de mallas de servicios de código abierto
Hay una serie de mallas de servicios de código abierto disponibles. Istio, Linkerd y Consul son los más utilizados.
A continuación encontrará más detalles sobre cada plataforma.
Istio
Istio es una infraestructura de código abierto diseñada por Google, IBM y Lyft. Es una de las primeras plataformas de malla de servicio. Utiliza Istiod , un plano de control que consta de múltiples componentes (Pilot , Ciudadela y Mezclador ) para operar y configurar la red de servicios. El plano de datos está formado por Envoy proxies, desarrollado en C++ . Las conexiones HTTP/TCP son gestionadas por Puerta de enlace , el equilibrador de carga de Istio. El servicio virtual y Reglas de destino definir reglas y políticas de enrutamiento.
Linkerd
Linkerd es una malla de servicios de código abierto ligera, desarrollada por el proyecto Cloud Native Computing Foundation (CNCF). Es fácil de instalar en un clúster de Kubernetes en la parte superior de cualquier plataforma, sin configuración adicional. No tener configuración es beneficioso cuando se trabaja con clústeres más pequeños. Sin embargo, los proyectos de gran escala requieren la posibilidad de configuración para administrar todos los servicios en el clúster con éxito.
Sus proxies sidecar están escritos en Rust . Linkerd usa el Controlador para el plano de control y la implementación web para el tablero. Además, utilizó Prometheus para explorar y almacenar métricas y Grafana para renderizar y mostrar paneles.
Cónsul Connect
Consul se diseñó primero como una herramienta de descubrimiento de servicios y luego se convirtió en una red de servicios. A diferencia de Linkerd, Consul Connect incluye mucha configuración, lo que le brinda más control sobre el entorno de red. En consecuencia, es más difícil de usar que Linkerd. Esta red de servicios de código abierto es independiente de la plataforma, lo que significa que no requiere Kubernetes ni Nomad. Aun así, Nómada simplifica el proceso de gestión de la comunicación de microservicios a través de Consul.
Red de servicios abiertos de Microsoft
Open Service Mesh (OSM) es un proyecto CNCF Envoy que implementa una interfaz de malla de servicios para administrar y asegurar aplicaciones dinámicas de microservicios. Utiliza Envoy xDS como contenedores sidecar. Sus características principales incluyen el cambio de tráfico, la gestión de certificados, la habilitación de mTLS, la inyección automática de sidecar y las políticas de control de acceso.
Kuma
Kuma es un plano de control de código abierto para Kubernetes y máquinas virtuales que se ejecutan dentro de una red de servicios. Tiene arquitectura de políticas L4+L7 que implementa funciones como descubrimiento de servicios, enrutamiento, seguridad de confianza cero y observabilidad. La plataforma es altamente escalable y fácil de configurar.
Servicio OpenShift Mesh Red Hat
Red Hat desarrolló OpenShift Service Mesh para administrar aplicaciones de microservicios. Proporciona múltiples interfaces para redes y mayor seguridad con Restricción de contexto de seguridad . Mide el rendimiento con Jager y observa interacciones entre servicios con Kiali . Además, OpenShift incluye el adaptador mezclador Red Hat 3scale Istio para mejorar la seguridad de la API.
Malla de aplicaciones de AWS
Amazon desarrolló App Mesh, un software de malla de servicio gratuito que administra todos sus servicios dentro de una arquitectura de microservicio. Proporciona alta disponibilidad y visibilidad de extremo a extremo para su aplicación de microservicio. AWS App Mesh se integra con AWS Fargate , Amazon ECS , Amazon EC2 , Amazon EKS , Kubernetes y AWS Outposts . Con sus herramientas de supervisión, exporta automáticamente los datos de supervisión.
Malla de servicio de red
Network Service Mesh es un proyecto CNCF Sandbox de código abierto . Es una malla de servicio IP híbrida/multinube que utiliza un conjunto simple de API para facilitar la conectividad. Establece una conexión entre los servicios que se ejecutan dentro de los contenedores y con puntos finales externos. Cuando se implementa, requiere cambios mínimos en Kubernetes.
En Conclusión
Una red de servicios simplifica la gestión y el mantenimiento de una aplicación desarrollada con la arquitectura de microservicios. Mejora la seguridad general dentro de la arquitectura de microservicios y garantiza la visibilidad y la observabilidad del flujo de tráfico. En general, las funciones de Service Mesh mejoran el rendimiento y aceleran el ciclo de desarrollo. Con una amplia variedad de soluciones de código abierto disponibles, encuentre la que mejor se adapte a las necesidades de sus aplicaciones.
Computación en la nube
- ¿Cuáles son los mejores cursos de computación en la nube?
- ¿Cuáles son los beneficios del corte por chorro de agua?
- ¿Cuáles son los beneficios del pulido con chorro de arena?
- ¿Cuáles son las principales propiedades del grafito?
- ¿Cuáles son los beneficios del corte por chorro de agua?
- ¿Cuáles son los 7 tipos de tecnología?
- ¿Cuáles son los diferentes tipos de prototipos?
- ¿Cuáles son los 4 tipos de procesos de fabricación?
- ¿Cuáles son los 5 ejes de mecanizado?
- ¿Cuáles son los tipos de rodamiento?
- ¿Qué estás tomando? Robots en la industria de servicios