IBM Cloud Docs
Aplicativo da web serverless e API com o Code Engine

Aplicativo da web serverless e API com o Code Engine

Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.

Neste tutorial, você criará um aplicativo da web sem servidor usando um bucket em Object Storage e implementará o back-end do aplicativo usando o IBM Cloud Code Engine e o IBM Cloudant como banco de dados de documentos JSON.

Os websites estáticos são ótimos para desempenho e segurança. O seu modelo arquitetônico é, às vezes, referido como Jamstack em referência a JavaScript, API e Markup. Neste tutorial, você criará um website estático hospedado em Object Storage. O website tem um guestbook que usa JavaScript para acessar uma API para recuperação de entradas ou para inclusão de uma nova entrada. A API para interação com o banco de dados auxiliar é implementada usando uma abordagem serverless. Ele é implementado como app de back-end ou microsserviço para o IBM Cloud Code Engine. O back-end só é executado quando necessário e, portanto, ocorrem encargos quando em uso.

Objetivos

  • Implementar um back-end serverless e um banco de dados
  • Exponha uma API de REST como app serverless
  • Hospedar um website estático

O aplicativo mostrado neste tutorial é um website de guestbook simples no qual os usuários podem postar mensagens.

Arquitetura*Diagrama de
do

  1. O usuário acessa o aplicativo hospedado no depósito no Object Storage
  2. O aplicativo da web chama uma API de back-end.
  3. O app com a API de back-end é implementado para Code Engine.
  4. O back-end usa o IBM Cloudant para armazenar e recuperar entradas de guestbook.

Criar o banco de dados do Guestbook

Vamos começar criando uma instância de serviço do IBM Cloudant. O IBM Cloudant é um banco de dados de documentos JSON totalmente gerenciado. Ele é construído com base no Apache CouchDB e é compatível com ele.

  1. No Catálogo, em Serviços, vá para a categoria Bancos de dados. Clique no quadro IBM Cloudant. No novo diálogo:
    1. Em Diversos locatários, selecione uma região.

    2. Em Configurar instância do Cloudant, escolha um nome exclusivo para o serviço, como <yourinitials>-guestbook-db.

    3. Selecione um grupo de recursos.

    4. Selecione IAM como método de autenticação.

    5. Selecione o plano Lite. Se você já tiver um plano Lite em sua conta, selecione outro plano de serviço.

    6. Clique em Criar.

  2. De volta ao site IBM Cloud Lista de recursos, em Serviços, clique na instância IBM Cloudant que você criou para abrir a página de detalhes completos da instância. Nota: poderá ser necessário esperar até que o status do serviço mude para Active.
  3. Clique em Ativar painel para abrir o painel em uma nova guia do navegador.
  4. No canto superior direito, clique em Criar banco de dados. Digite guestbook como nome e selecione Non-Partioned (Não particionado ) em Partitioning (Particionamento ). Clique em Criar para criar o banco de dados.

Criar back-end serverless

Nesta seção, você criará o app de back-end serverless com o Code Engine. Apps serverless apenas incorrem em encargos para tempo de execução ideal para soluções acessadas com pouca frequência como um guestbook.

Crie um projeto Code Engine

  1. Navegue para a página do IBM Cloud Code Engine Visão geral
  2. No painel esquerdo, clique em Projetos e, em seguida, em Criar,
    • Selecione uma localização.
    • Use <yourinitials>-guestbook como nome do projeto e selecione o mesmo grupo de recursos de antes.
    • Clique em Criar.
    • Aguarde até que o status do projeto mude para Ativo.
  3. Clique no nome do projeto para inserir o painel do projeto.

Crie e implemente o app de back-end

  1. Dentro do painel do projeto, clique em Aplicativos e, então, em Criar.
  2. No novo diálogo, digite guestbook-backend como nome.
  3. Deixe Imagem do contêiner selecionado e use icr.io/solution-tutorials/tutorial-serverless-api-webapp:latest como Referência de imagem. Ele usa uma imagem de contêiner já existente.
  4. Sob Recursos de instância, selecione 0.25 vCPU / 0.5 GB para CPU e memória. Não são necessários muito recursos para este tipo de aplicativo.
  5. Aumente o número mínimo de instâncias para 1 e reduza o número máximo de instâncias para 2. O mínimo de um torna o app mais responsivo durante os testes iniciais. É possível reduzi-lo posteriormente a zero novamente.
  6. Clique em Criar para implementar o novo aplicativo de back-end para o guestbook. Observe que sem a próxima etapa de criação de uma ligação de serviços, a implementação falhará com um erro de código.
  7. Crie uma ligação de serviço para o banco de dados
    1. Clique na guia Service bindings.
    2. Clique em Criar.
    3. Clique em IBM Cloud instância de serviço e escolha seu banco de dados no menu suspenso.
    4. Deixe a Função como Gravador
    5. Clique em Incluir.
  8. Aguarde até que o provisionamento apareça como verde e pronto. Clique em Aplicativo de teste e depois na URL do aplicativo. O app de back-end deve carregar e retornar uma página dizendo healthy. Lembre-se ou copie a URL do aplicativo porque ela é necessária para a próxima parte.

Em vez de usar a imagem de contêiner pré-construída, é possível construir a imagem por conta própria. Isso pode ser feito fora ou com a ajuda do Code Engine. Se você não usar a imagem do contêiner pré-construída e se usar um registro de contêiner privado, etapas adicionais podem ser necessárias. Você pode encontrar a fonte em https://github.com/IBM-Cloud/serverless-guestbook/tree/ce

Implementar o app da web

Crie um bucket do Object Storage configurado com hospedagem de website estática contendo os arquivos para o aplicativo de JavaScript do guestbook que usa o banco de dados IBM Cloudant.

Crie uma instância do Object Storage:

  1. Selecione Object Storage no catálogo.
  2. Selecione IBM Cloud para a Infraestrutura e Padrão para o plano.
  3. Insira um nome de serviço exclusivo para a instância, como <yourinitials>-guestbook-cos.
  4. Selecione um grupo de recursos.
  5. Clique em Criar.

Crie um depósito configurado para hospedagem de website estático:

  1. Clique em Criar um depósito.
  2. Clique em Customizar seu bucket.
  3. Insira um nome de bucket que seja exclusivo em todas as contas IBM. Tente <yourinitials>-guestbook.
  4. Selecione resiliência como Regional.
  5. Selecione um Local consistente com a instância do IBM Cloudant.
  6. Mantenha a Classe de armazenamento padrão
  7. Role até Hospedagem de website estático e clique em Incluir+.
  8. Mantenha as regras de Roteamento (individuais) selecionadas e inclua o documento Índice index.html.
  9. Clique em Acesso público para Ativar
  10. Clique em Salvar
  11. Role até a parte inferior e clique em Criar depósito

Copie os arquivos do diretório docs de https://github.com/IBM-Cloud/serverless-guestbook/tree/ce no bucket:

  1. Abra https://github.com/IBM-Cloud/serverless-guestbook/tree/ce em uma nova guia.

  2. Faça o download de um arquivo zip clicando em Código e, em seguida, Fazer download do ZIP.

  3. Descompacte o arquivo zip e navegue até o diretório docs do arquivo descompactado.

  4. Edite guestbook.js - substitua o valor de apiUrl pela URL do aplicativo da seção anterior.

    Certifique-se de que a URI não termine em uma barra (/). Caso contrário, o aplicativo não funcionará

  5. Abra a visualização Objetos do depósito e arraste e solte os arquivos guestbook.js e index.html no depósito do COS.

  6. Navegue até a guia Configuração para o bucket. Na seção Endpoints, localize a seção Static website hosting endpoints. Copie o endpoint Public em uma guia do navegador.

  7. Você deve ver a página do guestbook.

  8. Inclua novas entradas para o guestbook.

Captura de tela do Guestbook
Captura de tela do Guestbook

Remover recursos

Para excluir o depósito e o serviço Object Storage criados:

  1. Navegue até os objetos de depósito do Object Storage
  2. Marque a caixa na linha do título para selecionar todos os objetos no depósito
  3. Clique em Excluir objetos
  4. Na parte superior direita do menu Ações da página de objeto de depósito, selecione Excluir depósito
  5. No canto superior direito do menu Ações da instância Object Storage, selecione Excluir instância

Para excluir o serviço IBM Cloudant criado,

  1. Navegue para a lista de recursos
  2. Em Bancos de dados, clique no menu de ação ao lado de <yourinitials>-guestbook-db service
  3. Clique em Excluir

Para excluir o aplicativo e o projeto do Code Engine,

  1. Navegue até a página de entrada do Code Engine.
  2. No painel esquerdo, clique em Projetos.
  3. Na lista de projetos, confira o projeto do guestbook e, em seguida, clique em Excluir.

Dependendo do recurso, ele não é excluído imediatamente, mas retido (por padrão por 7 dias). É possível recuperar o recurso excluindo-o permanentemente ou restaurando-o dentro do período de retenção. Consulte este documento sobre como usar a recuperação de recurso.

Conteúdo relacionado