Acerca do API Gateway

Atualmente, os serviços baseados na Web oferecem uma grande variedade de funcionalidades, o que significa que abrangem tudo, desde serviços de mapas, meteorologia e imagens, a jogos, leilões e muitos outros tipos de serviços. Os fornecedores de serviços têm muitas opções para implementar, implementar e gerir os respetivos serviços. Por exemplo, um serviço pode ser desenvolvido em Java ou .NET, enquanto outro usa Node.js.

As implementações de back-end também podem variar para um único fornecedor de serviços. Um fornecedor de serviços pode ter serviços antigos implementados com uma arquitetura e novos serviços implementados com uma arquitetura completamente diferente.

Independentemente da implementação, os serviços baseados na Web requerem uma forma de disponibilizar os serviços aos programadores de apps. Muitas vezes, estes serviços são expostos como um conjunto de pontos finais HTTP. Consoante o serviço, o ponto final também pode devolver dados, formatados como XML ou JSON, à app cliente.

Acerca dos Google Cloud serviços

Quando desenvolve os seus serviços na Google Cloud, tem muitas opções para implementar os serviços, como funções do Cloud Run, Cloud Run e ambiente padrão do App Engine. A flexibilidade do Google Cloud significa que escolhe a arquitetura de back-end correta para os requisitos do seu serviço.

Os programadores de apps são os clientes dos serviços de back-end. Os programadores de apps consomem os seus serviços para implementar apps para dispositivos móveis ou tablets, através de apps executadas num navegador ou através de qualquer outro tipo de app que possa fazer um pedido de serviço.

Expor serviços publicamente através da Web pode ser um desafio. Para ter êxito, um fornecedor de serviços tem de:

  • Autentique o acesso ao serviço
  • Transporte de dados seguro entre os clientes e o serviço
  • Proteja o serviço contra ataques maliciosos
  • Escalar o serviço à medida que a utilização aumenta ou diminui
  • Oferecer à equipa de operações de back-end uma forma de monitorizar e acompanhar a utilização do serviço
  • Monitorize a utilização para fornecer informações de faturação precisas

Além disso, se os seus serviços usarem interfaces e protocolos diferentes, o acesso a estes serviços pode ser um desafio para os programadores de apps. Os programadores não só têm de aprender e compreender cada interface de serviço, como também têm de monitorizar os diferentes serviços para verificar se existem alterações e, em seguida, atualizar e voltar a implementar as apps, conforme necessário.

API Gateway

O Gateway da API permite-lhe fornecer acesso seguro aos seus serviços através de uma API REST bem definida e consistente em todos os seus serviços, independentemente da implementação do serviço. Uma API consistente:

  • Facilita o consumo dos seus serviços por parte dos programadores de apps
  • Permite-lhe alterar a implementação do serviço de back-end sem afetar a API pública
  • Permite-lhe tirar partido das funcionalidades de escalabilidade, monitorização e segurança integradas na Google Cloud Platform (GCP)

A imagem seguinte mostra os programadores de apps a fazer pedidos aos seus serviços de back-end através do API Gateway:

Fazer pedidos de serviços Web através do API Gateway.

Com o API Gateway, os programadores de apps consomem as suas APIs REST para implementar apps. Uma vez que todas as APIs estão alojadas no API Gateway, os programadores de apps veem uma interface consistente em todos os serviços de back-end.

Ao implementar as suas APIs no API Gateway, pode atualizar o serviço de back-end ou até mesmo mover o serviço de uma arquitetura para outra, sem ter de alterar a API. Enquanto a API para o seu serviço se mantiver consistente, os programadores de apps não têm de modificar as apps implementadas devido a alterações subjacentes no seu back-end.

O API Gateway é um sistema de gestão de APIs distribuído que também oferece alojamento, registo, monitorização e outras funcionalidades para ajudar a criar, partilhar, manter e proteger as suas APIs. O API Gateway está integrado nativamente com o Google Cloud e processa todas as tarefas envolvidas no processamento de chamadas de API simultâneas, incluindo a gestão de tráfego, a autorização e a monitorização.

O que é uma API?

Uma API é uma interface que permite que uma aplicação consuma capacidades ou dados de outra aplicação. Ao definir pontos de entrada estáveis e bem documentados, as APIs permitem que os programadores acedam e reutilizem a lógica de aplicação criada por outros programadores.

Por exemplo, a tabela seguinte descreve um exemplo de uma API REST que pode devolver informações sobre um livro:

Propriedade Valor Descrição
URL https://www.mybooksapi.com/books/info Devolver o título, o autor e a data de publicação de um livro com base no respetivo International Standard Book Number (ISBN).
Verbo HTTP GET Faça um pedido GET à API.
Parâmetro de consulta isbn Transmitir o número ISBN do livro, ou seja, o ID do livro.
Dados de respostas
{
  "title" : "book_title",
  "author" : "author_name",
  "published" : "publish_date"
}
Objeto JSON com detalhes do livro.
Código de resposta 200 Pedido bem-sucedido.

Com estas informações, pode fazer o seguinte pedido cURL a esta API para obter informações sobre um livro:

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

Uma vez que este serviço tem uma API bem definida, incluindo uma descrição dos formatos de dados e dos códigos de resposta HTTP, o programador da app não precisa de saber nada sobre a implementação subjacente do serviço de back-end.

Uma vez que as aplicações que consomem APIs são sensíveis a alterações, as APIs também implicam um contrato entre os fornecedores e os consumidores de APIs. O contrato garante que, ao longo do tempo, a API vai mudar de forma previsível. Por exemplo, a API Books pode ser atualizada para adicionar parâmetros de consulta adicionais, como title ou author, ou alterar o JSON de resposta para adicionar informações adicionais sobre o livro.

Definir uma API

Define uma API implementada no API Gateway como uma especificação OpenAPI 2.0. Os componentes principais de uma definição de API incluem:

  • O URL ou o ponto de entrada do serviço de back-end
  • O formato dos dados de quaisquer dados transmitidos num pedido à API
  • O formato de dados de quaisquer dados devolvidos pelo serviço na resposta da API
  • O mecanismo de autenticação usado para controlar o acesso ao serviço

Depois de definir a API, use a interface de linha de comandos gcloud para a carregar para uma configuração da API no GCP:

Use o gcloud para carregar a especificação da API para o GCP.

Implementar uma configuração da API no API Gateway

Para criar a sua API, implemente a configuração da API no API Gateway. Use o comando gcloud para implementar a configuração da API:

Use o gcloud para implementar a especificação OpenAPI.

Depois de a configuração da API ser implementada, os seus clientes podem fazer chamadas REST para a API.

Gerir uma API

Depois de implementada e em execução, pode monitorizar a atividade da API, como as métricas de utilização e os registos. Quando um cliente faz um pedido à sua API, o API Gateway regista informações sobre o pedido e a resposta. O API Gateway também acompanha a latência, o tráfego e os erros.

Ao longo do tempo, pode querer atualizar uma API implementada para adicionar novas capacidades, melhorar o desempenho ou corrigir problemas com a API. Para atualizar uma API implementada, atualize a especificação OpenAPI da definição da API e, em seguida, carregue e reimplemente a API.

Controlar o acesso à API

O API Gateway permite-lhe configurar a sua API para exigir autenticação antes de o cliente poder aceder à API. O API Gateway suporta o mesmo mecanismo de autenticação e sintaxe usados pelo Cloud Endpoints, incluindo a utilização de:

Também pode usar a Google Cloud consola para partilhar a sua API com outros programadores para que possam ativar a sua API e gerar chaves da API para a chamar.

Além de definir um mecanismo de autenticação para validar a identidade de um utilizador, a sua API também tem de decidir o que o utilizador autenticado pode fazer com a sua API. Para mais informações, consulte o artigo Métodos de autenticação na Google.

O que se segue?