O que é o Cloud Run

O Cloud Run é uma plataforma de aplicativos totalmente gerenciada para executar seu código, função ou contêiner na infraestrutura altamente escalonável do Google.

Em resumo, o Cloud Run permite que os desenvolvedores passem mais tempo escrevendo o código e quase sem tempo operando, configurando e escalonando o serviço do Cloud Run. Você não precisa criar um cluster ou gerenciar a infraestrutura para ser produtivo com o Cloud Run.

Serviços e jobs

No Cloud Run, o código pode ser executado como um serviço ou um job.

A tabela a seguir oferece uma visão geral das opções fornecidas por cada tipo de recurso do Cloud Run.

Recurso Descrição
Serviço Responde a solicitações HTTP enviadas a um endpoint único e estável, usando instâncias sem estado que são escalonadas automaticamente com base em várias métricas principais. Também responde a eventos e funções.
Job Executa tarefas paralelizadas que são executadas manualmente ou de acordo com uma programação e são concluídas.

Serviços do Cloud Run

Um serviço do Cloud Run oferece a infraestrutura necessária para executar um endpoint HTTPS confiável. Sua responsabilidade é garantir que o código detecte uma porta TCP e identifique solicitações HTTP.

O diagrama a seguir mostra um serviço do Cloud Run executando várias instâncias de contêiner para processar solicitações e eventos da Web do cliente usando um endpoint HTTPS.

Um serviço do Cloud Run executa contêineres para atender a solicitações e eventos da Web

Um serviço padrão inclui os seguintes recursos:

Endpoint HTTPS exclusivo para cada serviço
Todos os serviços do Cloud Run têm um endpoint HTTPS em um subdomínio exclusivo do domínio *.s3nsrun.fr. Também é possível configurar domínios personalizados. O Cloud Run gerencia o TLS para você e oferece suporte a WebSockets, HTTP/2 (de ponta a ponta) e gRPC (de ponta a ponta).
Escalonamento automático rápido com base em solicitações
O Cloud Run escalona horizontalmente com rapidez para lidar com todas as solicitações recebidas ou com o aumento da utilização da CPU fora das solicitações se a configuração de faturamento estiver definida como faturamento baseado em instâncias. Um serviço pode ser escalonado horizontalmente de forma rápida para até mil instâncias ou até mais, se você solicitar um aumento de cota. Se a demanda diminuir, o Cloud Run removerá os contêineres inativos. Se você estiver preocupado com custos ou sobrecarregando os sistemas downstream, poderá limitar o número máximo de instâncias.
Escalonamento manual opcional
Por padrão, o Cloud Run é escalonado automaticamente para mais instâncias e processa mais tráfego. No entanto, é possível substituir esse comportamento usando o escalonamento manual para controlar o escalonamento.
Gerenciamento de tráfego integrado

Para reduzir o risco de implantação de uma nova revisão, o Cloud Run oferece suporte à realização de um lançamento gradual, incluindo o encaminhamento do tráfego de entrada para a revisão mais recente, a reversão para uma revisão anterior e a divisão do tráfego para várias revisões ao mesmo tempo.

Por exemplo, você pode começar enviando 1% das solicitações para uma nova revisão e aumentar essa porcentagem enquanto monitora a telemetria.

Serviços públicos e privados

Um serviço do Cloud Run pode ser acessado pela Internet ou ter o acesso restrito das seguintes maneiras:

É possível disponibilizar recursos armazenáveis em cache a partir de um local do perímetro próximo aos clientes usando uma rede de fornecimento de conteúdo (CDN), como o Firebase Hosting e o Cloud CDN, para disponibilizar um serviço do Cloud Run.

Escalonar para zero e instâncias mínimas

Por padrão, se o faturamento estiver definido como faturamento baseado em instâncias, o Cloud Run adicionará e removerá instâncias automaticamente para processar todas as solicitações recebidas ou lidar com o aumento da utilização da CPU fora das solicitações.

Se não houver solicitações de entrada para seu serviço, até mesmo a última instância restante será removida. Esse comportamento é normalmente chamado de escala para zero. Se não houver instâncias ativas quando uma solicitação chegar, o Cloud Run vai criar uma nova instância. Isso aumenta o tempo de resposta para essas primeiras solicitações, dependendo da velocidade com que seu contêiner fica pronto para lidar com as solicitações.

Para mudar esse comportamento, use um dos seguintes métodos:

Preços de pagamento por uso para serviços

A redução da escala para zero é atraente por motivos econômicos, porque você é cobrado pela CPU e memória alocadas para uma instância com uma granularidade de 100 ms. Se você não configurar instâncias mínimas, não haverá cobrança se o serviço não for usado. Há um nível sem custo financeiro generoso. Consulte Preços para mais informações.

Há duas configurações de faturamento que podem ser ativadas:

Baseada em solicitações
Se uma instância não estiver processando solicitações, você não vai receber cobranças. Você paga uma taxa por solicitação.
Com base em instâncias
A cobrança é feita durante todo o ciclo de vida de uma instância. Não há taxa por solicitação.

Há um nível sem custo financeiro generoso. Consulte preços para mais informações e Configurações de faturamento para saber como ativar o faturamento do serviço para solicitações ou instâncias.

Um sistema de arquivos de contêiner descartável

As instâncias no Cloud Run são descartáveis. Cada contêiner tem uma sobreposição de sistema de arquivos gravável na memória, que não é mantida se o contêiner é desligado. O Cloud Run determina quando parar de enviar solicitações a uma instância e desativá-la, por exemplo, ao reduzir o escalonamento vertical.

Para receber um aviso quando o Cloud Run estiver prestes a encerrar uma instância, seu aplicativo pode interceptar o sinal SIGTERM. Isso permite que o código limpe buffers locais e mantenha os dados locais em um armazenamento de dados externo.

Para manter os arquivos de forma permanente, integre ao Cloud Storage ou ative um sistema de arquivos de rede (NFS).

Quando usar os serviços do Cloud Run

Os serviços do Cloud Run são ótimos para o código que processa solicitações, eventos ou funções. Como exemplos de casos de uso, temos:

Sites e aplicativos da Web
Crie seu app da Web usando sua pilha favorita, acesse seu banco de dados SQL e renderize páginas HTML dinâmicas.
APIs e microsserviços
É possível criar uma API REST, uma API GraphQL ou microsserviços particulares que se comunicam por HTTP ou gRPC.

Jobs do Cloud Run

Se o código executar o trabalho e depois parar, por exemplo, usando um script, você poderá usar um job do Cloud Run para executá-lo. É possível executar um job na linha de comando usando a Google Cloud CLI, programando um job recorrente.

Jobs de matriz são uma maneira mais rápida de executar jobs

Um job pode iniciar uma única instância para executar o código. Essa é uma maneira comum de executar um script ou uma ferramenta.

No entanto, também é possível usar um job de matriz, iniciando várias instâncias idênticas e independentes em paralelo. Os jobs de matriz são uma maneira mais rápida de processar jobs que podem ser divididos em várias tarefas independentes.

O diagrama a seguir mostra como um job com sete tarefas leva mais tempo para ser executado sequencialmente do que o mesmo job quando quatro instâncias podem processar tarefas independentes em paralelo:

Jobs de matriz são uma maneira mais rápida de executar jobs paralelos

Por exemplo, se você estiver redimensionando e cortando mil imagens do Cloud Storage, processá-las consecutivamente será mais lento do que processá-las em paralelo com muitas instâncias, com o Cloud Run gerenciando o escalonamento automático.

Quando usar jobs do Cloud Run

Os jobs do Cloud Run são adequados para executar códigos que executam tarefas (um job) e são encerrados quando o trabalho é concluído. Por exemplo:

Script ou ferramenta
Executar um script para realizar migrações de banco de dados ou outras tarefas operacionais.
Job de matriz
Executar o processamento altamente paralelo de todos os arquivos em um bucket do Cloud Storage.
Job agendado
Crie e envie faturas em intervalos regulares ou salve os resultados de uma consulta no banco de dados como XML e faça upload do arquivo em intervalos de algumas horas.

A seguir