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 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 de contêiner 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 em 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. Para usar esse serviço, verifique se o código detecta uma porta TCP e processa solicitações HTTP recebidas.

O diagrama a seguir ilustra como um serviço do Cloud Run executa várias instâncias de contêiner para processar solicitações e eventos da Web de um cliente:

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 for definida como faturamento com base 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 comportamento de 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 um serviço do Cloud Run.

Escalonar para zero e instâncias mínimas

Por padrão, se o faturamento estiver definido como 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.

Redução da escala a zero

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.

Quando uma nova solicitação chega a um serviço sem instâncias ativas, o Cloud Run cria uma nova instância. Esse processo pode aumentar o tempo de resposta para essas solicitações iniciais, dependendo da rapidez com que seu contêiner fica pronto para lidar com o tráfego.

Mudar o comportamento de escalonamento

É possível modificar esse comportamento padrão usando 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 generoso nível sem custo financeiro. Consulte os 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
Você é cobrado durante todo o ciclo de vida de uma instância. Não há taxa por solicitação.

Há um generoso nível sem custo financeiro. 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, o aplicativo pode interceptar o sinal SIGTERM. Isso permite que o código transfira buffers locais e mantenha os dados locais em um repositório 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