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.
- O usuário acessa o aplicativo hospedado no depósito no Object Storage
- O aplicativo da web chama uma API de back-end.
- O app com a API de back-end é implementado para Code Engine.
- 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.
- No Catálogo, em Serviços, vá para a categoria Bancos de dados. Clique no quadro IBM Cloudant. No novo diálogo:
-
Em Diversos locatários, selecione uma região.
-
Em Configurar instância do Cloudant, escolha um nome exclusivo para o serviço, como
<yourinitials>-guestbook-db. -
Selecione um grupo de recursos.
-
Selecione IAM como método de autenticação.
-
Selecione o plano Lite. Se você já tiver um plano Lite em sua conta, selecione outro plano de serviço.
-
Clique em Criar.
-
- 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. - Clique em Ativar painel para abrir o painel em uma nova guia do navegador.
- No canto superior direito, clique em Criar banco de dados. Digite
guestbookcomo 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
- Navegue para a página do IBM Cloud Code Engine Visão geral
- No painel esquerdo, clique em Projetos e, em seguida, em Criar,
- Selecione uma localização.
- Use
<yourinitials>-guestbookcomo nome do projeto e selecione o mesmo grupo de recursos de antes. - Clique em Criar.
- Aguarde até que o
statusdo projeto mude para Ativo.
- Clique no nome do projeto para inserir o painel do projeto.
Crie e implemente o app de back-end
- Dentro do painel do projeto, clique em Aplicativos e, então, em Criar.
- No novo diálogo, digite
guestbook-backendcomo nome. - Deixe Imagem do contêiner selecionado e use
icr.io/solution-tutorials/tutorial-serverless-api-webapp:latestcomo Referência de imagem. Ele usa uma imagem de contêiner já existente. - Sob Recursos de instância, selecione
0.25 vCPU / 0.5 GBpara CPU e memória. Não são necessários muito recursos para este tipo de aplicativo. - 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.
- 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.
- Crie uma ligação de serviço para o banco de dados
- Clique na guia Service bindings.
- Clique em Criar.
- Clique em IBM Cloud instância de serviço e escolha seu banco de dados no menu suspenso.
- Deixe a Função como Gravador
- Clique em Incluir.
- 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:
- Selecione Object Storage no catálogo.
- Selecione IBM Cloud para a Infraestrutura e Padrão para o plano.
- Insira um nome de serviço exclusivo para a instância, como
<yourinitials>-guestbook-cos. - Selecione um grupo de recursos.
- Clique em Criar.
Crie um depósito configurado para hospedagem de website estático:
- Clique em Criar um depósito.
- Clique em Customizar seu bucket.
- Insira um nome de bucket que seja exclusivo em todas as contas IBM. Tente
<yourinitials>-guestbook. - Selecione resiliência como Regional.
- Selecione um Local consistente com a instância do IBM Cloudant.
- Mantenha a Classe de armazenamento padrão
- Role até Hospedagem de website estático e clique em Incluir+.
- Mantenha as regras de Roteamento (individuais) selecionadas e inclua o documento Índice index.html.
- Clique em Acesso público para Ativar
- Clique em Salvar
- 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:
-
Abra https://github.com/IBM-Cloud/serverless-guestbook/tree/ce em uma nova guia.
-
Faça o download de um arquivo zip clicando em Código e, em seguida, Fazer download do ZIP.
-
Descompacte o arquivo zip e navegue até o diretório
docsdo arquivo descompactado. -
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á -
Abra a visualização Objetos do depósito e arraste e solte os arquivos guestbook.js e index.html no depósito do COS.
-
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.
-
Você deve ver a página do guestbook.
-
Inclua novas entradas para o guestbook.
Remover recursos
Para excluir o depósito e o serviço Object Storage criados:
- Navegue até os objetos de depósito do Object Storage
- Marque a caixa na linha do título para selecionar todos os objetos no depósito
- Clique em Excluir objetos
- Na parte superior direita do menu Ações da página de objeto de depósito, selecione Excluir depósito
- 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,
- Navegue para a lista de recursos
- Em Bancos de dados, clique no menu de ação ao lado de
<yourinitials>-guestbook-dbservice - Clique em Excluir
Para excluir o aplicativo e o projeto do Code Engine,
- Navegue até a página de entrada do Code Engine.
- No painel esquerdo, clique em Projetos.
- 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.