Este tutorial é para quem está começando a criar apps na nuvem, como engenheiros e desenvolvedores da Web que querem aprender os conceitos principais do desenvolvimento de apps no Google Cloud.
Objetivos
- Aprender ferramentas básicas do Google Cloud , como o console doGoogle Cloud e o
gcloud. - Implantar seu app no Cloud Run.
- Manter seus dados no Firestore.
- Armazenar uploads de arquivos no Cloud Storage.
- Monitore seu app usando o Google Cloud Observability.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
As instruções deste documento foram criadas para manter o uso dos seus recursos dentro dos limites do nível Sempre sem custos financeiros do Google Cloud.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Para criar um banco de dados do Firestore no modo nativo, conclua as seguintes etapas:
-
No console do Google Cloud , acesse a página Criar banco de dados do Firestore.
- Na tela Selecione um modo do Cloud Firestore, clique em Selecionar Modo nativo.
- Selecione um local para seu banco de dados do Firestore. Essa configuração é o local padrão de recursos do Google Cloud para seu projeto do Google Cloud . Esse local é usado para serviços do Google Cloud no seu projeto do Google Cloud que exigem uma configuração de local, especificamente, o bucket padrão do Cloud Storage e o app do Cloud Run.
- Clique em Criar banco de dados.
-
No console do Google Cloud , acesse a página Criar banco de dados do Firestore.
-
Ative as APIs Cloud Run Admin, Cloud Storage, Cloud Logging e Error Reporting.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis. -
Clone o repositório de amostra e abra o aplicativo de amostra no Cloud Shell:
Acessar o Cloud ShellO Cloud Shell oferece acesso por linha de comando aos seus recursos do Google Cloud diretamente no navegador.
- Para fazer o download do código de exemplo e passar para o diretório do app, clique em Continuar.
-
No Cloud Shell, configure a ferramenta
gcloudpara usar seu novo Google Cloud projeto:# Configure gcloud for your project gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto Google Cloud que você criou usando o console Google Cloud .
A Google Cloud CLI é a principal maneira de interagir com seus recursos do Google Cloud na linha de comando. Neste tutorial, você usará a ferramenta
gcloudpara implantar e monitorar seu app.
Executar o app
-
No Cloud Shell, instale as dependências do app usando
pip:pip3 install -r requirements.txt --user
-
Execute o servidor HTTP Gunicorn:
~/.local/bin/gunicorn -b :8080 main:app
- No Cloud Shell, clique em Visualização da Web e selecione Visualizar na porta 8080. Uma nova janela será aberta com o app em execução.
Implantar o app no Cloud Run
OGoogle Cloud oferece várias opções para executar seu código. Neste exemplo, você usa o Cloud Run para implantar um app escalonável em Google Cloud. O Cloud Run não exige que você gerencie servidores e é escalonado automaticamente para suportar picos de tráfego.
- Use o Cloud Build para criar um contêiner do Docker e publicar no Container Registry:
gcloud builds submit --tag gcr.io/
PROJECT_ID/bookshelf .Substitua
PROJECT_IDpelo ID do projeto Google Cloud que você criou. - Execute o contêiner com o Cloud Run:
gcloud run deploy bookshelf --image gcr.io/
PROJECT_ID/bookshelf \ --platform managed --region us-central1 --allow-unauthenticatedAgora, é possível visualizar o aplicativo no URL exibido na saída de
gcloud run:Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving 100 percent of traffic. Service URL: https://bookshelf-swsmmh5s5a-uc.a.run.app
-
Copie o URL no navegador da Web para ver o app.

Para mais informações sobre a implantação no Cloud Run, consulte a documentação do Cloud Run.
Manter seus dados no Firestore
Não é possível armazenar informações nas suas instâncias do Cloud Run porque elas serão perdidas se a instância for reiniciada e deixarão de existir quando novas instâncias forem criadas. No entanto, é possível usar um banco de dados no qual todas as suas instâncias possam ler e gravar dados.
OGoogle Cloud oferece várias opções para armazenar seus dados. Neste exemplo, você usa o Firestore para armazenar os dados de cada livro. O Firestore é um banco de dados de documentos NoSQL totalmente gerenciado e sem servidor, que permite armazenar e consultar dados. Ele é escalonado automaticamente para atender às necessidades do app, sendo reduzido a zero quando não estiver sendo usado. Adicione seu primeiro livro agora.
-
Para criar um livro para seu app implantado, clique em Adicionar livro.
- No campo Título, insira
Moby Dick. - No campo Autor, insira
Herman Melville. -
Clique em Salvar. Agora há uma entrada em seu app Bookshelf.
-
No console do Google Cloud , para atualizar a página do Firestore, clique em
Atualizar refresh.
Os dados são exibidos no Firestore. O app Bookshelf armazena cada livro como um
documento do Firestore
com um ID exclusivo. Todos esses documentos são armazenados em uma
coleção do Firestore.
Para os fins deste tutorial, a coleção é chamada de books.
O Firestore armazena os livros usando a biblioteca de cliente do Firestore (em inglês). Veja a seguir um exemplo de como buscar um documento do Firestore:
Para mais informações sobre como usar o Firestore, consulte Como adicionar dados ao Firestore.
Armazenar uploads de arquivos no Cloud Storage
Agora que você adicionou um livro, é hora de adicionar a imagem da capa. Não é possível armazenar arquivos em suas instâncias. Um banco de dados não é a opção correta para arquivos de imagem. Em vez disso, use o Cloud Storage.
O Cloud Storage é o principal repositório de blobs do Google Cloud. Use o Cloud Storage para hospedar recursos de app que você quer compartilhar em Google Cloud. Para usar o Cloud Storage, você precisa criar um bucket do Cloud Storage, um contêiner básico para guardar seus dados.
- No console do Google Cloud , acesse a página Navegador do Cloud Storage.
- Clique em Criar bucket.
- Na caixa de diálogo Criar bucket, insira um nome para ele, anexando o
ID do projeto Google Cloud à string
_bucketpara que o nome fique assim:YOUR_PROJECT_ID_bucket. Esse nome está sujeito aos requisitos de nome de bucket. Todos os demais campos permanecem nos valores padrão. - Clique em Criar.
- Após a criação do bucket, libere o acesso público aos objetos para que os usuários consigam vê-los. Para saber como fazer isso, consulte Como tornar os dados públicos.
-
Clique em Editar livroe selecione uma
imagem para carregar como a capa. Por exemplo, é possível usar este arquivo de domínio público:
-
Clique em Salvar. Você será redirecionado para a
página inicial onde há uma entrada do seu app Bookshelf.
O app Bookshelf envia os arquivos carregados para o Cloud Storage usando a biblioteca de cliente do Cloud Storage.
Para mais informações sobre como usar o Cloud Storage, consulte a introdução ao Cloud Storage.
Monitore seu app usando o Google Cloud Observability
Você implantou seu app, depois criou e modificou livros. Para monitorar esses eventos para seus usuários, use o Gerenciamento do desempenho de aplicativos.
Monitore registros com o Cloud Logging
-
No Google Cloud, acesse o Análise de registros.
Acessar a Análise de registrosÉ possível monitorar seu app em tempo real. Se encontrar problemas em seu app, este é o primeiro lugar a ser verificado.
- Na lista suspensa Recurso, selecione Revisão do Cloud Run, bookshelf.
Monitore erros com o Error Reporting
-
No console do Google Cloud , acesse a página Error Reporting.
Acessar a página Error Reporting
O Error Reporting destaca os erros e as exceções em seu app, além de permitir que você configure alertas para eles. -
No navegador, acesse o URL
/errorsem seu app.
YOUR_CLOUD_RUN_URL/errors
Isso gera uma nova exceção de teste e a envia ao Google Cloud Observability.
-
No console Google Cloud , volte para a página Error Reporting e aguarde alguns instantes para ver o novo erro. Clique em Atualizar automaticamente para não precisar atualizar manualmente a página.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o projeto
- No console Google Cloud , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.