O Cloud Run é uma plataforma de computação gerida que lhe permite executar contentores diretamente na infraestrutura escalável da Google.
Pode implementar código escrito em qualquer linguagem de programação no Cloud Run se conseguir criar uma imagem de contentor a partir dele. Na verdade, a criação de imagens de contentores é opcional. Se estiver a usar Go, Node.js, Python, Java, .NET Core, Ruby ou uma framework suportada, pode usar a opção de implementação baseada na origem, que cria o contentor por si, usando as práticas recomendadas para a linguagem que está a usar.
A Google criou o Cloud Run para funcionar bem com outros serviços no Google Cloud, para que possa criar aplicações com todas as funcionalidades.
Em resumo, o Cloud Run permite que os programadores dediquem o seu tempo a escrever o código e muito pouco tempo a operar, configurar e dimensionar o serviço do Cloud Run. Não tem de criar um cluster nem gerir a infraestrutura para ser produtivo com o Cloud Run.
Serviços, tarefas e conjuntos de trabalhadores: três formas de executar o seu código
No Cloud Run, o seu código pode ser executado como um serviço, uma tarefa ou um conjunto de trabalhadores. Todos estes tipos de recursos são executados no mesmo ambiente e podem usar as mesmas integrações com outros serviços no Google Cloud.
A tabela seguinte apresenta uma vista geral das opções disponibilizadas por cada tipo de recurso do Cloud Run.
Recurso | Descrição |
---|---|
Serviço | Responde a pedidos HTTP enviados para um ponto final único e estável, usando instâncias efémeras sem estado que são dimensionadas automaticamente com base numa variedade de métricas importantes. Também responde a eventos e funções. |
Emprego | Processa tarefas paralelizadas não baseadas em pedidos que são executadas manualmente ou de acordo com uma programação e são executadas até à conclusão. |
Conjunto de trabalhadores | Processa cargas de trabalho não baseadas em pedidos, como cargas de trabalho baseadas em obtenção, por exemplo, consumidores Kafka, filas de obtenção do Pub/Sub ou consumidores RabbitMQ. |
Serviços do Cloud Run
Um serviço do Cloud Run oferece-lhe a infraestrutura necessária para executar um ponto final HTTPS fiável. É da sua responsabilidade garantir que o código escuta numa porta TCP e processa pedidos HTTP.
O diagrama seguinte mostra um serviço do Cloud Run que executa várias instâncias de contentores para processar pedidos Web e eventos do cliente através de um ponto final HTTPS.
Um serviço padrão inclui as seguintes funcionalidades:
- Ponto final HTTPS exclusivo para cada serviço
- Todos os serviços do Cloud Run têm um ponto final HTTPS num subdomínio exclusivo do domínio
*.run.app
. Também pode configurar domínios personalizados. O Cloud Run gere o TLS por si e suporta WebSockets, HTTP/2 (ponto a ponto) e gRPC (ponto a ponto). - Escala automática rápida baseada em pedidos O
- Cloud Run é rapidamente dimensionado para processar todos os pedidos recebidos ou para processar o aumento da utilização da CPU fora dos pedidos se a definição de faturação estiver definida como faturação baseada em instâncias. Um serviço pode ser expandido rapidamente para mil instâncias ou até mais se pedir um aumento da quota. Se a procura diminuir, o Cloud Run remove os contentores inativos. Se tiver preocupações com os custos ou com a sobrecarga dos sistemas a jusante, pode limitar o número máximo de instâncias.
- Escalamento manual opcional
- Por predefinição, o Cloud Run é dimensionado automaticamente para mais instâncias de modo a processar mais tráfego, mas pode substituir este comportamento usando o dimensionamento manual para controlar o comportamento de dimensionamento.
- Gestão de tráfego integrada
Para reduzir o risco de implementar uma nova revisão, o Cloud Run suporta a realização de uma implementação gradual, incluindo o encaminhamento do tráfego recebido para a revisão mais recente, o reversão para uma revisão anterior e a divisão do tráfego para várias revisões em simultâneo.
Por exemplo, pode começar por enviar 1% dos pedidos para uma nova revisão e aumentar essa percentagem enquanto monitoriza a telemetria.
- Serviços públicos e privados
Um serviço do Cloud Run pode ser acessível a partir da Internet ou pode restringir o acesso das seguintes formas:
- Especifique uma política de acesso através do Cloud IAM.
- Use as definições de entrada para restringir o acesso à rede. Isto é útil se quiser permitir apenas tráfego interno da VPC e serviços internos.
- Permita apenas utilizadores autenticados com o Identity-Aware Proxy (IAP).
Pode publicar recursos memorizáveis em cache a partir de uma localização periférica mais próxima dos clientes ao colocar um serviço do Cloud Run à frente de uma rede de fornecimento de conteúdo (RFC), como o Firebase Hosting e o Cloud CDN.
Escalabilidade para zero e instâncias mínimas
Por predefinição, se a faturação estiver definida como faturação baseada em instâncias, o Cloud Run adiciona e remove instâncias automaticamente para processar todos os pedidos recebidos ou para processar a utilização aumentada da CPU fora dos pedidos.
Se não existirem pedidos recebidos para o seu serviço, mesmo a última instância restante é removida. Este comportamento é comummente designado por redução a zero. Em seguida, se não existirem instâncias ativas quando chega um pedido, o Cloud Run cria uma nova instância. Isto aumenta o tempo de resposta para estes primeiros pedidos, consoante a rapidez com que o contentor fica pronto para processar pedidos.
Para alterar este comportamento, use um dos seguintes métodos:
- Configure o Cloud Run para manter um número mínimo de instâncias ativas para que o seu serviço não seja dimensionado para zero instâncias
- Use o ajuste de escala manual para ter mais controlo sobre o ajuste de escala.
Preços de pagamento por utilização para serviços
A redução para zero é atrativa por motivos económicos, uma vez que lhe é cobrado o tempo de processamento e a memória alocados a uma instância com uma granularidade de 100 ms. Se não configurar instâncias mínimas, não lhe é cobrado nenhum valor se o seu serviço não for usado. Existe um nível gratuito generoso. Consulte os preços para mais informações.
Existem duas definições de faturação que pode ativar:
- Com base em pedidos
- Se uma instância não estiver a processar pedidos, não lhe é cobrado nenhum valor. Paga uma taxa por pedido.
- Baseado em instâncias
- É-lhe cobrado o custo total da duração de uma instância. Não existe uma taxa por pedido.
Existe um nível gratuito generoso. Consulte os preços para mais informações e consulte as Definições de faturação para saber como ativar a faturação baseada em pedidos ou em instâncias para o seu serviço.
Um sistema de ficheiros de contentor descartável
As instâncias no Cloud Run são descartáveis. Cada contentor tem uma sobreposição do sistema de ficheiros gravável na memória, que não persiste se o contentor for encerrado. O Cloud Run determina quando parar de enviar pedidos a uma instância e desativá-la, por exemplo, quando a escalabilidade é reduzida.
Para receber um aviso quando o Cloud Run estiver prestes a encerrar uma instância,
a sua aplicação pode intercetar o sinal SIGTERM
. Isto permite que o seu código limpe os buffers locais e persista os dados locais num armazenamento de dados externo.
Para manter os ficheiros permanentemente, integre-os com o Cloud Storage ou monte um sistema de ficheiros em rede (NFS).
Quando usar serviços do Cloud Run
Os serviços do Cloud Run são ideais para código que processa pedidos, eventos ou funções. Seguem-se alguns exemplos de utilização:
- Websites e apps Web
- Crie a sua app Web com a sua pilha favorita, aceda à sua base de dados SQL e renderize páginas HTML dinâmicas.
- APIs e microsserviços
- Pode criar uma API REST, uma API GraphQL ou microsserviços privados que comunicam através de HTTP ou gRPC.
- Tratamento de dados de streaming
- Os serviços do Cloud Run podem receber mensagens de subscrições push do Pub/Sub e eventos do Eventarc.
- Cargas de trabalho assíncronas
- As funções do Cloud Run podem responder a eventos assíncronos, como uma mensagem num tópico do Pub/Sub, uma alteração num contentor do Cloud Storage ou um evento do Firebase.
- Inferência de IA Os serviços do Cloud Run, com ou sem GPU configurada, podem alojar cargas de trabalho de IA, como modelos de inferência e preparação de modelos.
Cloud Run Jobs
Se o seu código realizar tarefas e, em seguida, parar, por exemplo, através de um script, pode usar uma tarefa do Cloud Run para executar o seu código. Pode executar uma tarefa a partir da linha de comandos através da CLI Google Cloud, agendando uma tarefa recorrente ou executando-a como parte de um fluxo de trabalho.
As tarefas de matriz são uma forma mais rápida de executar tarefas
Um trabalho pode iniciar uma única instância para executar o seu código, o que é uma forma comum de executar um script ou uma ferramenta.
No entanto, também pode usar uma tarefa de matriz, iniciando muitas instâncias idênticas e independentes em paralelo. As tarefas de matriz são uma forma mais rápida de processar tarefas que podem ser divididas em várias tarefas independentes.
O diagrama seguinte mostra como um trabalho com sete tarefas demora mais tempo a ser executado sequencialmente do que o mesmo trabalho quando quatro instâncias podem processar tarefas independentes em paralelo:
Por exemplo, se estiver a redimensionar e recortar 1000 imagens do Cloud Storage, o processamento consecutivo é mais lento do que o processamento em paralelo com várias instâncias, com o Cloud Run a gerir o dimensionamento automático.
Quando usar tarefas do Cloud Run
As tarefas do Cloud Run são adequadas para executar código que realiza trabalho (uma tarefa) e termina quando o trabalho está concluído. Eis alguns exemplos:
- Script ou ferramenta
- Executar um script para realizar migrações de bases de dados ou outras tarefas operacionais.
- Tarefa de matriz
- Realize o processamento altamente paralelizado de todos os ficheiros num contentor do Cloud Storage.
- Tarefa agendada
- Crie e envie faturas a intervalos regulares ou guarde os resultados de uma consulta de base de dados como XML e carregue o ficheiro a cada poucas horas.
- Cargas de trabalho de IA
- As tarefas do Cloud Run com ou sem GPU configurada podem alojar cargas de trabalho de IA, como inferência em lote, ajuste fino de modelos e preparação de modelos.
Google Cloud integrações
O Cloud Run integra-se com o ecossistema mais amplo do Google Cloud, o que lhe permite criar aplicações com todas as funcionalidades.
As integrações essenciais incluem:
- Armazenamento de dados
- O Cloud Run integra-se com o Cloud SQL (MySQL, PostgreSQL e SQL Server geridos), o Memorystore (Redis e Memcached geridos), o Firestore, o Spanner, o Cloud Storage e muito mais. Consulte o artigo Armazenamento de dados para ver uma lista completa.
- Registo e relatório de erros
- O Cloud Logging ingere automaticamente os registos de contentores. Se existirem exceções nos registos, o Error Reporting agrega-as e, em seguida, envia-lhe uma notificação. Os seguintes idiomas são suportados: Go, Java, Node.js, PHP, Python, Ruby e .NET.
- Identidade do serviço
- Cada revisão do Cloud Run está associada a uma conta de serviço e as Google Cloud bibliotecas cliente usam de forma transparente esta conta de serviço para fazer a autenticação com as Google Cloud APIs.
- Entrega contínua
- Se armazenar o seu código-fonte no GitHub, no Bitbucket ou nos Cloud Source Repositories, pode configurar o Cloud Run para implementar automaticamente novos commits.
- Redes privadas
- As instâncias do Cloud Run podem alcançar recursos na rede da nuvem virtual privada através do conector de acesso a VPC sem servidor. É assim que o seu serviço pode estabelecer ligação com máquinas virtuais do Compute Engine ou produtos baseados no Compute Engine, como o Google Kubernetes Engine ou o Memorystore.
- Google Cloud APIs
- O código do seu serviço autentica-se de forma transparente com as Google Cloud APIs. Isto inclui as APIs de IA e aprendizagem automática, como a Cloud Vision API, a Speech-to-Text API, a AutoML Natural Language API, a Cloud Translation API e muitas mais.
- Tarefas em segundo plano
- Pode agendar a execução de código mais tarde ou imediatamente após devolver um pedido Web. O Cloud Run funciona bem com o Cloud Tasks para oferecer uma execução assíncrona escalável e fiável.
Consulte o artigo Estabelecer ligação a Google Cloud serviços para ver uma lista dos vários Google Cloud serviços que funcionam bem com o Cloud Run.
O código tem de estar incluído numa imagem de contentor
Para poder implementar o seu serviço, tarefa ou conjunto de trabalhadores no Cloud Run, tem de o embalar numa imagem de contentor. Caso não conheça os contentores, segue-se uma breve introdução conceptual.
Conforme mostra o diagrama, usa o código fonte, os recursos e as dependências da biblioteca para criar a imagem do contentor, que é um pacote com tudo o que o seu serviço precisa para ser executado. Isto inclui artefactos de compilação, recursos, pacotes do sistema e (opcionalmente) um tempo de execução. Isto torna uma aplicação contentorizada inerentemente portátil, pois é executada em qualquer lugar onde um contentor possa ser executado. Os exemplos de artefactos de compilação incluem binários compilados ou ficheiros de script, e os exemplos de tempos de execução são o tempo de execução de JavaScript Node.js ou uma máquina virtual Java (JVM).
Os profissionais avançados valorizam o facto de o Cloud Run não impor encargos adicionais na execução do respetivo código: pode executar qualquer ficheiro binário no Cloud Run.
Se quiser mais conveniência ou delegar a colocação em contentores da sua aplicação na Google, o Cloud Run integra-se com os buildpacks do Google Cloud de código aberto para oferecer uma implementação baseada na origem.
O que se segue?
- Implemente um serviço do Cloud Run
- Crie e execute uma tarefa do Cloud Run
- Saiba como executar tarefas de acordo com um agendamento
- Implemente um grupo de trabalhadores
- Explore o modelo de recursos
- Leia mais sobre o contrato de tempo de execução do contentor