Malla de servicios - Service mesh

Copiar URL

Una malla de servicios o service mesh, como el proyecto open source Istio, se utiliza para controlar el intercambio de datos entre las distintas partes de una aplicación. A diferencia de otros sistemas que también administran esta comunicación, la malla de servicios es una capa visible y específica de la infraestructura integrada a la aplicación, la cual puede registrar si las distintas partes interactúan bien o no, a fin de facilitar la optimización de las comunicaciones y evitar el tiempo de inactividad a medida que crece una aplicación.

Cada una de las partes de una aplicación, llamada "servicio", depende de otros servicios para brindar a los usuarios lo que desean. Si alguien utiliza la aplicación de una tienda en línea para comprar algo, necesita saber si el artículo está disponible. Por tanto, el servicio que se conecta con la base de datos del inventario de la empresa debe hacerlo también con la página web del producto y esta, a su vez, con el carrito de compra en línea del usuario. Si la tienda quiere ofrecer mayores beneficios, podría diseñar un servicio que recomiende productos a los usuarios dentro de la aplicación. Este nuevo servicio se comunicará con una base de datos de etiquetas de los productos para ofrecer recomendaciones; además, se debe comunicar con la misma base de datos del inventario que necesitaba la página del producto. Se trata de una gran cantidad de partes independientes y reutilizables.

Las aplicaciones modernas suelen dividirse así, como una red de servicios en la cual cada uno de ellos desempeña una función comercial específica. Para ello, estos servicios deberían intercambiar datos permanentemente. ¿Y si algunos servicios, como la base de datos del inventario del comercio minorista, están sobrecargados de solicitudes? Entonces entra en juego la malla de servicios, que dirige las solicitudes de un servicio a otro para optimizar la manera en que funcionan todas las partes juntas.

La arquitectura de microservicios permite que los desarrolladores realicen cambios en los servicios de una aplicación sin tener que ejecutar una nueva implementación completa. A diferencia del desarrollo de aplicaciones en otras arquitecturas, un equipo reducido se encarga de diseñar microservicios independientes, con la flexibilidad de elegir sus propias herramientas y lenguajes de programación. Básicamente, los microservicios se crean de forma independiente y se comunican entre sí. Además, si se produce un error en uno de ellos, esto no provoca una interrupción de toda la aplicación.

 

Microservices architecture

La comunicación entre servicios es el factor clave de los microservicios. La lógica que rige la comunicación se puede codificar en cada servicio sin una capa de malla de servicios, pero esta se vuelve más importante a medida que la comunicación se vuelve más compleja. En el caso de las aplicaciones desarrolladas en la nube que están integradas a una arquitectura de microservicios, la malla es una forma de incluir una gran cantidad de servicios independientes en una aplicación funcional.

Recursos de Red Hat

La malla de servicios no agrega funciones nuevas al entorno de tiempo de ejecución de la aplicación; las aplicaciones siempre necesitan normas que especifiquen cómo se transfieren las solicitudes del punto A al B, independientemente de su arquitectura. Lo que distingue a la malla de servicios es que las normas que rigen la comunicación entre los servicios no se encuentran dentro de cada uno de ellos, sino que se extraen y se colocan en una capa de infraestructura.

Para ello, la malla de servicios se integra a la aplicación como un conjunto de proxies de red. Los proxies son un concepto común en el ámbito de la TI empresarial: si accede a esta página web desde una computadora de trabajo, es muy probable que haya utilizado un proxy.

  1. Cuando se envía la solicitud para esta página, primero la recibe el proxy web de su empresa.
  2. Una vez que la solicitud pasa la medida de seguridad del proxy, se envía al servidor que aloja esta página.
  3. Luego, la página regresa al proxy y se vuelve a verificar en función de las medidas de seguridad.
  4. Finalmente, se envía del proxy a usted.

En una malla de servicios, las solicitudes se envían entre los microservicios por medio de proxies en su propia capa de infraestructura. Por eso, los proxies individuales que forman una malla de servicios a veces se denominan "sidecars", ya que se ejecutan junto a cada uno de los servicios, y no dentro de ellos. En conjunto, estos proxies sidecar, que están separados de cada servicio, forman una red.

Los proxies sidecar se encuentran junto a los microservicios y envían las solicitudes a otros proxies. Juntos, los sidecars forman una red.

Sin una malla de servicios, se debe codificar cada microservicio para que incluya las normas que regirán la comunicación entre los servicios, lo cual distrae a los desarrolladores de los objetivos empresariales. También significa que los errores de comunicación son más difíciles de diagnosticar porque las normas de comunicación entre los servicios están ocultas dentro de cada uno de ellos.

Cada servicio nuevo que se incorpora a una aplicación, o cada instancia nueva de un servicio actual que se ejecuta en un contenedor, agrega complejidad al entorno de comunicación y genera nuevas posibilidades de error. Sin una malla de servicios, es casi imposible encontrar la fuente de los problemas en una arquitectura compleja de microservicios.

Esto se debe a que la malla de servicios también captura todos los aspectos de la comunicación entre los servicios como índices de rendimiento. Con el tiempo, los datos que muestra la malla de servicios se pueden aplicar a las normas que rigen la comunicación entre los servicios, lo cual se traduce en solicitudes más eficientes y confiables.

Por ejemplo, si se produce un error en cierto servicio, la malla puede recopilar datos sobre el tiempo que transcurrió antes de que funcionara el reintento. A medida que se incorporan datos sobre los intervalos de error de un servicio, se pueden escribir normas para determinar el tiempo de espera óptimo antes de volver a intentar usarlo, lo cual garantiza que el sistema no se sobrecargue con reintentos innecesarios.

Si desea diseñar microservicios, es probable que prevea ciertas necesidades, como la capacidad de extenderlos rápidamente y la incorporación de funciones nuevas para satisfacer las necesidades empresariales. Es posible que la arquitectura de microservicios sea muy diferente al año de su lanzamiento. Al principio, las bibliotecas de los microservicios podrán lidiar con la comunicación entre los servicios con una interrupción mínima de las operaciones. Sin embargo, si decidimos aumentar la capacidad y las funciones de los microservicios para sacar el máximo provecho de ellos, podrían producirse más interrupciones. Esto puede generar problemas con el tiempo, ya que los servicios se sobrecargan con las solicitudes, y los desarrolladores pasan cada vez más tiempo codificando las normas que rigen las solicitudes para cada servicio.

Ventajas de la malla de servicios:

Comience a hacer planes para el futuro y pruebe la malla de servicios en la plataforma Red Hat® OpenShift® Service Mesh, la cual le permite conectar, gestionar y supervisar las aplicaciones de microservicios de manera uniforme, con información y control sobre el comportamiento de aquellos que se encuentran conectados a su malla. OpenShift Service Mesh se encuentra disponible para Red Hat OpenShift sin costo.

Hub

Blogs de Red Hat

Aquí encuentras la información más reciente sobre nuestros clientes, partners y comunidades open source.

Todas las versiones de prueba de los productos de Red Hat

Con las versiones de prueba gratuitas de nuestros productos, podrás adquirir experiencia práctica, prepararte para obtener una certificación o evaluar las soluciones para saber si son adecuadas para tu empresa.

Más información

Integración de las aplicaciones

La integración de las aplicaciones consiste en conectar diferentes sistemas y aplicaciones al permitirles trabajar en conjunto mediante el intercambio de datos y el uso de servicios.

¿Qué es una API de REST?

Una API de REST, o API de RESTful, es una interfaz de programación de aplicaciones que se ajusta a los límites de la arquitectura REST. REST significa transferencia de estado representacional.

¿Qué es una API? | Red Hat

Descubre qué es una API o interfaz de programación de aplicaciones, cómo funciona y por qué son esenciales para la integración de aplicaciones. Aprende más con Red Hat.

Integración: lecturas recomendadas