En la actualidad, los servicios basados en la Web proporcionan una gran variedad de funcionalidades, desde mapas, clima, imágenes y juegos, subasta y muchos otros tipos de servicios. Los proveedores de servicios tienen muchas opciones para implementar, desplega 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 mediante una arquitectura y servicios nuevos implementados con una arquitectura completamente diferente.
Independientemente de la implementación, los servicios basados en la Web requieren una manera de hacer que los servicios 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 clientes de 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 servicios de forma pública en la Web puede ser difícil. 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 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 estos servicios puede ser un desafío para los desarrolladores de aplicaciones. 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 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:
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 API en API Gateway, puedes actualizar el servicio de backend o incluso mover el servicio de una arquitectura a otra sin tener que cambiar la API. Siempre que la API de su servicio permanezca coherente, los desarrolladores de aplicaciones no tendrán que modificar las aplicaciones implementadas debido a los cambios subyacentes en su 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 PDF 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, 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
Debido a que este servicio tiene una API bien definida, incluida una descripción de formatos de datos y 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 API son sensibles a los cambios, las API también implican un contrato entre los proveedores de API y los consumidores de API. El contrato garantiza que, con el tiempo, la API cambiará de manera predecible. Por ejemplo, la API del libro puede actualizarse para agregar parámetros de búsqueda adicionales, como title
o author
, o cambiar la respuesta JSON para agregar información adicional sobre el libro.
Define 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 los datos que se pasan a una solicitud a la API
- El formato de datos 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, usa la interfaz de línea de comandos gcloud para subirla a una configuración de API en 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:
Una vez implementada la configuración de la API, tus clientes pueden realizar llamadas de REST a la API.
Administra una API
Una vez implementado y en ejecución, puedes supervisar la actividad de la API, como las métricas y los registros de uso. 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 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 solucionar problemas con la API. Para actualizar una API implementada, simplemente actualiza la especificación de OpenAPI destinada a 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.