Para muitos apps, é 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, App Engine ou funções do Cloud Run. No entanto, para entender todo o código, é útil ter alguma experiência com .NET, JavaScript e HTML.
Objetivos
- Entenda e implante os serviços do Cloud Run.
- Testar o app.
Custos
Neste documento, você vai 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. 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.
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
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.
Enable the Firestore, Cloud Run, Pub/Sub, and Cloud Translation APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
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-dotnet.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 exemplo da tarefa em segundo plano:
cd getting-started-dotnet/BackgroundProcessing
Como entender o serviço TranslateWorker
O serviço começa importando várias dependências, como Firestore e Translation.
Os clientes do Firestore e do Translation são inicializados para que possam ser reutilizados entre chamadas do gerenciador. Dessa forma, você não precisa inicializar novos clientes para cada chamada, o que atrasaria a execução.
A API Translation traduz a string para o idioma selecionado.
O construtor do controlador recebe os clientes do Firestore e do Pub/Sub.
O método
Postanalisa a mensagem do Pub/Sub para ver o texto a ser traduzido. Ele usa o ID da mensagem como um nome exclusivo para a solicitação de tradução para garantir que não armazene nenhuma tradução duplicada.
Como implantar o serviço TranslateWorker
No diretório
BackgroundProcessing, execute o script do PowerShell para criar e implantar o serviço no Cloud Run:PublishTo-CloudRun.ps1
Como entender o script PublishTo-CloudRun.ps1
O script PublishTo-CloudRun.ps1 publica o serviço no Cloud Run e protege o serviço TranslateWorker contra abuso. Se o serviço permitisse todas as conexões de entrada, qualquer pessoa poderia postar solicitações de tradução para o controlador e, portanto, incorrer em custos. Portanto, você configura o serviço para aceitar apenas solicitações POST do Pub/Sub.
O script faz o seguinte:
- Cria o aplicativo localmente usando
dotnet publish. - Cria um contêiner que executa o aplicativo usando o Cloud Build.
- Implanta o aplicativo no Cloud Run.
- Permite que o projeto crie tokens de autenticação do Pub/Sub.
- Cria uma conta de serviço para representar a identidade da assinatura do Pub/Sub.
- Concede à conta do serviço permissão para chamar o serviço
TranslateWorker. Cria um tópico e uma assinatura do Pub/Sub.
Como entender o serviço TranslateUI
O serviço TranslateUI renderiza uma página da Web que exibe traduções recentes e aceita solicitações de novas traduções.
A classe
StartUpconfigura um aplicativo ASP.NET e cria clientes do Pub/Sub e do Firestore.O gerenciador de índices
Indexrecebe todas as traduções existentes do Firestore e preenche umViewModelcom 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 valida a solicitação e publica uma mensagem no Pub/Sub:
Como implantar o serviço TranslateUI
No diretório
BackgroundProcessing, execute o script do PowerShell para criar e implantar o serviço no Cloud Run:./PublishTo-CloudRun.ps1
Como entender o script PublishTo-CloudRun.ps1
O script PublishTo-CloudRun.ps1 publica o aplicativo no Cloud Run.
O script faz o seguinte:
- Cria o aplicativo localmente usando
dotnet publish. - Cria um contêiner que executa o aplicativo usando o Cloud Build.
Implanta o aplicativo no Cloud Run.
Como testar o app
Após executar com êxito o script PublishTo-CloudRun.ps1, tente solicitar uma tradução.
O comando final no script
PublishTo-CloudRun.ps1informa o URL do seu serviço de IU. Na janela do seu terminal, encontre o URL do serviçoTranslateUI:gcloud beta run services describe translate-ui --region $region --format="get(status.address.hostname)"
No seu navegador, acesse o URL que você recebeu na etapa anterior.
Há uma página com uma lista vazia de traduções e um formulário para solicitar novas traduções.
No campo Texto a ser traduzido, digite algum texto a ser traduzido, por exemplo,
Hello, World.Clique em Enviar.
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 script
PublishTo-CloudRun.ps1foi 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 Google Cloud , acesse a página do Cloud Run.
Clique no nome do serviço,
translate-ui.Clique em Registros.
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 do Google Cloud
- 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.
Exclua os serviços do Cloud Run.
Exclua os serviços do Cloud Run que você criou neste tutorial:
gcloud beta run services delete --region=$region translate-ui
gcloud beta run services delete --region=$region translate-worker