¿Qué es API Gateway y para qué sirve?
Abordamos un recurso esencial para aquellos que estén desarrollando aplicaciones modernas, basadas en API y especialmente en microservicios. Se trata del API Gateway, una pieza clave para orquestar las comunicaciones con los clientes y realizar la gestión del tráfico entre los distintos servicios.
¿Qué es API Gateway?
En terminología de red, un gateway es una puerta de enlace para las comunicaciones, que regula el tráfico de entrada y sirve para enrutar los accesos a una la red, o incluso transformar las conexiones entre protocolos.
Pues bien, en el mundo del desarrollo moderno hemos usado ese mismo término, o concretamente «API Gateway» para referirnos a un componente software que actúa como el único punto de entrada para todas las solicitudes externas dirigidas a una aplicación basada en API.
Dentro de todas las posibles arquitecturas de API, el API Gateway cobra especial sentido en aquellas basadas en microservicios, donde se encarga de recibir, procesar y enrutar la información hacia los microservicios necesarios. Además, en muchos casos se encarga también de transformar las peticiones antes de enviarlas a los servicios apropiados.
Rol del API Gateway en una arquitectura de microservicios
Como hemos dicho, el API Gateway se usa mayoritariamente en microservicios, donde realiza numerosas funciones.
Coordinación del tráfico entre clientes y microservicios
El API Gateway se encarga de recibir todas las solicitudes de los clientes a través de la red y redirigirlas al microservicio adecuado según lo que necesiten hacer. De este modo, los clientes pueden conocer solamente el gateway y solicitarle las funciones necesarias sin saber que detrás hay varios microservicios atendiendo.
Gestión unificada de seguridad, autenticación y autorización
Al mantenerse como puerto principal de las comunicaciones es el sitio ideal para realizar las tareas de autenticación y autorización. De este modo, cada microservicio puede desentenderse de esta tarea y ser más eficiente.
Simplificación del mantenimiento y la escalabilidad
Mantener un conjunto de microservicios puede ser una tarea compleja y, gracias a la posibilidad de definir la lógica de comunicación y seguridad en una capa intermedia, podemos conseguir que los microservicios sean más sencillos y puedan evolucionar de manera independiente.
De este modo, ya que el API Gateway actúa como intermediario estable, podemos actualizar los servicios de manera individual o intercambiar los componentes sin que afecte al cliente final.
¿Por qué se considera un punto de entrada centralizado?
Vamos a ver los puntos que hacen que sea especialmente adecuado contar con un punto de entrada centralizado.
Único canal de entrada para todas las peticiones externas
En vez de exponer multitud de servicios, siendo el cliente el que tiene que saber a quién debe dirigirse y como debe hacerlo, el API Gateway permite aportar sencillez a los usuarios.
A la vez, contar con un único punto de entrada facilita el control de acceso y autorización así como la monitorización y la seguridad frente a accesos no deseados.
Control total del tráfico y las reglas de negocio
Gracias a que todas las solicitudes pasan por mismo el punto de entrada, podemos establecer reglas de negocio que permitan simplificar la lógica de los distintos servicios, evitando repetir ciertas lógicas en diversos puntos de la aplicación.
Incluso, en aplicaciones todavía más complejas, podemos realizar un control del tráfico más minucioso, estableciendo acciones como redireccionamientos, balanceo de carga, traducción de formatos, etc.
Aislamiento de los servicios backend del cliente final
Además, el hecho de contar con este punto de entrada permite aislar los servicios backend de los clientes. Esto aporta numerosas ventajas como por ejemplo una mayor seguridad y encapsulación, permitiendo que cambios internos no impacten en la experiencia de los usuarios.
Cómo funciona un API Gateway
Ya hemos explicado qué es un API Gateway y seguramente ya entiendas el concepto de una manera general, pero todavía tenemos que ver cómo funciona con mayor detalle.
Gestión del tráfico entre clientes y servicios backend
El primer punto, el API Gateway está expuesto a la red, generalmente Internet, mediante una IP pública y su correspondiente dominio. Es la cara visible del servicio. Este punto de entrada es el que recibe las solicitudes, las analiza y decide a qué microservicio debe redirigirlas para que se procesen.
Enrutamiento de solicitudes, autenticación y transformación de datos
Antes de reenviar la solicitud al microservicio adecuado el API Gateway puede realizar diversas acciones:
- Modificar los encabezados de las solicitudes o los cuerpos de mensajes según sea necesario.
- Verificar tokens de autenticación de las cabeceras.
- Transformar formatos de datos, ya sea la estructura de los datos enviados o incluso el lenguaje de intercambio de los datos.
Además, puede decidir también cómo estructurar la respuesta que enviará de vuelta al cliente.
Funciones clave de un API Gateway
Para realizar todos los pasos anteriores el API Gateway se especializa en numerosas funciones que vamos a detallar.
Autenticación, autorización y control de acceso
Como hemos dicho, este componente es capaz de centralizar las políticas de seguridad de la aplicación. Para ello se encarga de verificar las credenciales enviadas por el cliente en la solicitud, para ver a qué usuario corresponden.
Una vez identificado el usuario puede verificar si tiene permisos para realizar esa accin y restringir los accesos que no están autorizados.
Monitoreo, registro y gestión de errores
Este punto de acceso central puede también realizar tareas de monitorización. Entre ellas puede realzar el log de uso del servicio, controlar del estado de salud de toda la aplicación, alertando de situaciones en las que los administradores deban prestar su atención, como saturación de los servicios, tiempos de respuesta altos, usos inusuales o sospechosos, etc.
Además, puede centralizar también la gestión de los errores del API, mostrando una interfaz común para los clientes y registrando los problemas que ocurran para su verificación manual, incluso estableciendo políticas como reintentos o tiempos máximos de respuesta.
Limitación de velocidad (rate limiting) y gestión de carga
El API gateway también puede realizar tareas de gestión de carga de los microservicios incluso limitar la velocidad de respuesta o el número de solicitudes permitidas por usuarios o claves de API.
Traducción de protocolos y agregación de respuestas
Finalmente, puede realizar una tarea de adaptador entre solicitudes y respuestas traduciendo formatos, protocolos, o incluso combinando las salidas de varios microservicios en una única respuesta unificada.
Ventajas de utilizar un API Gateway
Ya hemos hablado bastante de las funciones y ventajas que nos ofrece el API Gateway en una arquitectura basada en microservicios. No obstante queremos añadir algunas cuestiones que pensamos importantes de mencionar.
Centralización de la lógica de entrada y salida
La centralización de la lógica de entrada salida nos permite realizar en un único lugar tareas que, de otro modo, podrían estar diseminadas a lo largo de numerosos microservicios. Esto nos permite un desarrollo más limpio, sencillo, escalable y en definitiva mayor facilidad de mantenimiento.
Escalabilidad y rendimiento mejorado
El API Gateway ofrece un anclaje sencillo para la implementación de numerosas utilidades de las aplicaciones modernas, entre ellas el cacheo, balanceo de carga o la limitación de peticiones. Todo ello nos permite mejorar el rendimiento y la seguridad, pero también asegurarnos de tener un punto donde poder intercambiar componentes, pudiendo administrar los microservicios y escalarlos de forma independiente.
Simplificación del mantenimiento de microservicios
Como hemos dicho, todos estas ventajas sirven para mejorar el mantenimiento de las aplicaciones basadas en microservicios, que es lo más importante cuando tenemos que gestionar aplicaciones realmente complejas.
Casos de uso comunes de un API Gateway
Por regla general. el API Gateway será útil siempre que tengamos múltiples servicios y necesitemos coordinarlos y ofrecer un punto de entrada uniforme para los clientes, pero vamos a ver otros casos de uso de manera resumida.
Arquitecturas serverless y aplicaciones en la nube
En entornos serverless, donde no tenemos un servidor físico donde se despliega la aplicación, un API Gateway puede ofrecer también todas las ventajas que hemos mencionado para los microservicios.
También son útiles para la computación en la nube, donde los recursos se crean y escalan dinámicamente, con direcciones IP que cambian frecuentemente.
Aplicaciones móviles que consumen múltiples servicios
También pueden resultar especialmente útiles en aplicaciones móviles que necesitan trabajar con muchos servicios a la vez. En lugar de gestionar todas esas conexiones de manera separada, podemos construir un API Gateway que ofrece una interfaz simplificada para que la aplicación móvil pueda consumir todos esos servicios como su fuera uno solo.
Gestión de APIs públicas y privadas en empresas tech
En aplicaciones más avanzadas donde las empresas necesitan exponer sus API pública a terceros, un API Gateway puede ofrecer ventajas como el control de acceso, control de los límites y otras protecciones que pueden ser vitales en muchos casos.
Diferencias entre un API Gateway y un proxy inverso
Si has desarrollado servicios web en alguna ocasión habrás tenido que exponer tu API a través de un proxy inverso. Realmente estamos hablando de dos tipos de componentes distintos. Vamos a ver sus diferencias fundamentales para que nos quede claro.
Funciones principales de un proxy inverso tradicional
Para el despliegue de API un proxy inverso clásico se encarga del enrutamiento de peticiones HTTP hacia el servidor, o servidores, backend que ofrece el servicio.
También puede incluir funciones de seguridad como la gestión del certificado HTTPS o de escalabilidad como el balanceo de carga, por ejemplo.
Capacidades avanzadas de un API Gateway
El API Gateway va un paso más allá y ofrece una capa adicional de lógica de aplicación que no se queda simplemente en el enrutamiento:
- Realiza la autenticación y autorización
- Transforma datos o incluso protocolos
- Agrega respuestas de varios servicios como su fuera una única salida
- Etc.
Nivel de conocimiento de la lógica de aplicación
Un proxy inverso no se preocupa con la lógica del negocio, es más bien un componente que se encarga de reenviar solicitudes de manera mecánica. Sin embargo, como hemos mencionado, el API Gateway puede incorporar reglas específicas del negocio, ofreciendo un punto centralizado de control de ciertas áreas que permiten descargar a los microservicios.
¿Cuándo usar cada uno según el tipo de arquitectura?
El Proxy inverso es más adecuado en arquitecturas simples o monolíticas, donde solo se requiere balanceo de carga, aplicación de cifrado o distribución del tráfico. Por su parte, el API Gateway es ideal en arquitecturas basadas en microservicios o serverless, donde se requiere mayor control, seguridad y orquestación.