Información sobre API Gateway
Hoy en día, los servicios basados en la Web ofrecen una gran variedad de funciones, desde servicios de mapas, meteorología e imágenes hasta juegos, subastas y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones para implementar, desplegar y gestionar sus servicios. Por ejemplo, un servicio puede desarrollarse en Java o .NET, mientras que otro usa Node.js.
Las implementaciones de backend también pueden variar en función del proveedor de servicios. Un proveedor de servicios puede tener servicios antiguos implementados con una arquitectura y servicios nuevos implementados con una arquitectura completamente diferente.
Independientemente de la implementación, todos los servicios basados en web requieren una forma de poner los servicios a disposición de los desarrolladores de aplicaciones. A menudo, estos servicios se exponen como un conjunto de endpoints HTTP. En función del servicio, el endpoint también puede devolver datos a la aplicación cliente en formato XML o JSON.
Acerca de los servicios de Google Cloud
Cuando desarrolles tus servicios en Google Cloud, tendrás muchas opciones para implementarlos, como Cloud Run functions, Cloud Run y entorno estándar de App Engine. La flexibilidad de Google Cloud te permite elegir la arquitectura backend correcta para los requisitos de tu servicio.
Los desarrolladores de aplicaciones son los clientes de los servicios backend. Los desarrolladores de aplicaciones consumen tus servicios para implementar aplicaciones para dispositivos móviles o tablets, a través de aplicaciones que se ejecutan en un navegador o de cualquier otro tipo de aplicación que pueda hacer una solicitud de servicio.
Exponer servicios públicamente en la Web puede ser complicado. Para tener éxito, un proveedor de servicios debe:
- Autenticar el acceso al servicio
- Transporte de datos seguro entre los clientes y el servicio
- Proteger el servicio frente a ataques maliciosos
- Escalar el servicio a medida que aumenta o disminuye el uso
- Proporcionar al equipo de operaciones de backend una forma de monitorizar y hacer un seguimiento del uso del servicio
- Monitorizar el uso para proporcionar información de facturación precisa
Además, si tus servicios usan interfaces y protocolos diferentes, los desarrolladores de aplicaciones pueden tener dificultades para acceder a ellos. Los desarrolladores no solo deben aprender y comprender cada interfaz de servicio, sino que también deben monitorizar los diferentes servicios para detectar cambios y, a continuación, actualizar y volver a desplegar las aplicaciones según sea necesario.
API Gateway
API Gateway te permite franquear el acceso seguro a tus servicios a través de una API REST bien definida que es coherente en todos tus servicios, independientemente de la implementación del servicio. Una API coherente:
- Facilita a los desarrolladores de aplicaciones el uso de tus servicios
- Te permite cambiar la implementación del servicio de backend sin que ello afecte a la API pública.
- Te permite aprovechar las funciones de escalado, monitorización y seguridad integradas en Google Cloud Platform (GCP).
En la siguiente imagen se muestra a desarrolladores de aplicaciones enviando solicitudes a sus servicios de backend a través de API Gateway:
Con API Gateway, los desarrolladores de aplicaciones consumen tus APIs REST para implementar aplicaciones. Como todas las APIs están alojadas en API Gateway, los desarrolladores de aplicaciones ven una interfaz coherente en todos los servicios de backend.
Si despliegas tus APIs en API Gateway, puedes actualizar el servicio de backend o incluso moverlo de una arquitectura a otra sin tener que cambiar la API. Siempre que la API de tu servicio sea coherente, los desarrolladores de aplicaciones no tendrán que modificar las aplicaciones implementadas debido a los cambios subyacentes en tu backend.
API Gateway es un sistema de gestión de APIs distribuido que también ofrece alojamiento, registro, monitorización y otras funciones para ayudarte a crear, compartir, mantener y proteger tus APIs. API Gateway se integra de forma nativa con Google Cloud y gestiona todas las tareas relacionadas con el procesamiento de llamadas a APIs simultáneas, como la gestión del tráfico, la autorización y la monitorización.
¿Qué es una API?
Una API es una interfaz que permite que una aplicación consuma funciones o datos de otra aplicación. Al definir puntos de entrada estables y bien documentados, las APIs permiten a los desarrolladores acceder a la lógica de las aplicaciones creada por otros desarrolladores y reutilizarla.
Por ejemplo, la siguiente tabla describe un ejemplo de una API REST que podría devolver información sobre un libro:
Propiedad | Valor | Descripción |
---|---|---|
URL | https://www.mybooksapi.com/books/info | Devuelve el título, el autor y la fecha de publicación de un libro a partir de su número internacional normalizado del libro (ISBN). |
Verbo HTTP | GET | Envía una solicitud GET a la API. |
Parámetro de consulta | isbn
|
Transfiere el número ISBN del libro, es decir, el ID del libro. |
Datos de respuesta | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
Objeto JSON que contiene los detalles del libro. |
Código de respuesta | 200 | Solicitud correcta. |
Con esta información, puedes hacer la siguiente solicitud cURL a esta API para obtener información sobre un libro:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Como este servicio tiene una API bien definida, que incluye una descripción de los formatos de datos y los códigos de respuesta HTTP, el desarrollador de la aplicación no necesita saber nada sobre la implementación subyacente del servicio backend.
Como las aplicaciones que consumen APIs son sensibles a los cambios, las APIs también implican un contrato entre los proveedores y los consumidores de APIs. El contrato asegura que, con el tiempo, la API cambiará de forma predecible. Por ejemplo, la API de libros se puede actualizar para añadir parámetros de consulta adicionales, como title
o author
, o para cambiar el JSON de respuesta y añadir información adicional sobre el libro.
Definir una API
Una API implementada en API Gateway se define como una especificación de OpenAPI 2.0. Los componentes clave de una definición de API son los siguientes:
- La URL o el punto de entrada del servicio de backend
- El formato de los datos que se transfieren en una solicitud a la API
- El formato de los datos devueltos por el servicio en la respuesta de la API
- Mecanismo de autenticación utilizado para controlar el acceso al servicio.
Una vez que hayas definido tu API, usa la interfaz de línea de comandos gcloud para subirla a una configuración de API en GCP:
Desplegar una configuración de API en API Gateway
Para crear tu API, debes desplegar la configuración de API en API Gateway.
Usa el comando gcloud
para implementar la configuración de la API:
Una vez que se haya implementado la configuración de la API, tus clientes podrán hacer llamadas REST a la API.
Gestionar una API
Una vez que se haya implementado y esté en funcionamiento, podrás monitorizar la actividad de la API, como las métricas de uso y los registros. Cuando un cliente envía una solicitud a tu API, API Gateway registra información sobre la solicitud y la respuesta. API Gateway también monitoriza la latencia, el tráfico y los errores.
Con el tiempo, es posible que quieras actualizar una API implementada para añadir nuevas funciones, mejorar el rendimiento o corregir problemas. Para actualizar una API desplegada, actualiza la especificación de OpenAPI de la definición de la API y, a continuación, sube y vuelve a desplegar la API.
Controlar el acceso a la API
API Gateway te permite configurar tu API para que requiera autenticación antes de que el cliente pueda acceder a ella. API Gateway admite el mismo mecanismo de autenticación y la misma sintaxis que Cloud Endpoints, incluido el uso de lo siguiente:
También puedes usar la Google Cloud consola para compartir tu API con otros desarrolladores, de forma que puedan habilitarla y generar claves de API para llamarla.
Además de definir un mecanismo de autenticación para verificar la identidad de un usuario, tu API también debe decidir qué puede hacer el usuario autenticado con ella. Para obtener más información, consulta el artículo Métodos de autenticación de Google.