O Google Cloud Run recebe uma imagem de contêiner e a executa sem que você precise tocar em um único servidor. Ele escala para zero quando ocioso e escala automaticamente sob carga. Se sua carga de trabalho é stateless e conteinerizada, o Cloud Run vale a pena ser avaliado com seriedade.
O que é o Google Cloud Run?
O Google Cloud Run é uma plataforma de computação totalmente gerenciada, construída sobre o Knative. Você fornece um contêiner, define alguns parâmetros de configuração, e ele cuida de todo o resto: provisionamento, escalonamento, balanceamento de carga e encerramento de TLS. A cobrança é feita por cada 100ms de tempo real de processamento de requisições, portanto serviços ociosos não geram custo algum.
Por que escolher o Google Cloud Run?
- Sem infraestrutura para gerenciar. Você escreve código e constrói contêineres; o Cloud Run cuida do restante.
- Escala automaticamente de zero a milhares de instâncias concorrentes com base no tráfego.
- Pague apenas pelos recursos consumidos durante o processamento ativo de requisições.
- Aceita qualquer linguagem ou binário que rode dentro de um contêiner.
Primeiros Passos com o Google Cloud Run
Pré-requisitos
- Uma conta Google Cloud com faturamento habilitado.
- Docker instalado localmente.
- O CLI
gcloudinstalado e autenticado.
Etapa 1: Escreva sua Aplicação
Comece escrevendo uma aplicação simples. Para fins de demonstração, usaremos um app básico em Node.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Google Cloud Run!');
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`App listening on port ${port}`);
});
Etapa 2: Conteinerize sua Aplicação
Crie um Dockerfile para sua aplicação:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
ENV PORT 8080
EXPOSE 8080
CMD [ "node", "index.js" ]
Etapa 3: Construa e Teste seu Contêiner Localmente
Construa sua imagem Docker:
docker build -t gcr.io/your-project-id/your-app .
Execute seu contêiner localmente para testar:
docker run -p 8080:8080 gcr.io/your-project-id/your-app
Acesse http://localhost:8080 para verificar se está funcionando.
Etapa 4: Implante no Google Cloud Run
Autentique-se no Google Cloud:
gcloud auth login
Defina o ID do seu projeto:
gcloud config set project your-project-id
Envie sua imagem Docker para o Google Container Registry:
docker push gcr.io/your-project-id/your-app
Implante seu contêiner no Cloud Run:
gcloud run deploy your-app \
--image gcr.io/your-project-id/your-app \
--platform managed \
--region us-central1 \
--allow-unauthenticated
Etapa 5: Teste sua Aplicação Implantada
Após a implantação, o Google Cloud Run fornecerá uma URL para o seu serviço. Acesse a URL para ver sua aplicação em produção.
Dicas para Otimizar seu Serviço no Cloud Run
- Use imagens base mínimas. Imagens menores iniciam mais rápido e reduzem sua superfície de ataque.
- Ajuste a configuração de concorrência. Por padrão, cada instância lida com 80 requisições simultâneas, mas cargas de trabalho vinculadas à CPU devem usar um valor menor.
- Defina limites explícitos de CPU e memória para evitar picos inesperados de cobrança.
Integração com Outros Serviços do Google Cloud
O Cloud Run se conecta facilmente ao restante do GCP:
- Cloud SQL para bancos de dados relacionais gerenciados, usando o sidecar Cloud SQL Auth Proxy.
- Cloud Pub/Sub para invocação orientada a eventos: o Pub/Sub envia mensagens para o endpoint do seu Cloud Run.
- Cloud Storage para armazenamento de objetos, acessado via biblioteca cliente padrão.
Conclusão
O Cloud Run elimina a maior parte do overhead operacional associado à execução de serviços conteinerizados. A principal restrição é a statelessness: instâncias podem ser criadas ou destruídas a qualquer momento, portanto qualquer estado precisa existir fora do contêiner, em um banco de dados ou cache. Dentro dessa restrição, é um destino de implantação prático e econômico.
Leitura Adicional
Samuel Fajreldines é especialista nos ecossistemas JavaScript e TypeScript, expert em DevOps e Arquitetura Serverless, e proficiente em frameworks PHP.