Acerca de API Gateway

En la actualidad, los servicios basados en la Web ofrecen una gran variedad de funcionalidades, es decir, servicios de mapas, imágenes y clima, hasta juegos, subastas y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones sobre cómo 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, todos los servicios basados en la Web requieren una forma de hacer que estén disponibles para los desarrolladores de apps. 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:Cloud Functions, 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 a fin de implementar apps para dispositivos móviles o tablets, mediante apps que se ejecutan en un navegador o cualquier otro tipo de app que pueda realizar una solicitud de servicio.

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

  • 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 el uso del servicio y hacerle un seguimiento
  • Realizar un seguimiento del uso para proporcionar datos de facturación precisos

Además, si tus servicios usan interfaces y protocolos diferentes, el acceso a estos servicios 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 para detectar cambios y, luego, actualizar y volver a implementar las aplicaciones 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.

Cuando 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. Siempre que la API de tu servicio se mantenga coherente, los desarrolladores de apps no tendrán que modificar las apps implementadas debido a 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ámetro de consulta isbn Pasa el número 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 detalles del libro.
Código de respuesta 200 Solicitud correcta.

Con esta información, podrías realizar 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 formatos de datos y códigos de respuesta HTTP, el desarrollador de apps no necesita saber nada sobre la implementación subyacente del servicio de backend.

Dado que las aplicaciones que consumen APIs son sensibles a los cambios, las APIs también implican un contrato entre los proveedores y consumidores de APIs. El contrato garantiza que, con el tiempo, la API cambiará de forma predecible. Por ejemplo, la API de Book se puede actualizar para agregar parámetros de búsqueda adicionales, como title o author, o cambiar el JSON de 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 punto de entrada, del servicio de backend
  • El formato de datos de cualquier dato pasado en una solicitud a la API
  • El formato de los datos que muestra 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, utiliza la interfaz de línea de comandos de gcloud para subirla a una configuración de API en GCP:

Usa gcloud para subir las especificaciones de la API a GCP.

Implementa una configuración de API en API Gateway

Para crear tu API, implementa la configuración de 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 implementar la configuración de la API, tus clientes pueden realizar llamadas de REST a la API.

Administra una API

Una vez implementada y en ejecución, puedes supervisar la actividad de la API, como las métricas de uso y los registros. Cuando un cliente realiza una solicitud a tu API, API Gateway registra la información sobre la solicitud y la respuesta. API Gateway también hace un seguimiento de la latencia, el tráfico y los errores.

Con el tiempo, es posible que desees actualizar una API implementada para agregar funcionalidades nuevas, mejorar el rendimiento o corregir problemas con la API. Para actualizar una API implementada, solo debes actualizar la especificación de OpenAPI correspondiente a la definición de la API y, luego, subirla y volver a implementarla.

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?