API Gateway en tu arquitectura de microservicios
El uso de una API Gateway para los microservicios puede ayudarte a reducir los esfuerzos de programación, permitiendo que tus aplicaciones sean mucho más eficientes.
Hace unos días hablamos de los microservicios y de las ventajas que nos ofrece. Sin embargo, si lo que te preocupa es el gran número de end-points que generarás con el conjunto de microservicios que necesita tu aplicación, la solución es una API Gateway para orquestar cada uno de estos microservicios o API’s de terceros como PayPal, Google Maps, etc.
¿Qué es una API Gateway?
Es un sistema intermediario que proporciona una interfaz API REST o WebSocket para hacer de enrutador desde un único punto de entrada, el API Gateway, hacia un grupo de microservicios y/o API de terceros definidos. Interactúa como puerta de enlace “Gateway”.
Esencialmente, unifica o desacopla la interfaz que ven los clientes (en este caso, los consumidores de la API que podrían ser aplicaciones móviles, web, etc) de la implementación de los microservicios y/o API’s . Si simplificamos el propósito, no es más que un proxy inverso, optimizado para la autenticación y el control de acceso contra los microservicios y/o API’s.
Es especialmente útil para evitar exponer los servicios internos a clientes externos. Una API Gateway separa las API públicas externas de las API internas de microservicio. También oculta el descubrimiento de los servicios publicados en la API principal y los detalles de las versiones, ya que proporciona un único punto de entrada para todos los microservicios y API’s.
No interactúa como puerta de enlace únicamente, si no que te permite agregar funcionalidades adicionales como:
- Seguridad:
- Autenticación y autorización (por ejemplo, OAuth, grant types, scopes o similares).
- Protección contra amenazas (por ejemplo, DoS, inyección de código, etc).
- Análisis y supervisión (quién utiliza sus API’s, cuándo y cómo).
- Monitorización de uso (KPI's y métricas).
- Alineada a tu modelo de negocio: partner-only "cerrado", public "abierto", internal "interno/local" o monetización del consumo de las API’s publicadas (Seguro que recuerdas la última jugada de Google Maps con su política de precios).
- Administración del ciclo de vida y versionado de la API.
- Traducción de protocolos, permitiendo escoger el idioma más indicado según tu necesidad entre el API Gateway y los microservicios y/o API’s, como SOAP, API REST, etc.
- Orquestación de API propias o de terceros, como Paypal, Google Maps, ....
Te facilito un esquema que resume las funcionalidades de un API Gateway Manager:
¿Cómo puede ayudarte un API Gateway?
Si dispones de aplicaciones basadas en microservicios deberías consumirlos mediante un API Gateway, para que interactúe como un único punto de entrada en el conjunto de microservicios. Veamos cuatro escenarios diferentes para valorar de qué opciones dispones a la hora de utilizar tus aplicaciones con un API Gateway:
1. Desde una API existente:
Si tienes una API con muchas funcionalidades y ahora necesitas, por ejemplo, desarrollar una aplicación móvil con solo algunas de estas funcionalidades del API, lo más indicado sería no publicar el API principal. El mejor recurso es hacerlo mediante el API Gateway, configurando en el sistema únicamente aquellos end-points que necesite la aplicación móvil. Como resultado habrás minimizado los acceso a la API y podrás controlar la autenticación y autorización, unificar protocolos, analizar y supervisar el consumo del API.
2. Desde un servicio SOAP existente:
Por ejemplo, es posible que debas exponer datos de tus sistemas como Facturación o CRM. Estos sistemas generalmente exponen las interfaces como SOAP / RPC clásicas, que los clientes móviles no son adecuados para consumir. Si dispones de un servicio SOAP y ahora necesitas conectar mediante una API REST, un API Gateway se encargará de traducir el idioma de estos dos protocolos.
3. Diseña una nueva API REST:
Algunas herramientas API Manager como WSO2, proporcionan un completo entorno de desarrollo SOA que te permite diseñar todo un proyecto API REST. Simplificando la creación de funcionalidades con un entorno GUI que te facilitara la creación de la API final.
4. Diseña una nueva API como Websocket:
Lo mismo que el punto anterior, proporcionan un completo entorno de desarrollo que te permite definir un nuevo proyecto API, pero en este caso, mediante un servicio Websocket.
Cada escenario es muy diferente, seguro que en algún momento te has encontrado con más de uno de estos escenarios, una API Gateway es la herramienta perfecta para poner solución a estos problemas.
Conclusión
En definitiva, prácticamente todas las aplicaciones basadas en microservicios deberían consumirse mediante una API Gateway, para que interactúe como un único punto de entrada en el conjunto de microservicios, enrutando las solicitudes y la traducción de protocolos. Además de beneficiarte de todas las funcionalidades y herramientas que te aporta una API Gateway manager como; analizar, supervisar, monitorizar auditar, orquestar, versionar y gestionar la seguridad de tu API.
Hay muchos API Gateway managers y estos son algunos de los más comunes: WSO2, AWS API Gateway, Kong, 42crunch y 3scale. Por lo general, son herramientas de fácil gestión, cada uno tiene sus pros y contras, ¡te invito a probarlos y decidirte por el que mejor se adapte a tus necesidades!
Fotografía: pixabay.com
Fuentes: