Para muitos aplicativos, é necessário fazer o processamento em segundo plano fora do contexto de uma solicitação da Web. Este tutorial cria um app da Web que permite aos usuários inserir texto para traduzir e, em seguida, exibe uma lista de traduções anteriores. A tradução é feita em um processo em segundo plano para evitar o bloqueio da solicitação do usuário.
O diagrama a seguir ilustra o processo de solicitação da tradução.
Aqui está a sequência de eventos sobre como o tutorial do app funciona:
- Acesse a página da Web para ver uma lista de traduções anteriores armazenadas no Firestore.
- Solicite uma tradução de texto inserindo um formulário HTML.
- A solicitação de tradução é publicada no Pub/Sub.
- Um serviço do Cloud Run inscrito nesse tópico Pub/Sub é acionado.
- O serviço do Cloud Run usa o Cloud Translation para traduzir o texto.
- O serviço do Cloud Run armazena o resultado no Firestore.
Este tutorial se destina a qualquer pessoa interessada em aprender sobre o processamento em segundo plano com o Google Cloud. Nenhuma experiência anterior é necessária com Pub/Sub, Firestore, Cloud Run. No entanto, para entender todo o código, é útil alguma experiência com Java e HTML.
Objetivos
- Entenda e implemente um serviço do Cloud Run.
- Testar o app.
Custos
Neste documento, você usará os seguintes componentes faturáveis 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. Saiba mais em Limpeza.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Firestore, Pub/Sub, and Cloud Translation APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Atualize os componentes
gcloud
:gcloud components update
- Prepare seu ambiente de desenvolvimento.
Como preparar o aplicativo
Na janela de terminal, clone o repositório do app de amostra em sua máquina local:
git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Mude para o diretório que contém o código de amostra do processamento em segundo plano:
cd getting-started-java/background
Noções básicas sobre o app
Há dois componentes principais para o app da Web:
- Um servidor HTTP Java para gerenciar solicitações da Web. O servidor tem os dois endpoints a seguir:
/translate
GET
(usando um navegador da Web): exibe as 10 solicitações de tradução processada mais recentes enviadas pelos usuários.POST
(com uma assinatura do Pub/Sub): processa solicitações de tradução usando a API Cloud Translation e armazena os resultados no Firestore.
/create
: o formulário para enviar novas solicitações de conversão.
- Atender clientes que processam as solicitações de tradução enviadas pelo formulário da Web. Existem três clientes que trabalham juntos:
- Pub/Sub: quando o formulário da Web é enviado por um usuário, o cliente do Pub/Sub publica uma mensagem com os detalhes da solicitação. Uma assinatura criada neste tutorial retransmite essas mensagens para o terminal Cloud Run que você cria para executar traduções.
- Translation: este cliente lida com solicitações de Pub/Sub executando as traduções.
- Firestore: Quando a tradução é concluída, este cliente armazena os dados da solicitação junto com a tradução no Firestore. Esse cliente também lê as solicitações mais recentes no terminal
/translate
principal.
Como entender o código do Cloud Run
O aplicativo Cloud Run tem dependências no Firestore, Translation e Pub/Sub.
Os clientes globais do Firestore, Translation e Pub/Sub são inicializados para que possam ser reutilizados entre invocações. Dessa forma, você não precisa inicializar novos clientes para cada chamada, o que atrasaria a execução.
O gerenciador de índice (
/
) obtém todas as traduções existentes do Firestore e preenche um modelo de HTML com a lista:Novas traduções são solicitadas através do envio de um formulário HTML. O gerenciador de tradução de solicitação, registrado em
/create
, analisa o envio do formulário, valida a solicitação e publica uma mensagem no Pub/Sub:A assinatura do Pub/Sub que você cria encaminha essas solicitações para o terminal Cloud Run, que analisa a mensagem do Pub/Sub para obter o texto a ser traduzido e o idioma de destino desejado. A API de tradução converte a sequência no idioma selecionado.
O aplicativo armazena os dados de tradução em um novo documento criado no Firestore.
Como implantar o aplicativo do Cloud Run
Escolha um Nome de tópico do Pub/Sub secundária e gere um token de verificação de publicação/publicação secundária usando
uuidgen
ou um gerador UUID on-line, como uuidgenerator.net. Esse token garantirá que o ponto de extremidade do Cloud Run aceite apenas solicitações da assinatura do Pub/Sub que você criar.export PUBSUB_TOPIC=background-translate export PUBSUB_VERIFICATION_TOKEN=your-verification-token
Crie um tópico do Pub/Sub:
gcloud pubsub topics create $PUBSUB_TOPIC
- Substitua
MY_PROJECT
no arquivopom.xml
pelo seu ID do projeto do Cloud.
- Substitua
Crie e implemente uma imagem do seu código no GCR (um repositório de imagens) com o plug-in Maven do Jib.
mvn clean package jib:build
Implante o app no Cloud Run:
gcloud run deploy background --image gcr.io/MY_PROJECT/background \ --platform managed --region us-central1 --memory 512M \ --update-env-vars PUBSUB_TOPIC=$PUBSUB_TOPIC,PUBSUB_VERIFICATION_TOKEN=$PUBSUB_VERIFICATION_TOKEN
Onde
MY_PROJECT
é o nome do projeto Cloud que você criou. Este comando gera o terminal para o qual sua assinatura do Pub/Sub envia solicitações de tradução. Anote esse terminal, pois você precisará criar a assinatura do Pub/Sub e o visitará em um navegador para solicitar uma nova tradução.
Como testar o app
Depois de implantar o serviço do Cloud Run, tente solicitar uma tradução.
Para visualizar o aplicativo no seu navegador, acesse o ponto de extremidade do Cloud Run que você criou anteriormente.
Há uma página com uma lista vazia de traduções e um formulário para solicitar novas traduções.
Clique em + Solicitar tradução, preencha o formulário de solicitação e clique em Enviar.
O envio o leva automaticamente de volta ao caminho
/translate
, mas a nova tradução pode ainda não aparecer. Para atualizar a página, clique em Atualizar refresh. Há uma nova linha na lista de tradução. Se você não vir uma tradução, aguarde mais alguns segundos e tente novamente. Se você ainda não vir uma tradução, consulte a próxima seção sobre como depurar o aplicativo.
Como depurar o aplicativo
Se você não conseguir se conectar ao seu serviço do Cloud Run ou não vir novas traduções, verifique o seguinte:
Verifique se o comando
gcloud run deploy
foi concluído com êxito e não gerou erros. Se houver erros (por exemplo,message=Build failed
), corrija-os e tente executar novamente.Verifique se há erros nos registros:
No Console do Google Cloud, acesse a página do Cloud Run.
Clique no nome do serviço,
background
.Clique em Registros.
Limpar
Excluir o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Exclua os serviços do Cloud Run.
Exclua os serviços do Cloud Run que você criou neste tutorial:
gcloud run services delete --region=$region background
A seguir
- Saiba mais sobre o Cloud Run.
- Teste o Cloud Run, que permite executar contêineres sem estado em um ambiente totalmente gerenciado ou em seu próprio cluster do Google Kubernetes Engine.