Participe da Maratona Behind the Code! Prêmios e desafios incríveis te esperam, não perca! Inscreva-se aqui

Use uma arquitetura sem servidor, orientada por eventos, para executar um código que se dimensione automaticamente

Introdução

Você está buscando maneiras de usar os recursos de nuvem com eficiência e de desenvolver e implementar aplicativos de forma mais rápida?

As arquiteturas sem servidor, orientadas por eventos, podem executar um código que se dimensione automaticamente em resposta à demanda de uma API de REST. Nenhum código é executado até que uma chamada da API para um terminal associado a uma função seja recebida pelo gateway da API.

Em seguida, instâncias do aplicativo são iniciadas para corresponder exatamente à carga necessária para cada solicitação da API.

Descrição

O código neste repositório implementa uma API de REST sem servidor com o IBM Cloud Functions. A API de REST é uma implementação totalmente compatível da Todo-Backend API.

É possível implementá-la imediatamente usando um script de implementação do IBM Cloud Functions em seu próprio sistema.

Se você ainda não se inscreveu em uma conta da IBM Cloud, faça isso e acesse o Painel do Cloud Functions para explorar outros modelos de arquitetura de referência e fazer o download das ferramentas de linha de comandos, caso seja necessário.

Os componentes a seguir são usados neste padrão de código:

  • IBM Cloud Functions (desenvolvido com o Apache OpenWhisk): execute o código sob demanda em um ambiente sem servidor, altamente escalável.
  • APIs do Cloud Functions (desenvolvidas com o Apache OpenWhisk): defina as APIs que englobam um conjunto de ações do OpenWhisk.
  • O serviço do Cloudant: use uma camada de dados totalmente gerenciada e desenvolvida para aplicativos da web e móveis modernos que aproveitem um esquema JSON flexível (desenvolvido com o CouchDB).
  • O App ID service: inclua backends e APIs de autenticação seguros e gerencie dados específicos do usuário de aplicativos móveis e da web.

Este aplicativo é uma implementação totalmente compatível da Todo-Backend API, incluindo o suporte para autenticação.

Ele demonstra o uso do IBM Cloud Functions (com base no Apache OpenWhisk) para desenvolver uma API de REST. O caso de uso demonstra como as ações funcionam com os serviços de dados e executam uma lógica em resposta às solicitações da API. Ele também demonstra como proteger o conteúdo por trás da API usando o IBM App ID, exigindo um token de autenticação para acessar a API.

A autenticação é finalizada pelo gateway da API, para que o Functions não precise se preocupar com isso. O Functions recebe as informações do token JWS do gateway da API e pode usá-las para incluir regras de autorização de conteúdo. Nesse padrão, os usuários autenticados são conectados a um banco de dados Cloudant dedicado, para que cada “lista de pendências” do usuário seja pessoal e persista entre as sessões.

Ao usar este padrão de código, você adquire as seguintes aptidões:

  • Usar funções sem servidor agindo como APIs para um aplicativo simples de “lista de pendências”, com o suporte do Cloudant.
  • Incluir autorização facilmente para essas APIs usando o serviço App ID na IBM Cloud.

Fluxo

flow

1.Ao efetuar login, o usuário do aplicativo obtém um token do servidor de autenticação do IBM App ID. O serviço App ID verifica as credenciais do usuário em relação ao diretório da nuvem. O serviço App ID também pode ser configurado para usar provedores de autenticação diferentes. 1.O serviço de autenticação App ID retorna um token JWS ao usuário. 1.Uma solicitação de API (HTTP GET) é emitida do usuário para o gateway da API do Cloud Functions para acessar o recurso protegido, incluindo o token JWS. 1.O gateway da API do Cloud Functions valida o token por meio do serviço App ID. 1.O serviço App ID valida o token. 1.O gateway da API do Cloud Functions chama a função todo_get associada ao terminal da API e ao método HTTP. 1.A função usa o token JWS para saber qual é o usuário que está solicitando o recurso e para selecionar o conteúdo no banco de dados Cloudant que o usuário está autorizado a acessar. A função também cria a resposta HTTP e seu corpo JSON com o item de “tarefa pendente” solicitado.

Instruções

Encontre as etapas técnicas detalhadas para este padrão de código no arquivo README.md no repositório do GitHub.

  1. Configure a conta e as credenciais.
  2. Implemente por meio do script de implementação.
  3. Verifique usando o script de implementação ou manualmente.