GSP702

Visão geral
Go é uma linguagem de programação de código aberto do Google que facilita a criação de softwares rápidos, confiáveis e eficientes em grande escala. Neste laboratório, você conhecerá os princípios básicos de Go implantando um aplicativo em Go simples no Cloud Run Functions e no App Engine. Em seguida, você usará o aplicativo em Go para acessar dados no BigQuery e no Firestore.
Atividades deste laboratório
Neste laboratório, você:
- Configurará o banco de dados do Firestore e importará dados
- Começará a conhecer o poder do Cloud Build
- Explorará dados no BigQuery e no Firestore
- Implantará um aplicativo em Go no App Engine e no Cloud Run Functions
- Analisará o código do aplicativo em Go
- Testará o aplicativo em todas as plataformas
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
Clique nas seguintes janelas:
- Continue na janela de informações do Cloud Shell.
- Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.
O que é Go?
Go (golang) é uma linguagem de uso geral projetada com a programação de sistemas em mente. Ela é fortemente tipada, tem coleta de lixo e oferece suporte de primeira classe para a realização de programações simultâneas. Os programas são desenvolvidos com base em pacotes, cujas propriedades permitem o gerenciamento eficiente de dependências.
Ao contrário do Python e do JavaScript, o Go é compilado e não interpretado. O código-fonte do Go é compilado em código de máquina antes da execução. Como resultado, o Go costuma ser mais rápido e eficiente do que as linguagens interpretadas e não exige um ambiente de execução instalado como Node, Python ou JDK para ser executado.
Plataformas sem servidor
A computação sem servidor permite que os desenvolvedores se concentrem em escrever código sem se preocupar com a infraestrutura. Essa opção também oferece muitas vantagens em relação à computação tradicional, incluindo o escalonamento automático e o pagamento apenas pelos recursos utilizados, além de não precisar de nenhum gerenciamento de servidores nem de provisionamento antecipado. Essas vantagens tornam a computação sem servidor ideal para casos de uso como aplicativos HTTP sem estado, Web, dispositivos móveis, back-ends de IoT, processamento de dados em lote e stream, bots de chat e muito mais.
O Go é perfeito para aplicativos na nuvem devido à sua eficiência, portabilidade e facilidade de aprender. Neste laboratório, você vai aprender a usar o Cloud Build para implantar um aplicativo em Go no Cloud Run Functions e no App Engine, que são plataformas sem servidor do Google:
- Cloud Run Functions
- App Engine
Observação: consulte Opções sem servidor para saber qual plataforma sem servidor se adequa melhor às suas necessidades.
Cloud Build
O Cloud Build é um serviço que executa seus builds na infraestrutura do Google Cloud. O Cloud Build pode importar o código-fonte do Cloud Storage, do GitHub ou do Bitbucket, executar um build de acordo com suas especificações e produzir artefatos como contêineres do Docker.
O Cloud Build executa o build como uma série de etapas de compilação. Cada uma delas ocorre em um contêiner do Docker. Uma etapa de build tem as mesmas atribuições possíveis que um contêiner, independentemente do ambiente. Para mais informações,
consulte a documentação do Cloud Build.
Cloud Run Functions
O Cloud Run Functions é a plataforma de computação sem servidor orientada por eventos do Google Cloud. Como o Go é compilado em um binário de código de máquina, não tem frameworks dependentes para iniciar e não exige um intérprete, seu tempo de inicialização a frio fica entre 80 e 1.400 ms. Isso significa que os aplicativos e serviços podem permanecer inativos sem gerar custos e, em seguida, iniciar e começar a veicular tráfego de inicialização a frio em 1.400 ms ou menos. Após essa primeira inicialização, a função atende ao tráfego instantaneamente. Esse fator por si só já torna o Go uma linguagem ideal para uma implantação do Cloud Run Functions.
Arquitetura
Quando você implanta seu aplicativo em Go de amostra, o Google Cloud Data Drive, no Cloud Run Functions, a arquitetura de fluxo de dados fica assim:

App Engine
O ambiente padrão do App Engine é baseado em instâncias de contêiner que são executadas na infraestrutura do Google. Os contêineres são pré-configurados com um dos diversos ambientes de execução disponíveis.
Arquitetura
Quando você implanta seu aplicativo em Go de amostra, o Google Cloud Data Drive, no App Engine, a arquitetura de fluxo de dados fica assim:

Código-fonte do Google Cloud Data Drive
Neste laboratório, você implantará um aplicativo simples chamado Google Cloud Data Drive. O Google desenvolveu e tornou esse aplicativo de código aberto para extrair dados do Google Cloud rapidamente. O aplicativo Google Cloud Data Drive é uma das ferramentas que demonstra padrões de uso eficazes para usar serviços e APIs do Cloud.
O aplicativo Google Cloud Data Drive em Go expõe um caminho do URL simples e combinável para recuperar dados no formato JSON de plataformas de dados do Google Cloud compatíveis. Atualmente, o aplicativo é compatível com o BigQuery e o Firestore, mas tem um design modular que pode oferecer suporte a qualquer número de fontes de dados.
Esses padrões do URL HTTP são usados para receber dados do Google Cloud executando o Google Cloud Data Drive.
Em que:
|
Parâmetro
|
Descrição
|
|
[SERVICE URL]
|
O URL de base do aplicativo do App Engine ou do Cloud Run Functions. No App Engine, o URL será parecido com https://[PROJECT ID].appspot.com/.
|
|
[PROJECT ID]
|
O ID do projeto da coleção do Firestore ou do conjunto de dados do BigQuery que você quer acessar. O ID do projeto fica no painel esquerdo do laboratório.
|
|
[COLLECTION]
|
O ID da coleção do Firestore (symbols/product)
|
|
[DOCUMENT]
|
O documento do Firestore que você quer retornar (symbol)
|
|
[DATASET]
|
O nome do conjunto de dados do BigQuery (publicviews)
|
|
[TABLE]
|
O nome da tabela do BigQuery (ca_zip_codes)
|
Observação : embora este laboratório use o curl para testar o aplicativo, você pode criar os URLs por conta própria para um teste de funcionalidade adicional em um navegador.
Tarefa 1: configure o ambiente.
- No Cloud Shell, insira o comando a seguir para criar uma variável de ambiente para armazenar o ID do projeto para usar mais tarde neste laboratório:
gcloud config set compute/region {{{ project_0.default_region | "filled in at lab startup." }}}
export REGION=$(gcloud config get compute/region)
export PROJECT_ID=$(gcloud info --format="value(config.project)")
- Copie o exemplo de código deste laboratório do Google Cloud Storage (GCS):
mkdir DIY-Tools
gsutil cp -R gs://spls/gsp702/DIY-Tools/* DIY-Tools/
Prepare seus bancos de dados
Neste laboratório, você usará dados de amostra no BigQuery e no Firestore para testar seu aplicativo em Go.
Banco de dados do BigQuery
O BigQuery é um data warehouse sem servidor e preparado para o futuro com vários recursos voltados para machine learning, particionamento de dados e segmentação. Isso permite analisar de gigabytes a petabytes de dados usando o ANSI SQL em velocidades incrivelmente rápidas e sem nenhuma sobrecarga operacional.
O conjunto de dados do BigQuery é uma visualização dos códigos postais da Califórnia e foi criado para você assim que o laboratório começou.
Banco de dados do Firestore
O Firestore é um banco de dados de documentos sem servidor com recursos de pesquisa de documentos super-rápidos e eventos em tempo real. Ele também é capaz de oferecer um SLA de 99,999%. Para usar dados no Firestore para testar seu aplicativo, você precisa inicializar o Firestore no modo nativo e importar os dados de amostra.
Uma instância de banco de dados no modo nativo do Firestore foi criada.
- No console do Cloud, clique em Menu de navegação > Firestore para abrir o Firestore no console.
Aguarde a inicialização da instância do banco de dados do Firestore. Esse processo também inicializa o App Engine na mesma região, o que permite implantar o aplicativo no App Engine sem criar primeiro uma instância do App Engine.
- No Cloud Shell, inicie um job de importação do Firestore que fornece dados de amostra do Firestore para o laboratório:
gcloud firestore import gs://$PROJECT_ID-firestore/prd-back
Esse job de importação carrega um backup do Cloud Firestore de uma coleção chamada symbols no bucket de armazenamento $PROJECT_ID-firestore.
Esse job de importação leva até cinco minutos para ser concluído. Comece a próxima seção enquanto espera.
Verifique a implantação do banco de dados do Firestore.
Configure permissões para o Cloud Build
O Cloud Build é um serviço que executa seus builds na infraestrutura do Google Cloud. Por padrão, o Cloud Build não tem permissões suficientes para implantar aplicativos no:
- App Engine
- Cloud Run Functions
É necessário ativar esses serviços antes de usar o Cloud Build para implantar o aplicativo Google Cloud Data Drive.
- No console, clique em Menu de navegação > Cloud Build > Configurações.
- Defina o Status do Cloud Functions como Ativado.

- Quando solicitado, clique em Conceder acesso a todas as contas de serviço.
- Defina o Status do Cloud Run como Ativado.
- Defina o Status do App Engine como Ativado.
Tarefa 2: implante no Cloud Run Functions
O Cloud Run Functions é a plataforma de computação sem servidor orientada por eventos do Google Cloud. Ao combinar o Go e o Cloud Run Functions, você consegue o melhor que o modelo sem servidor tem para oferecer em termos de tempos de ativação rápidos e escalonabilidade infinita, de forma que seu aplicativo pode alcançar os melhores tempos de resposta orientados por eventos possíveis.
Confira o código-fonte e veja como reutilizar o código-fonte do Google Cloud Data Drive em uma função do Cloud Run.
Analise a função main
- No início da função
main em DIY-Tools/gcp-data-drive/cmd/webserver/main.go, você deve pedir ao servidor da Web para enviar todas as solicitações HTTP para a função do Go gcpdatadrive.GetJSONData.
func main() {
// Register the initial HTTP handler.
http.HandleFunc("/", gcpdatadrive.GetJSONData)
port := os.Getenv("PORT")
...
- Confira a função
main em main.go no GitHub.
Em uma função do Cloud Run, o arquivo main.go não é usado. Em vez disso, o ambiente de execução da função do Cloud Run é configurado para enviar solicitações HTTP diretamente para a função do Go gcpdatadrive.GetJSONData, que é definida no arquivo DIY-Tools/gcp-data-drive/gcpdatadrive.go.
- Você pode ver como isso funciona analisando como o aplicativo Google Cloud Data Drive é implantado no Cloud Run Functions usando o Cloud Build com
cloudbuild_gcf.yaml:
Observação: os comentários foram removidos para fins de esclarecimento.

- Confira o arquivo
cloudbuild_gcf.yaml no GitHub.
Essas etapas do Cloud Build também são semelhantes às usadas para implantar o aplicativo no Cloud Run. Nesse caso, você implanta o aplicativo no Cloud Run Functions usando o comando gcloud functions deploy.
Observe que o parâmetro --entrypoint do Cloud Run Functions é usado para especificar a função GetJSONData e não a função main no pacote principal do Go que é usado quando ele é implantado no App Engine ou no Cloud Run.
Implante o aplicativo Google Cloud Data Drive
- No Cloud Shell, mude para o diretório do aplicativo que você clonou do GitHub:
cd ~/DIY-Tools/gcp-data-drive
- Insira o comando abaixo para buscar os detalhes do projeto e conceder a permissão
pubsub.publisher à conta de serviço.
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:$PROJECT_ID" --format='value(project_number)')
SERVICE_ACCOUNT=$(gcloud storage service-agent --project=$PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
- Implante o aplicativo Google Cloud Data Drive no Cloud Run Functions com o Cloud Build:
gcloud builds submit --config cloudbuild_gcf.yaml --project $PROJECT_ID --no-source --substitutions=_GIT_SOURCE_BRANCH="master",_GIT_SOURCE_URL="https://github.com/GoogleCloudPlatform/DIY-Tools",_GCP_REGION="{{{project_0.default_region}}}"
Observação: se você receber um erro de permissão 403, espere um minuto e tente executar o comando do build novamente. A propagação das permissões da conta de serviço costuma demorar alguns minutos.
- Insira o comando a seguir para permitir o acesso não autorizado à função do Cloud Run do Google Cloud Data Drive:
gcloud alpha functions add-iam-policy-binding gcp-data-drive --member=allUsers --role=roles/cloudfunctions.invoker
Se aparecer a pergunta Você quer executar o comando e conceder permissão a [allUsers] para invocar a função [gcp-data-drive] (S/N)?, responda Y.
- Armazene o URL do gatilho HTTP do Cloud Run Functions em uma variável de ambiente:
export CF_TRIGGER_URL=$(gcloud functions describe gcp-data-drive --format="value(url)")
- Use o
curl para chamar o aplicativo e consultar dados da coleção symbols do Firestore no seu projeto:
curl $CF_TRIGGER_URL/fs/$PROJECT_ID/symbols/product/symbol | jq .
A resposta será o conteúdo de um arquivo JSON com os valores da coleção symbols do seu projeto.
[
{
"asin": "",
"brand": "",
"category": "",
"docid": "914600502073",
"fbafees": 0,
"lastMatchLookup": "0001-01-01T00:00:00Z",
"listPrice": 0,
"manufacturer": "",
"pkgquantity": 0,
"salesrank": 0,
"smallImage": "",
"title": "",
"upc": "914600502073"
},
{
"asin": "0744018307",
"bbw": true,
"brand": "",
"category": "book_display_on_website",
"cpip": 2000,
"docid": "9780744018301",
"fba": false,
"fbafees": 722,
"inStock": "NOW",
"lastMatchLookup": "2020-03-13T14:00:10.209183Z",
"lastOfferLookup": "2020-03-13T14:00:13.670858Z",
"listPrice": 3999,
"manufacturer": "Prima Games",
"pkgquantity": 0,
"salesrank": 337073,
"sfbc": 0,
"sfbr": 0,
"smallImage": "http://ecx.images-amazon.com/images/I/51NFIAHRfTL._SL75_.jpg",
"title": "Wolfenstein II: The New Colossus: Prima Collector's Edition Guide",
"upc": "9780744018301"
}
]
- Use o
curl para chamar o aplicativo e consultar dados da tabela publicviews.ca_zip_codes do BigQuery no projeto do laboratório:
curl $CF_TRIGGER_URL/bq/$PROJECT_ID/publicviews/ca_zip_codes
A resposta será o conteúdo de um arquivo JSON com os resultados da instrução SQL do BigQuery SELECT * FROM publicviews.ca_zip_codes;.
[
{
"Zipcode": "96090",
"area_land_miles": 1.027,
"state_code": "CA"
},
{
"Zipcode": "94929",
"area_land_miles": 1.062,
"state_code": "CA"
}
]
Verifique a implantação do aplicativo do Cloud Run Functions.
Tarefa 3: outros gatilhos do Cloud Run Functions
O Cloud Run Functions tem uma arquitetura orientada por eventos. O aplicativo que você implantou usa uma solicitação HTTP como evento. Conheça o código de outro aplicativo em Go que aceita um tipo diferente de evento. A função é acionada por um evento de gravação do Firestore.
O código-fonte do Go abaixo foi adaptado do guia de exemplo de código do Go:
package mygopackage
import (
"context"
"fmt"
"log"
"time"
"cloud.google.com/go/functions/metadata"
)
// FirestoreEvent is the payload of a Firestore event.
type FirestoreEvent struct {
OldValue FirestoreValue `json:"oldValue"`
Value FirestoreValue `json:"value"`
UpdateMask struct {
FieldPaths []string `json:"fieldPaths"`
} `json:"updateMask"`
}
// FirestoreValue holds Firestore fields.
type FirestoreValue struct {
CreateTime time.Time `json:"createTime"`
Fields interface{} `json:"fields"`
Name string `json:"name"`
UpdateTime time.Time `json:"updateTime"`
}
// DoSomeThingOnWrite is triggered by
// a change to a Firestore document.
func DoSomeThingOnWrite(ctx context.Context, e FirestoreEvent) error {
meta, err := metadata.FromContext(ctx)
if err != nil {
return fmt.Errorf("metadata.FromContext: %v", err)
}
// The variables e and meta contain
// the information from the event
// so now we can Go do some logic
// work with the data. In this case
// we are simply writing it to the log.
log.Printf("Function triggered by change to: %v", meta.Resource)
log.Printf("Old value: %+v", e.OldValue)
log.Printf("New value: %+v", e.Value)
return nil
}
Confira o código-fonte de exemplo no GitHub.
Este exemplo contém código que pode ser usado para implantar o Cloud Run Functions que lida com eventos do Firestore, em vez do gatilho de solicitação HTTP usado no aplicativo de amostra do laboratório. Você registra essa função com um gatilho de evento do Cloud Firestore usando DoSomeThingOnWrite como o ponto de entrada do Cloud Run Functions.
Atualmente, o Cloud Run Functions é compatível com os seguintes gatilhos de eventos.

O exemplo acima é um caso simples, mas você pode imaginar o potencial. Há funções simples do Cloud Run em Go que executam tarefas que antes exigiam o gerenciamento de um sistema operacional. Por exemplo, você pode usar uma função como esta para executar uma prevenção contra perda de dados (DLP) para limpar os dados quando um cliente escreve algo no Cloud Firestore usando um app para dispositivos móveis.
A função do Cloud Run pode reescrever um relatório resumido para o Firestore para consumo na Web com base em um evento do Pub/Sub. Qualquer número de processos pequenos baseados em eventos são bons candidatos para o Cloud Run Functions em Go. E o melhor de tudo é que não há servidores para corrigir.
Tarefa 4: implante no App Engine
O App Engine é adequado para executar aplicativos em Go. O App Engine é uma plataforma de computação sem servidor totalmente gerenciada para escalonar verticalmente e reduzir a escala conforme as cargas de trabalho flutuam. Os aplicativos em Go são compilados em um único arquivo executável binário durante a implantação. Os tempos de inicialização a frio para aplicativos geralmente ficam entre 80 e 1.400 milissegundos e, quando em execução, o App Engine pode escalonar horizontalmente para atender às cargas de trabalho de escala global mais exigentes em segundos.
Revise o arquivo de configuração de YAML do Cloud Build
O arquivo YAML do Cloud Build, DIY-Tools/gcp-data-drive/cloudbuild_appengine.yaml, mostrado abaixo, contém as definições de etapas do Cloud Build que implantam seu aplicativo no App Engine. Você usa esse arquivo para implantar o aplicativo no App Engine.
A primeira etapa executa o comando git para clonar o repositório de origem que contém o aplicativo. Essa etapa é parametrizada para permitir que você alterne facilmente entre ramificações de aplicativos.
A segunda etapa executa o comando sed para substituir a linha runtime: go113 no arquivo app.yaml por runtime: go121. Isso é necessário porque o ambiente de execução do Go 1.13 está descontinuado e será removido no futuro. Observe que isso é apenas um patch para manter o aplicativo em execução. Atualize o aplicativo para usar o ambiente de execução em Go mais recente nos seus próprios projetos.
A terceira etapa executa o comando gcloud app deploy para implantar o aplicativo no App Engine.
Como nos outros exemplos, é possível implantar esse aplicativo manualmente usando gcloud app deploy, mas o Cloud Build permite que você descarregue isso na infraestrutura do Google, por exemplo, se quiser criar um pipeline de CI/CD sem servidor.
Observação : os comentários do arquivo foram removidos para fins de esclarecimento.
steps:
- name: 'gcr.io/cloud-builders/git'
args: ['clone','--single-branch','--branch',
'${_GIT_SOURCE_BRANCH}','${_GIT_SOURCE_URL}']
- name: 'ubuntu' # Or any base image containing 'sed'
args: ['sed', '-i', 's/runtime: go113/runtime: go121/', 'app.yaml'] # Replace go113 with go121
dir: 'DIY-Tools/gcp-data-drive/cmd/webserver'
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app','deploy','app.yaml','--project','$PROJECT_ID']
dir: 'DIY-Tools/gcp-data-drive/cmd/webserver'
Veja o cloudbuild_appengine.yaml no GitHub.
Implante o aplicativo Google Cloud Data Drive
- Ainda em
DIY-Tools/gcp-data-drive, implante o aplicativo de webserver em Go no App Engine usando o Cloud Build:
gcloud builds submit --config cloudbuild_appengine.yaml \
--project $PROJECT_ID --no-source \
--substitutions=_GIT_SOURCE_BRANCH="master",_GIT_SOURCE_URL="https://github.com/GoogleCloudPlatform/DIY-Tools"
A implantação demora alguns minutos.
- Armazene o URL do App Engine em uma variável de ambiente para usar no comando para chamar o aplicativo:
Observação: o URL do App Engine é o target url na saída.
export TARGET_URL=https://$(gcloud app describe --format="value(defaultHostname)")
- Use o
curl para chamar o aplicativo em execução no App Engine para consultar dados do Firestore:
curl $TARGET_URL/fs/$PROJECT_ID/symbols/product/symbol | jq .
A resposta será o conteúdo de um arquivo JSON com três valores da coleção symbols do seu projeto.
[
{
"asin": "",
"brand": "",
"category": "",
"docid": "914600502073",
"fbafees": 0,
"lastMatchLookup": "0001-01-01T00:00:00Z",
"listPrice": 0,
"manufacturer": "",
"pkgquantity": 0,
"salesrank": 0,
"smallImage": "",
"title": "",
"upc": "914600502073"
},
{
"asin": "0744018307",
"bbw": true,
"brand": "",
"category": "book_display_on_website",
"cpip": 2000,
"docid": "9780744018301",
"fba": false,
"fbafees": 722,
"inStock": "NOW",
"lastMatchLookup": "2020-03-13T14:00:10.209183Z",
"lastOfferLookup": "2020-03-13T14:00:13.670858Z",
"listPrice": 3999,
"manufacturer": "Prima Games",
"pkgquantity": 0,
"salesrank": 337073,
"sfbc": 0,
"sfbr": 0,
"smallImage": "http://ecx.images-amazon.com/images/I/51NFIAHRfTL._SL75_.jpg",
"title": "Wolfenstein II: The New Colossus: Prima Collector's Edition Guide",
"upc": "9780744018301"
}
]
- Use o
curl para chamar o aplicativo em execução no App Engine para consultar dados do BigQuery:
curl $TARGET_URL/bq/$PROJECT_ID/publicviews/ca_zip_codes | jq .
A resposta será o conteúdo de um arquivo JSON com os resultados da instrução SQL do BigQuery SELECT * FROM publicviews.ca_zip_codes;.
[
{
"Zipcode": "96090",
"area_land_miles": 1.027,
"state_code": "CA"
},
{
"Zipcode": "94929",
"area_land_miles": 1.062,
"state_code": "CA"
}
]
Aumente a carga
Aumente a carga e descubra o que acontece.
- Use o editor nano para criar um script de shell simples para colocar alguma carga no aplicativo:
nano loadgen.sh
- Digite ou cole o seguinte script no editor:
#!/bin/bash
for ((i=1; i<=1000; i++)); do
curl "$TARGET_URL/bq/$PROJECT_ID/publicviews/ca_zip_codes" > /dev/null &
done
- Pressione Ctrl+X, Y e Enter para salvar o novo arquivo.
- Torne o script executável:
chmod +x loadgen.sh
- Faça o teste de carga:
./loadgen.sh
- No console, clique em Menu de navegação > App Engine > Instâncias.
A janela Instâncias será aberta e exibirá um resumo das solicitações por segundo e uma lista de instâncias geradas no momento em que você executou o teste de carga no Cloud Shell. Observe como o App Engine criou automaticamente outras instâncias do aplicativo e distribuiu o tráfego HTTP de entrada.

Observação: pode levar de três a cinco minutos para que o gráfico Resumo exiba os dados. Não se esqueça de atualizar a janela Instâncias.
- No Cloud Shell, pressione Ctrl+C para encerrar o teste de carga, caso ele ainda esteja em execução.
Verifique a implantação do aplicativo do App Engine
Parabéns!
Neste laboratório autoguiado, você descobriu como usar a linguagem de programação Go para fazer a implantação em todas as plataformas de computação sem servidor do Google Cloud. Os principais aprendizados foram:
- A linguagem de programação Go tem recursos incríveis de lucratividade e eficiência que a tornam uma excelente opção para aplicativos modernos na nuvem e no local.
- A mesma base de código Go pode ser implantada em todas as plataformas de computação sem servidor, baseadas em contêineres e Anthos do Google Cloud sem modificações.
- O Cloud Build (também sem servidor) é uma parte essencial de um pipeline de CI/CD baseado na nuvem para fornecer consistência na entrega aos seus ciclos de vida de aplicativos.
- O Cloud Run Functions e o App Engine são plataformas sem servidor simples que operam na escala do Google e são fáceis de implantar.
- O Google Cloud Data Drive é uma biblioteca de extração de dados de código aberto que eu posso usar no meu ambiente atual do Google Cloud.
Próximas etapas / Saiba mais
Treinamento e certificação do Google Cloud
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 5 de novembro de 2024
Laboratório testado em 5 de novembro de 2024
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.