Curso
Nuvem Run: Um guia para a implantação de aplicativos em contêineres no GCP
O Cloud Run é a plataforma de servidor totalmente gerenciada do Google Cloud que permite que você implemente aplicativos sem se preocupar com o gerenciamento da infraestrutura. Ele é super flexível e uma ótima opção para uma variedade de projetos, desde hobbies até empresas.
Neste artigo, mostrarei a você o que é o Cloud Run, como ele funciona, quais casos de uso ele pode resolver e como ele se compara a outras soluções sem servidor. Também mostrarei a você, passo a passo, como implantar seu primeiro aplicativo Cloud Run!
Eantes de você começar: Se você é completamente novo em computação em nuvem, recomendo que faça nosso curso Introduction to Cloud Computing. Neste curso, você conhecerá os conceitos básicos da nuvem, explicará os principais termos, como escalabilidade e latência, e abordará as vantagens das ferramentas de nuvem de provedores como o GCP.
O que é o Cloud Run?
O Cloud Run é uma plataforma de execução de contêineres sem servidor que permite que você implemente aplicativos sem se preocupar com o gerenciamento da infraestrutura.
Com as implementações tradicionais baseadas em servidor, você geralmente precisa provisionar e manter máquinas virtuais. O Cloud Run funciona de forma um pouco diferente e abstrai tudo isso para oferecer a você um ambiente totalmente gerenciado.
Ele foi desenvolvido com base no Knative (umaplataforma de código aberto baseada no Kubernetes que permite carga de trabalho sem servidor), o que significa que seu aplicativo é dimensionado automaticamente com base na demanda. Quando o tráfego aumenta, o Cloud Run ativa mais instâncias do para que você possa lidar com ele. Quando o tráfego cai, ele é reduzido. Ele pode até chegar a zero, para que você não pague nada quando o aplicativo não estiver em execução ativa.
A execução em nuvem é econômica, mas também é super flexível. Você pode implementar aplicativos escritos em qualquer linguagem e usar qualquer estrutura ou binário, desde que sejam executados em um contêiner. Você pode trabalhar com tecnologias comuns, como Node.js, Python, Go, Java, ou outras mais obscuras. Na prática, isso significa que o Cloud Run pode alimentar serviços de back-end, APIs, cargas de trabalho de IA, aplicativos da Web e até mesmo trabalhos em lote programados.
Isso foi para você dar uma olhada. Vamos nos aprofundar um pouco mais nos principais recursos do Cloud Run.
Principais recursos do Cloud Run
Acabamos de mencionar alguns deles, mas aqui você encontra um resumo completo dos principais recursos do Cloud Run.
Independente de linguagem e estrutura
Uma das maiores vantagens do Cloud Run é que ele não prende você a uma linguagem ou estrutura específica. Desde que seu aplicativo seja executado em um contêiner, você pode implantá-lo. Se você for uma equipe que trabalha com uma pilha de tecnologia diversificada, poderá usar o Cloud Run em todos os seus serviços. Uma ferramenta para você dominar todas elas!
Dimensionamento automático
O Cloud Run é dimensionado de forma horizontal e dinâmica com base no tráfego. Se o seu aplicativo receber mais solicitações, o Cloud Run ativará automaticamente mais instâncias. Quando a demanda cai, ele reduz a escala, chegando a zero, se necessário.
Segurança e conformidade incorporadas
O Cloud Run vem com HTTPS automático para todos os serviços implantados, identidade de serviço gerenciada pelo Google para autenticação segura, conectividade VPC para rede privada e certificações de conformidade integradas, como SOC 2, ISO 27001 e HIPAA (para aplicativos de saúde). Basicamente, você está em boas mãos.
Integração com os serviços do Google Cloud
Como o Cloud Run faz parte do ecossistema do Google Cloud, ele funciona bem com outros serviços do GCP. Você pode conectá-lo facilmente ao Cloud SQL para bancos de dados, transmitir dados com Pub/Sub, armazenar arquivos no Cloud Storage ou usá-lo com BigQuery, Firebase e serviços de IA/ML.
Suporte a GPU sob demanda
Para cargas de trabalho de IA, o Cloud Run agora oferece suporte a GPU sob demanda. Essa é uma grande melhoria para inferência de machine learning, processamento de vídeo e computação científica, pois permite que você execute qualquer carga de trabalho acelerada por GPU sem gerenciar o hardware por trás dela.
Funções de execução em nuvem: Um modelo de função como serviço (FaaS)
Se você não quiser gerenciar contêineres completos, o Cloud Run Functions oferece uma maneira simplificada e orientada por eventos para executar funções pequenas e de finalidade única. Ele é semelhante ao AWS Lambda ou ao Google Cloud Functions, mas é executado na infraestrutura do Cloud Run.
Como o Cloud Run funciona: Step-by-Step
Nesta seção, mostrarei a você como implantar um aplicativo simples no Cloud Run. Orientarei você no processo de conteinerização do seu aplicativo, implantando-o no Cloud Run e dimensionando-o automaticamente com base na demanda.
Usaremos o Docker para conteinerizar nosso aplicativo, mas você não precisa necessariamente fazer isso. Mais sobre isso no final.
Etapa 1: Configure seu ambiente
Antes de implementar qualquer coisa, você precisa ter as seguintes ferramentas instaladas:
- Google Cloud SDK: Esta é uma interface de linha de comando (CLI) que permite que você interaja com os serviços do Google Cloud, incluindo o Cloud Run. Você pode instalá-lo a partir daqui.
- Docker: Se seu aplicativo ainda não estiver em contêineres, você precisará do Docker para empacotar o aplicativo. Instale o Docker a partir daqui.
- Google Cloud Project: Certifique-se de que você tenha um projeto do Google Cloud configurado. Você pode criar um no Console do Google Cloud.
Etapa 2: Escreva o código do aplicativo
Agora, vamos escrever um aplicativo Node.js simples do tipo "Hello World".
Crie um diretório para seu aplicativo:
mkdir hello-world-app
cd hello-world-app
Crie um arquivo index.js dentro do diretório com o seguinte conteúdo:
const http = require('http');
const requestListener = (req, res) => {
res.writeHead(200);
res.end('Hello, Cloud Run!');
};
const server = http.createServer(requestListener);
server.listen(8080, () => {
console.log('Server is running on port 8080');
});
Crie um arquivo package.json para definir as dependências do seu aplicativo:
{
"name": "hello-world-app",
"version": "1.0.0",
"main": "index.js",
"dependencies": {}
}
Agora que o aplicativo está pronto, vamos prosseguir com a conteinerização.
Etapa 3: Containerize o aplicativo
Crie um Dockerfile para definir a imagem do contêiner
No diretório do seu projeto, crie um arquivo chamado "Dockerfile" com o seguinte conteúdo:
# Use the official Node.js image as a base
FROM node:16-alpine
# Set the working directory inside the container
WORKDIR /usr/src/app
# Copy package.json and install dependencies (if any)
COPY package*.json ./
# Copy the rest of the application code
COPY . .
# Expose port 8080 for Cloud Run
EXPOSE 8080
# Start the app
CMD ["node", "index.js"]
Crie a imagem do Docker
Execute o seguinte comando para criar sua imagem do Docker:
docker build -t gcr.io/your-project-id/hello-world-app .
Observação: Substitua your-project-id pelo ID do seu projeto no Google Cloud.
Teste a imagem localmente
Você pode testar seu contêiner do Docker localmente executando:
docker run -p 8080:8080 gcr.io/your-project-id/hello-world-app
Visite http://localhost:8080 no seu navegador para verificar se o aplicativo está em execução.
Etapa 4: Envie a imagem para o Google Artifact Registry
Habilite o Registro de artefatos para o seu projeto
Se você ainda não tiver ativado o Artifact Registry, execute o seguinte comando
gcloud services enable artifactregistry.googleapis.com
Observação: Você precisará ativar o faturamento para concluir esta etapa!
Crie um repositório no Artifact Registry
Crie um novo repositório do Docker no Artifact Registry:
gcloud artifacts repositories create hello-world-repo \
--repository-format=docker \
--location=us-central1
Autenticar o Docker no registro de artefatos
Configure o Docker para autenticar com o Registro de artefatos:
gcloud auth configure-docker us-central1-docker.pkg.dev
Marque a imagem do Docker para o Registro de Artefatos
Marque sua imagem do Docker com o URL do repositório do Registro de artefatos:
docker tag gcr.io/your-project-id/hello-world-app us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app
Envie a imagem para o Registro de Artefatos
Envie a imagem marcada do Docker para o repositório do Registro de artefatos:
docker push us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app
Etapa 5: Implementar na nuvem Executar
Quando sua imagem for enviada para o Registro de artefatosvocê pode implementá-la no Nuvem Run diretamente do Registro de artefatos.
Implemente sua imagem no Cloud Run usando o seguinte comando:
gcloud run deploy hello-world-app \
--image us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app \
--platform managed \
--region us-central1 \
--allow-unauthenticated
- hello-world-app: Este é o nome do serviço Cloud Run que você está usando.
- us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app: O URL da sua imagem armazenada no Artifact Registry.
- --plataforma gerenciada: Garante que a implementação use a plataforma totalmente gerenciada do Cloud Run (não um cluster GKE).
- --region us-central1: Especifique a região onde o Cloud Run deve implementar o serviço.
- --allow-unauthenticated: Isso permite o acesso do público ao serviço. Se precisar de acesso restrito, você pode ajustar esse sinalizador de acordo.
Depois de executar esse comando, o Cloud Run implantará seu aplicativo em contêiner e fornecerá a você um URL para acessá-lo.
E tudo está pronto! Dê uma olhada no console do GCP e você verá sua nova instância.
Etapa 6: Limpeza
Para evitar cobranças contínuas, certifique-se de excluir seu serviço quando você terminar o teste.
1. Excluir o serviço Cloud Run
Execute o seguinte comando para excluir o serviço Cloud Run que você implantou:
gcloud run services delete hello-world-app --region us-central1
Isso remove a instância do Cloud Run, mas não exclui a imagem do contêiner.
2. Excluir a imagem do Registro de Artefatos
Para remover a imagem do Registro de artefatosprimeiro liste as imagens:
gcloud artifacts docker images list us-central1-docker.pkg.dev/your-project-id/hello-world-repo
Em seguida, exclua a imagem com:
gcloud artifacts docker images delete us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app --delete-tags
Agora o Registro de artefatos também está limpo.
3. Exclua o repositório do Registro de artefatos (se não for mais necessário)
Se você quiser remover completamente o repositório do Artifact Registry, execute:
gcloud artifacts repositories delete hello-world-repo --location=us-central1
Essa etapa só é necessária se você tiver terminado totalmente o repositório; caso contrário, poderá reutilizá-lo para futuras implementações.
4. (Opcional) Exclua o projeto do Google Cloud
Se esse era um projeto de teste e você não precisa mais dele, pode excluir o projeto inteiro para remover todos os recursos associados:
gcloud projects delete your-project-id
Implementações de origem
Lembra quando eu disse que você nem sempre precisa conteinerizar seu aplicativo manualmente?
O Cloud Run agora oferece suporte a implementações de origem, o que significa que ele pode criar o contêiner para você a partir do seu código-fonte, usando o Cloud Build.
Você pode usar o comando:
gcloud run deploy hello-world-app \
--source . \
--region us-central1 \
--allow-unauthenticated
O Cloud Build detecta automaticamente a linguagem do seu aplicativo (Node.js, Python, Go, Java etc.), cria uma imagem de contêiner para você e a armazena no Artifact Registry. Em seguida, o Cloud Run implementa a imagem construída como se você tivesse criado um contêiner manualmente. Definitivamente, eu recomendaria usar isso para aplicativos simples com linguagens compatíveis (Node.js, Python, Go, Java etc.), mas não se você precisar de controle total sobre o contêiner (por exemplo, dependências personalizadas, ajustes no nível do sistema operacional, compilações em várias etapas).
Dicas para você usar o Cloud Run com eficiência
Bem, implementar um aplicativo no Cloud Run é muito fácil, mas para que ele seja executado de forma eficiente é necessário um pouco de ajuste fino. Passei por uma fase de tentativa e erro quando comecei a usá-lo, e foi isso que aprendi:
1. As partidas a frio são reais
Especialmente se você estiver trabalhando com uma imagem de contêiner grande. Quanto menor for a sua imagem, mais rápido o serviço será ativado. O uso de uma imagem de base mínima, como distroless, pode fazer uma grande diferença. Se você estiver criando aplicativos Python, tente usar as versões slim das imagens oficiais. Ou, se você não se importar muito com os custos, defina o número mínimo de instâncias como 1.
2. A melhor variável com a qual você pode brincar é a quantidade de simultaneidade da solicitação
O Cloud Run permite que cada instância lide com várias solicitações simultaneamente, mas o padrão (80 solicitações por contêiner) geralmente não é a quantidade ideal. Para tarefas com uso intenso de CPU, descobri que reduzir a simultaneidade para 1 ou 2 torna as coisas muito mais tranquilas. Por outro lado, as APIs geralmente podem lidar com um número maior. Quanto maior o número, mais você pode reduzir o número de instâncias necessárias e, portanto, menos você pagará. Por isso, definitivamente vale a pena experimentar valores diferentes para encontrar o ponto ideal para o seu aplicativo.
3. Defina os limites de sua instância!
Super útil quando alguém (eu) decide fazer algum teste de carga e inicia um número absurdo de solicitações. Aprendi essa lição para que você não precise aprender. Defina sua contagem máxima de instâncias.
4. Certifique-se de que você permita que as pessoas certas acessem sua instância
Por padrão, os serviços do Cloud Run podem ser acessados por qualquer pessoa com a URL, o que é ótimo para demonstrações rápidas, mas não tão bom para produção. Se o seu aplicativo não se destina a ser público, bloqueie-o com permissões de IAM.
5. O Cloud Logging e o Cloud Trace se tornarão seus melhores amigos
Se, como eu, você tende a depurar problemas por meio de SSH em máquinas virtuais, ficará desapontado. Os logs do Cloud Run são transmitidos diretamente para o painel do Google Cloud, para que você possa ver tudo lá. Certifique-se de que você adicionou o registro estruturado ao seu aplicativo, pois isso facilitará muito a solução de problemas.
Casos de uso do Cloud Run
Falamos sobre alguns casos de uso do Cloud Run, como a execução de aplicativos da Web, APIs ou tarefas cron, mas obviamente há muito mais.
Análise de vídeo e imagem
Você pode implementar um modelo de reconhecimento de imagem para processar imagens carregadas em tempo real para uma plataforma de mídia social ou executar tarefas de transcodificação de vídeo quando um vídeo é carregado. O Cloud Run pode lidar com picos de demanda (como conteúdo viral) com seu dimensionamento automatizado, ao mesmo tempo em que garante a eficiência de custo quando a demanda é baixa.
Fonte: Google Cloud
Processamento de fluxo em tempo real
Imagine que você está criando um sistema que monitora o comportamento do usuário em um mercado on-line. Ao processar fluxos de eventos do Pub/Sub ou do BigQuery, você pode acionar instantaneamente ações com base na atividade do usuário, como enviar notificações push ou analisar tendências em tempo real. O Cloud Run é dimensionado automaticamente para lidar com os eventos recebidos durante os períodos de pico e é reduzido quando o volume de fluxos diminui.
Fonte: Google Cloud
Processamento de arquivos em tempo real
Um caso de uso poderia ser a análise de arquivos de log em tempo real para uma grande empresa. Sempre que um arquivo de registro é carregado no Cloud Storage, o Cloud Run pode acionar um contêiner para analisar o arquivo, executar a análise e armazenar os resultados, tudo isso enquanto você dimensiona dinamicamente com base no tamanho do arquivo e na complexidade da tarefa de processamento.
Fonte: Google Cloud
Back-ends de IoT sem servidor
O Cloud Run é ideal para lidar com serviços de back-end para aplicativos de IoT. Por exemplo, em uma solução de IoT que rastreia dados ambientais de milhares de sensores, o Cloud Run pode processar os dados recebidos de cada dispositivo em tempo real.
Fonte: Google Cloud
Preços do Google Cloud Run
O Cloud Run segue um modelo de pagamento conforme o uso, o que significa que você só paga pelos recursos de computação usados enquanto o aplicativo estiver em execução ativa. Quando seu aplicativo não está lidando com solicitações, ele pode ser reduzido a zero, o que significa que você não paga custos desnecessários.
Detalhamento de preços
A partir de março de 2025, o Cloud Run cobra com base em dois fatores principais:
Recursos | Custo | Nível gratuito |
---|---|---|
CPU | US$ 0,000018 por vCPU-segundo | 240.000 vCPUs-segundos/mês |
Memória | US$ 0,000002 por GiB-segundo | 450.000 GiB-segundos/mês |
Esse preço é para faturamento baseado em instância, mas funciona de forma diferente para faturamento baseado em solicitação. O preço acima e a camada gratuita também são ligeiramente diferentes dependendo da região em que você está, portanto, verifique a página oficial do Google Cloud para obter os números exatos. Eles têm uma calculadora de preços para ajudar você a calcular os custos, além de oferecerem descontos para o uso comprometido.
Uma pequena dica: O tráfego com outros serviços do Google Cloud na mesma região é gratuito, portanto, tente usar o Cloud Storage, o Cloud SQL ou o Pub/Sub em vez de serviços externos para troca de dados.
Nuvem Run vs. Funções de execução em nuvem
O Google oferece duas opções de computação sem servidor: Cloud Run e Cloud Run Functions (anteriormente Cloud Functions). Ambos permitem que você execute o código sem gerenciar a infraestrutura, mas são ligeiramente diferentes.
Recurso | Nuvem Run | Funções de nuvem |
---|---|---|
Modelo de execução | Executa aplicativos completos em contêineres | Executa funções individuais (modelo FaaS) |
Controle de tempo de execução | Qualquer linguagem, qualquer estrutura, binários personalizados | Tempos de execução predefinidos (Node.js, Python, Go, etc.) |
Estado | Sem estado, mas pode manter conexões em uma solicitação | Sem estado, projetado para cargas de trabalho orientadas por eventos |
Dimensionamento | Escalas por instância de contêiner | Escalas por invocação de função |
Acionamento | Solicitações HTTP, Pub/Sub, orientadas por eventos | Orientado por eventos (Pub/Sub, armazenamento em nuvem, HTTP, etc.) |
Partida a frio | Mínimo com instâncias pré-aquecidas | Pode ter atrasos perceptíveis no dimensionamento |
Melhor para | APIs, microsserviços, serviços de back-end, cargas de trabalho de IA | Funções leves e orientadas por eventos, automação |
Quando você deve usar o Cloud Run
- Você precisa de controle total sobre o tempo de execução e as dependências.
- Você está executando um serviço da Web, uma API ou um microsserviço que lida com solicitações persistentes.
- Você deseja implementar um aplicativo em contêiner existente com o mínimo de modificações.
- Você precisa de processamento em segundo plano ou de tarefas de longa duração (como inferência de IA, trabalhos em lote).
Quando você deve usar as funções de execução em nuvem
- Você deseja funções simples, orientadas por eventos, que sejam acionadas em eventos como mensagens Pub/Sub ou uploads do Cloud Storage.
- Você está lidando com operações de curta duração, como envio de notificações, processamento de pequenos trabalhos ou transformação de dados.
- Você não quer gerenciar contêineres e prefere tempos de execução pré-construídos para JavaScript, Python, Go, etc.
Mas você não precisa necessariamente escolher, pois pode usar os dois juntos! Por exemplo, o backend do Cloud Run pode acionar as funções do Cloud Run para tarefas específicas, como enviar e-mails ou processar imagens de forma assíncrona.
Comparações com outros serviços do Google Cloud
Comparamos o Cloud Run e o Cloud Run Functions de forma bastante completa, mas talvez valha a pena mencionar aqui alguns outros serviços do Google Cloud: GKE e App Engine.
Recurso | Nuvem Run | Google Kubernetes Engine (GKE) | Mecanismo de aplicativos |
---|---|---|---|
Tipo de gerenciamento | Sem servidor totalmente gerenciado | Clusters Kubernetes autogerenciados | Plataforma como serviço totalmente gerenciada |
Dimensionamento | Escala automática, até zero | Dimensionamento manual ou automático via Kubernetes | Dimensionamento automático (mas não até zero) |
Implantação | Implantar contêineres (qualquer idioma) | Implante contêineres por meio do Kubernetes | Implantar código (com suporte a tempos de execução específicos) |
Casos de uso | APIs, microsserviços, aplicativos da Web, trabalhos em lote, IA | Aplicativos complexos, microsserviços em grande escala, cargas de trabalho de ML | Aplicativos da Web, back-ends móveis, APIs |
Idiomas suportados | Qualquer (baseado em contêiner) | Qualquer (baseado em contêiner) | Tempos de execução específicos compatíveis |
Obviamente, há mais nuances sobre isso, mas em resumo: Se você precisar de uma solução totalmente gerenciada e em contêineres com dimensionamento automático e flexibilidade, opte pelo Cloud Run. Se você estiver criando um aplicativo da Web com configuração mínima, opte pelo App Engine. E se você quiser ter controle total sobre seus clusters Kubernetes para aplicativos complexos e de grande escala, escolha o GKE.
Conclusão
Agora que você sabe tudo sobre o Cloud Run, tente iniciar sua primeira instância ou dê uma olhada em outros serviços do Google Cloud para encontrar o nível de controle e automação ideal para você!
Perguntas frequentes sobre o Cloud Run
Como faço para lidar com as conexões de banco de dados no Cloud Run?
Você pode usar o Cloud SQL Auth Proxy, ativar o pooling de conexões (por exemplo, PgBouncer para PostgreSQL) ou usar bancos de dados sem servidor, como o Firestore, para evitar limites de conexão.
Posso usar um domínio personalizado com o Cloud Run?
Sim. Configure-o no console do Cloud Run em Gerenciar domínios personalizados, verifique a propriedade e atualize os registros DNS. O SSL é fornecido automaticamente.
O Cloud Run é compatível com WebSockets e conexões de longa duração?
Sim, mas as instâncias podem ser desligadas se você estiver ocioso. Para manter as conexões, defina instâncias mínimas ou use o Pub/Sub para comunicação orientada por eventos.
O Cloud Run pode lidar com trabalhos em segundo plano?
Não diretamente, pois é baseado em solicitações. Use o Cloud Tasks, o Pub/Sub ou os fluxos de trabalho para acionar e gerenciar o processamento em segundo plano.
Posso executar aplicativos com estado no Cloud Run?
Não recomendado, pois as instâncias não têm estado. Use o armazenamento em nuvem, o Firestore ou um banco de dados externo para manter o estado.
Engenheiro de software sênior, redator técnico e consultor com formação em física. Comprometida em ajudar as startups em estágio inicial a atingir seu potencial e tornar conceitos complexos acessíveis a todos.
Aprenda a usar a nuvem com a DataCamp
Curso
Introduction to GCP
Curso
Data Warehousing Concepts
blog
AWS Certified Cloud Practitioner: um guia completo

Srujana Maddula
13 min
blog
As 5 melhores certificações de nuvem para dar o pontapé inicial em sua carreira em 2024

blog
O guia completo da certificação Docker (DCA) para 2024
blog
Jupyter e R Markdown: Notebooks com R

Tutorial
Como instalar e configurar o MySQL no Docker
Tutorial