Service Mesh vs. Solución de Gestión de API: ¿es lo mismo? ¿Son compatibles? ¿Son rivales?

Cuando hablamos de comunicación en un mundo distribuido nativo de la nube y especialmente cuando hablamos de arquitecturas basadas en contenedores basadas en la plataforma Kubernetes como AKS, EKS, Openshift, etc., dos tecnologías generan mucha confusión porque parecen estar cubriendo las mismas capacidades: Esas son Service Mesh y Soluciones de Gestión de API.
Ha sido un tema controvertido donde se han hecho diferentes declaraciones audaces: Personas que piensan que esas tecnologías trabajan juntas de manera complementaria, otras que creen que están tratando de resolver los mismos problemas de diferentes maneras e incluso personas que piensan que una es solo la evolución de la otra hacia la nueva arquitectura nativa de la nube.
Soluciones de Gestión de API
Las Soluciones de Gestión de API han sido parte de nuestras arquitecturas durante mucho tiempo. Es un componente crucial de cualquier arquitectura hoy en día que se crea siguiendo los principios de la Arquitectura Guiada por API, y son una evolución del Gateway de API preexistente que hemos incluido como una evolución de los proxies puros a finales de los 90 y principios de los 2000.
La Solución de Gestión de API es un componente crítico de su Estrategia de API porque permite a su empresa trabajar en un Enfoque Guiado por API. Y eso es mucho más que el aspecto técnico de ello. Usualmente tratamos de simplificar el Enfoque Guiado por API al lado técnico con el desarrollo basado en API y los microservicios que estamos creando y el espíritu colaborativo en mente que usamos hoy para hacer cualquier pieza de software que se despliega en el entorno de producción.
Pero es mucho más que eso. Las Arquitecturas Guiadas por API se tratan de crear productos a partir de nuestra API, proporcionando todos los artefactos (técnicos y no técnicos) que necesitamos para hacer esa conversión. Una lista rápida de esos artefactos (pero no es una lista exhaustiva) son los siguientes:
- Soporte de Documentación de API
- Definición de Planes de Paquetes
- Capacidades de Suscripción
- Capacidades de Monetización
- Descubrimiento de API de Autoservicio
- Capacidades de Versionado
Tradicionalmente, la solución de Gestión de API también viene con capacidades de Gateway de API integradas para cubrir incluso el aspecto técnico de ello, y que también proporcionan algunas otras capacidades más a nivel técnico:
- Exposición
- Enrutamiento
- Seguridad
- Limitación
Service Mesh
Service Mesh es más una palabra de moda en estos días y una tecnología que ahora está en tendencia porque ha sido creada para resolver algunos de los desafíos que son inherentes al enfoque de microservicios y contenedores y todo bajo la etiqueta de nativo de la nube.
En este caso, proviene del lado técnico, por lo que es mucho más un enfoque de abajo hacia arriba porque su existencia es para poder resolver un problema técnico e intentar proporcionar una mejor experiencia de usuario a los nuevos desarrolladores y administradores de sistemas en este nuevo mundo mucho más complicado. ¿Y cuáles son los desafíos que se han creado en esta transición? Echemos un vistazo a ellos:
El Registro y Descubrimiento de Servicios es una de las cosas críticas que necesitamos cubrir porque con el paradigma elástico del mundo nativo de la nube hace que los servicios cambien su ubicación de vez en cuando comenzando en nuevas máquinas cuando sea necesario, eliminándolos cuando no hay suficiente carga para requerir su presencia, por lo que es esencial proporcionar una manera de gestionar fácilmente esa nueva realidad que no necesitábamos en el pasado cuando nuestros servicios estaban vinculados a una máquina específica o conjunto de dispositivos.
La seguridad es otro tema importante en cualquier arquitectura que podamos crear hoy, y con el enfoque poliglota que hemos incorporado en nuestras arquitecturas es otra cosa desafiante porque necesitamos proporcionar una manera segura de comunicar nuestros servicios que son compatibles con cualquier tecnología que estemos usando y cualquiera que podamos usar en el futuro. Y no estamos hablando solo de Autenticación pura sino también de Autorización porque en una comunicación de servicio a servicio también necesitamos proporcionar una manera de verificar si el microservicio que está llamando a otro está permitido para hacerlo y hacerlo de una manera ágil para no detener todas las nuevas ventajas que su arquitectura nativa de la nube proporciona debido a su concepción.
Los requisitos de enrutamiento también han cambiado en estas nuevas arquitecturas. Si recuerdas cómo solíamos desplegar en arquitecturas tradicionales, normalmente intentamos encontrar un enfoque de cero tiempo de inactividad (cuando es posible) pero un procedimiento muy estándar. Desplegar una nueva versión, validar su funcionamiento y abrir el tráfico para cualquiera, pero hoy los requisitos exigen paradigmas mucho más complejos. Las tecnologías de Service Mesh soportan estrategias de implementación como Pruebas A/B, Enrutamiento basado en peso, Implementaciones Canary.
¿Rival o Compañero?
Entonces, después de hacer una vista rápida del propósito de estas tecnologías y el problema que intentaron resolver, ¿son rivales o compañeros? ¿Deberíamos elegir una u otra o intentar colocar ambas en nuestra arquitectura?
Como siempre, la respuesta a esas preguntas es la misma: «¡Depende!». Depende de lo que estás tratando de hacer, lo que tu empresa está tratando de lograr, lo que estás construyendo…
- Se necesita una solución de Gestión de API siempre que estés implementando una Estrategia de API en tu organización. La tecnología de Service Mesh no está tratando de llenar ese vacío. Pueden proporcionar capacidades técnicas para cubrir lo que tradicionalmente ha hecho el componente de Gateway de API, pero este es solo uno de los elementos de la Solución de Gestión de API. Las otras partes que proporcionan las capacidades de gestión y gobernanza no están cubiertas por ningún Service Mesh hoy en día.
- Se necesita Service Mesh si tienes una arquitectura nativa de la nube basada en la plataforma de contenedores que se basa firmemente en la comunicación HTTP para la comunicación sincrónica. Proporciona tantas capacidades técnicas que harán tu vida mucho más manejable que tan pronto como lo incluyas en tu arquitectura, no podrás vivir sin él.
- Service Mesh solo va a proporcionar sus capacidades en un enfoque de plataforma de contenedores. Entonces, si tienes un panorama más heterogéneo como muchas empresas tienen hoy en día, (tienes una plataforma de contenedores pero también otras plataformas como aplicaciones SaaS, algunos sistemas aún en las instalaciones y arquitecturas tradicionales que todas ellas están proporcionando capacidades que te gustaría aprovechar como parte de los productos de API), necesitarás incluir una Solución de Gestión de API.
Por lo tanto, estas tecnologías pueden jugar juntas en una arquitectura completa para cubrir diferentes tipos de requisitos, especialmente cuando estamos hablando de arquitecturas heterogéneas complejas con la necesidad de incluir un enfoque Guiado por API.
En próximos artículos, cubriremos cómo podemos integrar ambas tecnologías desde el aspecto técnico y cómo fluye la información entre los diferentes componentes de la arquitectura.


