Acerca de API Gateway

Actualmente, los servicios basados en la Web proporcionan una gran variedad de funciones, desde servicios de mapas, clima e imágenes hasta juegos, subastas y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones para implementar, implementar y administrar 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 para un solo proveedor de servicios. Un proveedor de servicios puede tener servicios heredados implementados con una arquitectura y servicios nuevos implementados con una arquitectura completamente diferente.

Independientemente de la implementación, los servicios basados en la Web requieren una forma de que los desarrolladores de apps los usen. A menudo, estos servicios se exponen como un conjunto de extremos HTTP. Según el servicio, el extremo también puede mostrar datos con formato XML o JSON a la app cliente.

Acerca de los servicios de Google Cloud Platform

Cuando desarrollas tus servicios en Google Cloud Platform (GCP), tienes muchas opciones para implementarlos, como las siguientes:funciones de Cloud Run, Cloud Run y el entorno estándar de App Engine. La flexibilidad de GCP te permite elegir la arquitectura de backend correcta para los requisitos de tu servicio.

Los desarrolladores de apps son los clientes de los servicios de backend. Los desarrolladores de apps consumen tus servicios para implementar apps para dispositivos móviles o tablets, a través de apps que se ejecutan en un navegador o cualquier otro tipo de app que pueda realizar una solicitud de servicio.

Exponer servicios de forma pública a través de la Web puede ser un desafío. Para tener éxito, un proveedor de servicios debe cumplir con los siguientes requisitos:

  • Autenticar el acceso al servicio
  • Proteger el transporte de datos entre clientes y el servicio
  • Proteger el servicio de ataques maliciosos
  • Escalar el servicio a medida que el uso aumenta o disminuye
  • Proporcionar al equipo de operaciones de backend una forma de supervisar y hacer un seguimiento del uso del servicio
  • Realizar un seguimiento del uso para proporcionar datos de facturación precisos

Además, si tus servicios usan diferentes interfaces y protocolos, acceder a ellos puede ser un desafío para los desarrolladores de apps. Los desarrolladores no solo deben aprender y comprender cada interfaz de servicio, sino que también deben supervisar los diferentes servicios en busca de cambios y, luego, actualizar y volver a implementar las apps según sea necesario.

API Gateway

API Gateway te permite proporcionar acceso seguro a tus servicios mediante una API de REST bien definida que es coherente en todos los servicios, sin importar la implementación del servicio. Una API coherente:

  • Facilita a los desarrolladores de apps el consumo de tus servicios
  • Te permite cambiar la implementación del servicio de backend sin afectar la API pública
  • Te permite aprovechar las funciones de escalamiento, supervisión y seguridad integradas en Google Cloud Platform (GCP)

En la siguiente imagen, se muestra a desarrolladores de apps realizando solicitudes a tus servicios de backend a través de API Gateway:

Realiza solicitudes de servicio web a través de API Gateway.

Con API Gateway, los desarrolladores de apps consumen las API de REST para implementar apps. Debido a que todas las API se alojan en API Gateway, los desarrolladores de apps ven una interfaz coherente en todos los servicios de backend.

Si implementas 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. Mientras la API de tu servicio siga siendo coherente, los desarrolladores de apps no tendrán que modificar las apps implementadas debido a los cambios subyacentes en tu backend.

API Gateway es un sistema distribuido de administración de API que también proporciona hosting, registro, supervisión y otras funciones para ayudarte a crear, compartir, mantener y proteger tus API. API Gateway se integra de forma nativa en GCP y controla todas las tareas relacionadas con el procesamiento simultáneo de llamadas a la API, incluidas la administración del tráfico, la autorización y la supervisión.

¿Qué es una API?

Una API es una interfaz que facilita que una aplicación consuma las funciones o los datos de otra aplicación. Mediante la definición de puntos de entrada estables, simples y bien documentados, las API permiten a los desarrolladores acceder con facilidad a la lógica de aplicación que compilaron otros desarrolladores y volver a usarla.

Por ejemplo, en la siguiente tabla se describe un ejemplo de una API de REST que podría mostrar información sobre un libro:

Propiedad Valor Descripción
URL https://www.mybooksapi.com/books/info Muestra el título, autor y fecha de publicación de un libro según su código internacional estándar de libros (ISBN).
Verbo HTTP GET Realice una solicitud GET a la API
Parámetros de consulta isbn Pasa el número de ISBN del libro, es decir, el ID del libro.
Datos de respuesta
{
  "title" : "book_title",
  "author" : "author_name",
  "published" : "publish_date"
}
Es un objeto JSON que contiene los detalles del libro.
Código de respuesta 200 La solicitud se realizó correctamente.

Con esta información, puedes realizar la siguiente solicitud de cURL a esta API para obtener información sobre un libro:

curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217

Debido a que este servicio tiene una API bien definida, incluida una descripción de los formatos de datos y los códigos de respuesta HTTP, el desarrollador de la app no necesita saber nada sobre la implementación subyacente del servicio de backend.

Ya que 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 garantiza que, con el tiempo, la API cambiará de manera predecible. Por ejemplo, la API de libros podría actualizarse para agregar parámetros de búsqueda adicionales, como title o author, o cambiar el JSON de la respuesta para agregar información adicional sobre el libro.

Cómo definir una API

Defines una API implementada en API Gateway como una especificación de OpenAPI 2.0. Los componentes clave de una definición de API incluyen los siguientes:

  • La URL o el punto de entrada del servicio de backend
  • El formato de los datos que se pasan en una solicitud a la API
  • Es el formato de datos de cualquier dato que devuelve el servicio en la respuesta de la API.
  • El mecanismo de autenticación que se usa para controlar el acceso al servicio

Después de definir tu API, usa la interfaz de línea de comandos de gcloud para subirla a una configuración de API en GCP:

Usa gcloud para subir la especificación de la API a GCP.

Implementa una configuración de API en API Gateway

Para crear tu API, debes implementar la configuración de la API en API Gateway. Usa el comando gcloud para implementar la configuración de la API:

Usa gcloud para implementar la especificación de OpenAPI.

Después de que se implemente la configuración de la API, tus clientes podrán realizar llamadas REST a la API.

Administra una API

Una vez que se implemente y ejecute, podrás supervisar la actividad de la API, como los registros y las métricas de uso. Cuando un cliente realiza una solicitud a tu API, API Gateway registra información sobre la solicitud y la respuesta. API Gateway también realiza un seguimiento de la latencia, el tráfico y los errores.

Con el tiempo, es posible que desees actualizar una API implementada para agregar nuevas funciones, mejorar el rendimiento o corregir problemas con la API. Para actualizar una API implementada, simplemente actualiza la especificación de OpenAPI para la definición de la API y, luego, sube y vuelve a implementar la API.

Controla 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 la API. Actualmente, API Gateway admite el mismo mecanismo de autenticación y sintaxis que usa Cloud Endpoints, incluido el uso de:

También puedes usar Google Cloud Platform Console si quieres compartir tu API con otros desarrolladores y que estos puedan habilitarla y generar claves de API para llamarla.

Además de definir un mecanismo de autenticación para verificar la identidad del usuario, tu API también debe decidir qué es lo que el usuario autenticado puede hacer con la API. Para obtener más información, consulta la Guía de autenticación de GCP.

¿Qué sigue?