¿Qué es una malla de servicio?

Autores

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Qué es la malla de servicios

Una malla de servicios es una capa de software en una arquitectura de aplicaciones modernas que gestiona la conectividad entre microservicios, permitiendo que las aplicaciones funcionen. Las mallas de servicios proporcionan muchas capacidades críticas, como la comunicación de servicio a servicio, la detección de servicios, el equilibrio de carga y la autenticación.

Uno de los mayores retos a los que se enfrentan los desarrolladores de aplicaciones en el panorama empresarial moderno es la escalabilidad. A medida que aumenta el número de usuarios de aplicación, a los ingenieros de DevOps (la metodología de desarrollo de software que acelera la entrega de aplicación a través de la automatización) les resulta difícil monitorizar el rendimiento del servicio. Una malla de servicios proporciona características clave que ayudan a monitorizar y gestionar servicios críticos como la información de registro, el rastreo y el control del tráfico.

A medida que las aplicaciones se han vuelto fundamentales para la transformación digital, la importancia de las mallas de servicios ha aumentado. Hoy en día, son los facilitadores clave de algunas de las tecnologías de aplicaciones más avanzadas disponibles, incluidas las aplicaciones nativas de la nube, los microservicios y los contenedores.

Según Forbes, en 2022, el 70 % de las organizaciones ya tenían una malla de servicios y el 19 % la estaba evaluando1.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Se ha suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Qué son los microservicios?

Los microservicios, también conocidos como arquitectura de microservicios, son un método arquitectónico nativo de la nube en el que las aplicaciones se crean a partir de muchos componentes o servicios independientes y más pequeños. Este enfoque permite a los desarrolladores actualizar el código más fácilmente y añadir o eliminar características y funcionalidades sin afectar al resto de la aplicación, lo que se traduce en una alta escalabilidad.

Las mallas de servicios son críticas para la arquitectura de microservicios. Proporcionan una capa de infraestructura altamente configurable en la que todos los servicios de la aplicación de microservicios pueden conectarse e intercambiar información. Además de una malla de servicios, también se utiliza la arquitectura de microservicios junto con la tecnología de contenedores y su plataforma más popular, Kubernetes.

Desarrollo de aplicaciones

Suba a bordo: desarrollo de aplicaciones empresariales en la nube

En este vídeo, el Dr. Peter Haumer explica cómo se desarrollan las aplicaciones empresariales modernas en la nube híbrida mediante la demostración de diferentes componentes y prácticas, como IBM Z Open Editor, IBM Wazi y Zowe. 

¿Qué son los contenedores y Kubernetes?

La tecnología conocida como contenedores, junto con una de sus plataformas de orquestación de contenedores más populares, Kubernetes, se han vuelto indispensables para la funcionalidad de malla de servicios, ya que permite a los desarrolladores gestionar aplicaciones complejas basadas en microservicios.

Los contenedores son unidades ejecutables de software que empaquetan el código de la aplicación junto con sus bibliotecas y dependencias, lo que le permite ejecutarse en cualquier entorno informático. Con la proliferación de contenedores en la arquitectura de aplicaciones moderna, la gestión de grandes grupos de contenedores se convirtió rápidamente en un reto.

Entra en escena Kubernetes (también conocido como k8s o Kube), una plataforma de orquestación de contenedores que se ha convertido en una de las soluciones de orquestación más populares disponibles en el mercado hoy en día. Los clústeres de Kubernetes, colecciones de nodos que representan máquinas físicas y máquinas virtuales (VM), se gestionan en el plano de control.

Otro aspecto importante de la funcionalidad de la malla de servicios es la forma en que se gestiona el acceso a los servicios dentro de un clúster específico, un proceso conocido como ingreso.

¿Cómo funciona una malla de servicios?

Las aplicaciones más populares de hoy en día exigen que se implementen muchas cargas de trabajo o tareas y procesos informáticos a la vez. Una arquitectura de microservicios permite a los desarrolladores crear cada aplicación como una colección de pequeños microservicios independientes que son más fáciles de gestionar.

Sin embargo, para que el código de la aplicación funcione, los microservicios deben comunicarse de forma rápida y precisa, y aquí es donde la arquitectura de malla de servicios es crítico. Las mallas de servicio están diseñadas de forma que dan a los desarrolladores más control sobre la comunicación entre servicios dentro de una aplicación.

En su nivel más fundamental, las mallas de servicio se basan en un tipo de comunicación conocida como comunicación basada en proxy para mejorar la capacidad de gestión y el control de aplicaciones basadas en microservicios. La comunicación basada en proxy cuenta con servidores proxy (también conocidos como proxies) que funcionan como intermediarios entre el microservicio y la red de una organización, lo que permite enrutar el tráfico hacia y desde un servicio a través de proxies. Esta capacidad, conocida como comunicación de proxy de red, es crítica para mantener la gestión, la observabilidad y la seguridad de muchas aplicaciones.

Además de los proxies, una arquitectura de malla de servicios se basa en dos componentes principales que le permiten funcionar: el plano de control y el plano de datos.

Plano de control

El plano de control es la parte de la red informática que controla cómo se encaminan los datos entre los usuarios y los dispositivos (también conocidos como nodos). Los planos de control siguen los protocolos o reglas de enrutamiento que se basan en algoritmos que determinan la mejor ruta para que los datos se apoderen de una red.

En una malla de servicios, el plano de control incluye proxies diseñados específicamente, llamados proxies de sidecar, que abstraen ciertas funciones, como la supervisión y la seguridad, para hacerlas más eficientes. Cuando un servicio necesita comunicarse con otro servicio en una malla de servicios, el proxy sidecar intercepta la solicitud y crea un canal seguro y cifrado para que viaje.

Plano de datos

El plano de datos, también conocido como plano de reenvío, permite enviar datos por la red a través de dispositivos como enrutadores y conmutadores. Los planos de datos utilizan proxies sidecar para gestionar la mensajería entre servicios y funcionalidades importantes como la interrupción de circuitos y reintentos de solicitud. El plano de datos también es donde se llevan a cabo capacidades clave como el equilibrio de carga, el descubrimiento de servicios y el enrutamiento.

Malla de servicios versus puerta de enlace de API

Además del plano de datos y el plano de control, la puerta de enlace de interfaces de protocolo de aplicación (API) es otra parte importante de la arquitectura de microservicios que está estrechamente relacionada con la funcionalidad de la malla de servicios.

Las API son protocolos que permiten a las aplicaciones de software comunicarse e intercambiar datos. Las puertas de enlace de API son herramientas que actúan como intermediarios entre los clientes de API (por ejemplo, la popular API REST que ayuda a los desarrolladores a crear aplicaciones) y los servicios de backend ubicados en un servidor.

Las puertas de enlace de API y las mallas de servicios son similares en el sentido de que ambas permiten un desarrollo de aplicaciones más eficaz. Sin embargo, mientras que una puerta de enlace de API controla el acceso a las API, una malla de servicios conecta microservicios dentro de la aplicación. Las mallas de servicios y las puertas de enlace de API se implementan con frecuencia juntas para aumentar la flexibilidad y la observabilidad en un ecosistema de desarrollo de aplicaciones.

Beneficios de una malla de servicios

Las mallas de servicios y la arquitectura de microservicios que hacen posible ofrecen muchos beneficios críticos a una organización. Estos son algunos de los más comunes.

Observabilidad

Una malla de servicios proporciona observabilidad integrada, una comprensión más profunda de la condición de un sistema complejo, para toda una arquitectura de microservicios. Esto permite a los desarrolladores monitorizar métricas importantes como las dependencias, la latencia y las tasas de error que son importantes para comprender cómo funciona una aplicación.

La observabilidad también ayuda con la resolución de problemas, la optimización del rendimiento, la telemetría (registro del comportamiento del sistema) y la depuración al ofrecer a los desarrolladores una visión completa y sin obstáculos del funcionamiento interno de un ecosistema de microservicios.

Control

Para que las aplicaciones funcionen correctamente, los desarrolladores y administradores de aplicación deben controlar cómo se comunican los servicios entre sí dentro de la aplicación. Una malla de servicios aumenta las capacidades de gobierno para las organizaciones que implementan arquitecturas de microservicios, por ejemplo, la forma en que los equipos aplican los requisitos de seguridad y cumplimiento en sectores fuertemente regulados.

Además, las mallas de servicios proporcionan capas de infraestructura dedicadas específicamente para manejar las demandas de comunicación de servicio a servicio con aplicaciones distribuidas, aplicaciones que se ejecutan en más de un ordenador conectado a la vez.

Seguridad

Las mallas de servicio ayudan a garantizar una comunicación segura entre servicios a través de características como el cifrado y la autenticación Mutual Transport Layer Security (mTLS). La autenticación mTLS ayuda a garantizar que el tráfico en una aplicación sea seguro y confiable en ambas direcciones entre el cliente y el servidor.

mTLS también proporciona confidencialidad de datos al cifrar la información que se envía a través de la comunicación de servicio a servicio. Permite a los administradores aplicar políticas de autorización, como el acceso a endpoint específico, un proceso conocido como seguridad de endpoints.

Descubrimiento de servicios

Las mallas de servicio tienen una capacidad conocida como detección automatizada de servicios que ayuda a reducir la carga de trabajo de gestionar los endpoints, la ubicación en la malla de servicios donde se puede llegar a un microservicio específico. Un registro de servicios permite que estos se encuentren y se comuniquen entre sí automáticamente, independientemente de dónde se encuentren, lo que permite a los desarrolladores implementar nuevos servicios de forma rápida y sencilla.

Equilibrio de carga

El equilibrio de carga, la distribución del tráfico de red entre varios servidores para optimizar el rendimiento de las aplicaciones, es una capacidad clave de las mallas de servicios. Mediante algoritmos, la malla de servicios ayuda a equilibrar las cargas de trabajo entre nodos, optimizar los recursos computacionales y, en general, garantizar la alta disponibilidad de una aplicación.

Gestión y división del tráfico

Las mallas de servicio proporcionan características avanzadas de gestión del tráfico y división del tráfico para ayudar a optimizar el flujo de información y recursos a través de una red. Aunque tanto la gestión del tráfico como la división del tráfico se utilizan para controlar el flujo de información en una red, tienen una diferencia importante que vale la pena señalar. La gestión del tráfico se centra en cambios sistémicos a largo plazo en la infraestructura para mejorar el flujo de tráfico de información, mientras que la división del tráfico implica la distribución del tráfico basada en el peso entre backends o versiones de servicio.

Las mallas de servicio proporcionan un control detallado y altamente específico sobre el enrutamiento y el comportamiento del tráfico, lo que permite transiciones más fluidas cuando una aplicación se actualiza a una versión de software más reciente. Por ejemplo, en la popular implementación Canary, una nueva versión de una aplicación solo se lanza a un pequeño grupo de usuarios para probar las características y el rendimiento antes de que esté disponible para todos los demás.

Elegir la solución de malla de servicios adecuada

El mercado mundial de proveedores de redes de servicios ya es fuerte y está creciendo rápidamente. Según una encuesta reciente, se valoró en 220 millones de dólares en 2023 y se prevé que crezca hasta los 5050 millones de dólares en 2032, lo que supone una tasa de crecimiento anual compuesta (TCAC) del 41,3 %2.

En un sector que crece a un ritmo tan rápido, seleccionar la solución de malla de servicios adecuada puede ser todo un reto. Algunos factores clave a tener en cuenta son el coste, la facilidad de implementación, la compatibilidad con las tecnologías existentes, la seguridad, el rendimiento y el soporte.

Estas son cinco de las soluciones de malla de servicios más populares disponibles y una breve descripción de lo que las hace únicas.

Istio

La malla de servicio más popular disponible es Istio. Su amplio conjunto de características significa que es altamente adaptable y adecuado para cargas de trabajo de nivel empresarial. Istio es conocido por sus capacidades avanzadas de gestión del tráfico, sus características de seguridad y su extensibilidad, que se ve reforzada por su gran ecosistema de colaboradores.

Al igual que otras ofertas de malla de servicios, Istio es un proyecto de código abierto, lo que significa que se desarrolló y mantuvo a través de una colaboración abierta y se puso a disposición de cualquiera. Funciona bien con Kubernetes y muchas otras tecnologías adyacentes a la malla de servicios.

Linkerd

Más ligera y sencilla que Istio, Linkerd es una solución de malla de servicios sencilla que mejora el rendimiento a la vez que mantiene una baja latencia. Linkerd tiene todas las funcionalidades básicas que las empresas esperan de una malla de servicios, incluido el equilibrio de carga, el descubrimiento de servicios, el cifrado y más. Al igual que Istio, Linkerd también es de código abierto.  

NGINX Service Mesh

NGINX es más completa que la mayoría de las demás mallas de servicios. Funciona como servidor web y como proxy inverso, lo que significa que puede ofrecer una gama de protocolos más amplia que otras mallas de servicios. NGINX fue diseñado para ofrecer el máximo rendimiento y estabilidad y es utilizado por muchos sitios web de alto tráfico. Al igual que Linkerd, Istio y otras soluciones de malla de servicios, es de código abierto.

Consul

Creado por la popular empresa de infraestructura basada en la nube HashiCorp, Consul es una malla de servicios multinube que ofrece muchas de las mismas características que otras mallas de servicios populares. Consul es una de las soluciones de malla de servicios más flexibles disponibles y se puede utilizar en muchos sistemas operativos (SO) diferentes, incluidos Windows, Linux, macOS, FreeBSD y Solaris. Consul también es de código abierto y es mejor conocido por su popular complemento Prometheus, que mejora las capacidades de monitorización.

Malla de aplicaciones de AWS

Diseñada específicamente para su uso con implementaciones en la nube de Amazon Web Services (AWS), la malla de aplicaciones de AWS es una malla de servicios con muchas de las mismas características que Linkerd, Istio y otros, incluida la seguridad mejorada, la administración del tráfico y la observabilidad. Sin embargo, AWS no es flexible y solo se considera una buena opción para organizaciones que ya están integradas en la arquitectura de AWS.

Soluciones relacionadas
IBM Enterprise Application Service for Java

Un servicio totalmente gestionado y de inquilino único para desarrollar y entregar aplicaciones Java.

Explore las aplicaciones Java
Soluciones DevOps

Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.

Explore las soluciones DevOps
Servicios de desarrollo de aplicaciones Enterprise

El desarrollo de aplicaciones en la nube significa crear una vez, iterar rápidamente e implementar en cualquier lugar.

Servicios de desarrollo de aplicaciones
Dé el siguiente paso

Los servicios de consultoría de desarrollo de aplicaciones en la nube de IBM Cloud ofrecen orientación experta y soluciones innovadoras para agilizar su estrategia de nube. Colabore con los expertos en nube y desarrollo de IBM para modernizar, escalar y acelerar sus aplicaciones, y obtenga resultados transformadores para su empresa.

Explore los servicios de desarrollo de aplicaciones Comience a crear con IBM Cloud de forma gratuita
Notas a pie de página

Service Mesh As The Bridge To App Modernization. Forbes. Marzo de 2023.

2 Service Mesh Market Report. Business Research Insights. Octubre de 2024.