Imagina que tienes un gran restaurante con muchas cocinas (cada cocina es un microservicio). Los clientes (usuarios) entran en el restaurante, y no quieres que vayan de cocina en cocina buscando dónde hacen sushi o dónde preparan pizza. ¿Qué haces? Contratas a un camarero (API Gateway) que toma los pedidos, los pasa a la cocina correspondiente y le trae al cliente el plato listo. API Gateway es ese camarero para tu restaurante de microservicios.
API Gateway es una capa entre tus clientes (por ejemplo, el frontend, una app móvil o sistemas externos) y tus microservicios. Simplifica la interacción y la gestión de las peticiones en un sistema distribuido.
En aplicaciones complejas con microservicios, interactuar directamente con cada servicio puede ser problemático. Aquí entra en juego API Gateway, que actúa como punto único de entrada para todas las peticiones.
Funciones principales de API Gateway
- Enrutamiento de peticiones.
Piensa en API Gateway como el despachador que decide a dónde enviar cada petición. Por ejemplo, las peticiones a/usersvan al microservicio "Usuarios", y las peticiones a/ordersvan al microservicio "Pedidos". - Seguridad.
API Gateway puede encargarse de la autenticación y la autorización. Por ejemplo, verificar si el cliente tiene un token JWT válido y si tiene permiso para llamar a cierto endpoint. - Balanceo de carga.
Cuando tienes muchas instancias de un mismo microservicio (por ejemplo, tres contenedores del microservicio "Pagos"), API Gateway puede distribuir las peticiones entre ellas para evitar sobrecargas. - Monitorización y logging.
API Gateway también puede recoger estadísticas sobre el número de peticiones, sus tipos, errores y tiempos de procesamiento. Esto ayuda a entender cómo se usa tu aplicación. - Limitación de tasa de peticiones (Rate Limiting).
A menudo el API es consumido por clientes externos o partners. API Gateway limita la cantidad de peticiones de un mismo cliente para proteger tu aplicación de sobrecargas. - Transformación del formato de datos.
Si los clientes esperan datos en otro formato (por ejemplo, el frontend trabaja con unos campos y el microservicio devuelve otros), API Gateway puede transformar peticiones y respuestas.
¿Para qué sirve API Gateway?
Si solo tienes un servidor monolítico, la necesidad de un API Gateway es mínima. Sin embargo, en microservicios es prácticamente imprescindible. Por esto:
- Punto de entrada único.
En lugar de que los clientes llamen a decenas de microservicios, interactúan solo con API Gateway. Eso simplifica la vida de los clientes, porque no necesitan conocer la estructura de tu backend. - Ocultación de la estructura interna de los microservicios.
Tus microservicios pueden cambiar, moverse o incluso reemplazarse, pero los clientes no se enteran gracias a API Gateway. Él abstrae la arquitectura interna del sistema. - Gestión de acceso.
API Gateway actúa como "guarda", asegurándose de que solo los usuarios autorizados accedan a tus servicios. - Soporte para dispositivos móviles y frontend.
API Gateway puede ofrecer distintas interfaces para distintos tipos de clientes. Por ejemplo, una API más ligera para una app móvil y una más completa para el navegador.
Ejemplos de uso de API Gateway
- Netflix, como pionero en arquitectura de microservicios, usa API Gateway para enrutar las peticiones de los usuarios a los servicios correspondientes y para ofrecer una experiencia personalizada (por ejemplo, recomendaciones).
- Amazon procesa millones de peticiones por segundo y usa API Gateway para gestionar las solicitudes de distintos clientes, incluyendo aplicaciones web, móviles y dispositivos con control por voz.
- En marketplaces con cientos de microservicios, API Gateway ayuda a gestionar de forma centralizada la interacción entre microservicios de compradores, vendedores y procesamiento de pedidos.
¿Cómo funciona API Gateway?
- El cliente envía una petición al API Gateway
Los clientes (apps móviles, navegadores web) no saben nada sobre los microservicios. Todas sus peticiones van al API Gateway. - API Gateway analiza la petición
En base a la petición (su ruta, método HTTP, headers, etc.) API Gateway decide qué microservicio debe procesarla. - Enrutamiento de la petición
API Gateway reenvía la petición al microservicio correspondiente. Por ejemplo:- La petición
https://api.example.com/usersse redirige al microservicio "Usuarios". - La petición
https://api.example.com/ordersse envía al microservicio "Pedidos".
- La petición
- Retorno de la respuesta
Tras procesar la petición el microservicio devuelve una respuesta. API Gateway puede modificarla (por ejemplo, añadir headers) y la envía al cliente.
API Gateway en la arquitectura de microservicios: visualización
Clientes -> [ API Gateway ] -> [ Servicio A ]
Móvil (Enrutamiento) [ Servicio B ]
aplicación [ Servicio C ]
y frontend
Soluciones disponibles para API Gateway
En el mercado hay muchas soluciones para API Gateway. Aquí tienes algunas:
| Solución | Descripción |
|---|---|
| Spring Cloud Gateway | Herramienta del ecosistema Spring. Se integra muy bien con otros proyectos de Spring |
| Kong Gateway | Solución de alto rendimiento que soporta extensibilidad mediante plugins |
| AWS API Gateway | Solución gestionada de API Gateway de Amazon para trabajar en la nube |
| NGINX | Solución ligera pero potente para enrutamiento y balanceo |
| Traefik | Excelente opción para servicios containerizados (por ejemplo, Kubernetes, Docker) |
En nuestro curso nos centraremos en Spring Cloud Gateway, ya que es la elección natural para aplicaciones basadas en Spring Boot.
Aplicación práctica de los conocimientos
La utilidad de conocer API Gateway en entrevistas y en el trabajo real es difícil de sobreestimar. Si explicas cómo implementaste correctamente un API Gateway en una solución de microservicios, demostrarás profesionalidad y habilidad para diseñar sistemas complejos. El desarrollo de API Gateway también suele formar parte de los requisitos técnicos en proyectos grandes.
En la próxima lección empezaremos a ver la implementación práctica de API Gateway usando Spring Cloud Gateway.
GO TO FULL VERSION