Otimizar o uso de recursos para sustentabilidade

Last reviewed 2026-10-28 UTC

Este princípio no pilar de sustentabilidade do Google Cloud Well-Architected Framework fornece recomendações para ajudar você a otimizar o uso de recursos pelas suas cargas de trabalho no Google Cloud.

Visão geral do princípio

Otimizar o uso de recursos é crucial para melhorar a sustentabilidade do seu ambiente de nuvem. Cada recurso provisionado, de ciclos de computação a repositórios de dados, afeta diretamente o uso de energia, a intensidade hídrica e as emissões de carbono. Para reduzir a pegada ambiental das suas cargas de trabalho, é preciso fazer escolhas informadas ao provisionar, gerenciar e usar recursos de nuvem.

Recomendações

Para otimizar o uso de recursos, considere as recomendações nas seções a seguir.

Implementar o escalonamento automatizado e dinâmico

O escalonamento automatizado e dinâmico garante que o uso de recursos seja ideal, o que ajuda a evitar o desperdício de energia de infraestruturas ociosas ou provisionadas em excesso. A redução da energia desperdiçada se traduz em custos mais baixos e menores emissões de carbono.

Use as técnicas a seguir para implementar a escalonabilidade automatizada e dinâmica.

Usar o escalonamento horizontal

O escalonamento horizontal é a técnica preferida para a maioria dos aplicativos com priorização da nuvem. Em vez de aumentar o tamanho de cada instância, o que é conhecido como escalonamento vertical, você adiciona instâncias para distribuir a carga. Por exemplo, é possível usar grupos gerenciados de instâncias (MIGs) para escalonar horizontalmente de forma automática um grupo de VMs do Compute Engine. A infraestrutura escalonada horizontalmente é mais resiliente porque a falha de uma instância não afeta a disponibilidade do aplicativo. O escalonamento horizontal também é uma técnica eficiente em termos de recursos para aplicativos com níveis de carga variáveis.

Configurar políticas de escalonamento adequadas

Defina as configurações de escalonamento automático com base nos requisitos das suas cargas de trabalho. Defina métricas e limites personalizados específicos para o comportamento do aplicativo. Em vez de depender apenas da utilização da CPU, considere métricas como profundidade da fila para tarefas assíncronas, latência de solicitação e métricas de aplicativos personalizadas. Para evitar o escalonamento frequente e desnecessário ou o flapping, defina políticas de escalonamento claras. Por exemplo, para cargas de trabalho implantadas no Google Kubernetes Engine (GKE), configure uma política de escalonamento automático de cluster adequada.

Combinar escalonamento reativo e proativo

Com o escalonamento reativo, o sistema é escalonado em resposta a mudanças de carga em tempo real. Essa técnica é adequada para aplicativos que têm picos de carga imprevisíveis.

O escalonamento proativo é adequado para cargas de trabalho com padrões previsíveis, como horário de funcionamento diário fixo e geração de relatórios semanais. Para essas cargas de trabalho, use o escalonamento automático programado para pré-provisionar recursos para que eles possam lidar com um nível de carga previsto. Essa técnica evita uma disputa por recursos e garante uma experiência do usuário mais tranquila e eficiente. Essa técnica também ajuda a planejar proativamente picos de carga conhecidos, como grandes ações promocionais e esforços de marketing focados.

OsGoogle Cloud serviços gerenciados e recursos como o Autopilot do GKE, o Cloud Run e os MIGs gerenciam automaticamente o escalonamento proativo aprendendo com os padrões de carga de trabalho. Por padrão, quando um serviço do Cloud Run não recebe tráfego, ele é reduzido para zero instância.

Projetar aplicativos sem estado

Para que um aplicativo seja escalonado horizontalmente, os componentes dele precisam ser sem estado. Isso significa que a sessão ou os dados de um usuário específico não estão vinculados a uma única instância de computação. Quando você armazena o estado da sessão fora da instância de computação, como no Memorystore para Redis, qualquer instância de computação pode processar solicitações de qualquer usuário. Essa abordagem de design permite um escalonamento horizontal simples e eficiente.

Usar programação e lotes

O processamento em lote é ideal para cargas de trabalho em grande escala que não são urgentes. Os jobs em lote podem ajudar a otimizar as cargas de trabalho para eficiência energética e custo.

Use as técnicas a seguir para implementar jobs de programação e em lote.

Programar para baixa intensidade de carbono

Programe os jobs em lote para serem executados em regiões com baixa emissão de carbono e durante períodos em que a rede elétrica local tenha uma alta porcentagem de energia limpa. Para identificar os horários do dia com menor intensidade de carbono em uma região, use o relatório de pegada de carbono.

Usar VMs spot para cargas de trabalho não críticas

As VMs spot permitem que você aproveite a capacidade não utilizada do Compute Engine com um grande desconto. As VMs spot podem ser interrompidas, mas oferecem uma maneira econômica de processar grandes conjuntos de dados sem a necessidade de recursos dedicados e sempre ativos. As VMs spot são ideais para jobs em lote não críticos e tolerantes a falhas.

Consolidar e paralelizar jobs

Para reduzir a sobrecarga de inicialização e encerramento de jobs individuais, agrupe jobs semelhantes em um único lote grande. Execute essas cargas de trabalho de alto volume em serviços como o Batch. O serviço provisiona e gerencia automaticamente a infraestrutura necessária, o que ajuda a garantir a utilização ideal dos recursos.

Usar serviços gerenciados

Serviços gerenciados como o Batch e o Dataflow lidam automaticamente com o provisionamento, a programação e o monitoramento de recursos. A plataforma de nuvem lida com a otimização de recursos. Você pode se concentrar na lógica do aplicativo. Por exemplo, o Dataflow escalona automaticamente o número de workers com base no volume de dados no pipeline, para que você não pague por recursos inativos.

Combinar famílias de máquinas de VM com os requisitos de carga de trabalho

Os tipos de máquina que podem ser usados nas VMs do Compute Engine são agrupados em famílias de máquinas, que são otimizadas para diferentes cargas de trabalho. Escolha as famílias de máquinas adequadas com base nos requisitos das suas cargas de trabalho.

Família de máquinas Recomendado para tipos de carga de trabalho Orientações sobre sustentabilidade
Instâncias de uso geral: essas instâncias oferecem uma proporção equilibrada de CPU para memória. Servidores da Web, microsserviços, bancos de dados pequenos e médios e ambientes de desenvolvimento. A série E2 é altamente econômica e eficiente em termos de energia devido à alocação dinâmica de recursos. As séries C4A, N4A e Tau T2A usam processadores baseados em Arm, que geralmente são mais eficientes em termos de energia por unidade de desempenho para cargas de trabalho em grande escala.
Instâncias com otimização para computação: essas instâncias oferecem uma alta proporção de vCPU para memória e alto desempenho por núcleo. Computação de alto desempenho (HPC), processamento em lote, servidores de jogos e análise de dados baseada em CPU. Uma instância otimizada para computação permite concluir tarefas com uso intensivo de CPU mais rapidamente, o que reduz o tempo total de computação e o consumo de energia do job.
Instâncias com otimização de memória: essas instâncias são projetadas para cargas de trabalho que exigem uma grande quantidade de memória. Grandes bancos de dados em memória e data warehouses, como o SAP HANA ou análises em memória. As instâncias com otimização de memória permitem a consolidação de cargas de trabalho com uso intenso de memória em menos nós físicos. Essa consolidação reduz a energia total necessária em comparação com o uso de várias instâncias menores. A memória de alto desempenho reduz a latência de acesso aos dados, o que pode reduzir o tempo total que a CPU passa em um estado ativo.
Instâncias otimizadas para armazenamento: essas instâncias oferecem armazenamento SSD local de alta capacidade de processamento e baixa latência. Armazenamento em data warehouse, análise de dados de registros e bancos de dados SQL, NoSQL e vetoriais. As instâncias otimizadas para armazenamento processam conjuntos de dados massivos localmente, o que ajuda a eliminar a energia usada para a saída de dados de rede entre locais. Ao usar o armazenamento local para tarefas de alta IOPS, você evita o provisionamento excessivo de várias instâncias padrão.
Instâncias otimizadas para acelerador: essas instâncias são criadas para cargas de trabalho aceleradas por GPU e TPU, como IA, ML e HPC. treinamento e inferência de modelos de ML e simulações científicas.

As TPUs são projetadas para otimizar a eficiência energética. Eles oferecem mais computações por watt.

Uma instância acelerada por GPU, como a série A3 com GPUs NVIDIA H100, pode ser significativamente mais eficiente em termos de energia para treinar modelos grandes do que uma alternativa somente com CPU. Embora uma instância acelerada por GPU tenha um uso de energia nominal maior, a tarefa é concluída muito mais rapidamente.

Fazer upgrade para os tipos de máquina mais recentes

O uso dos tipos de máquina mais recentes pode ajudar a melhorar a sustentabilidade. Quando os tipos de máquina são atualizados, eles geralmente são projetados para serem mais eficientes em termos de energia e fornecer maior desempenho por watt. As VMs que usam os tipos de máquina mais recentes podem concluir a mesma quantidade de trabalho com menor consumo de energia.

CPUs, GPUs e TPUs geralmente se beneficiam de avanços técnicos na arquitetura de chips, como os seguintes:

  • Núcleos especializados: os avanços nos processadores geralmente incluem núcleos ou instruções especializados para cargas de trabalho comuns. Por exemplo, as CPUs podem ter núcleos dedicados para operações vetoriais ou aceleradores de IA integrados. Quando essas tarefas são descarregadas da CPU principal, elas são concluídas com mais eficiência e consomem menos energia.
  • Gerenciamento de energia aprimorado: os avanços nas arquiteturas de chips geralmente incluem recursos de gerenciamento de energia mais sofisticados, como o ajuste dinâmico de tensão e frequência com base na carga de trabalho. Esses recursos de gerenciamento de energia permitem que os chips funcionem com eficiência máxima e entrem em estados de baixo consumo de energia quando estão ociosos, o que minimiza o consumo de energia.

As melhorias técnicas na arquitetura de chips oferecem os seguintes benefícios diretos para sustentabilidade e custo:

  • Maior desempenho por watt: essa é uma métrica importante para a sustentabilidade. Por exemplo, as VMs C4 demonstram um custo-benefício 40% maior em comparação com as VMs C3 para o mesmo consumo de energia. O processador C4A oferece 60% mais eficiência energética em comparação com processadores x86 semelhantes. Esses recursos de desempenho permitem concluir tarefas mais rapidamente ou usar menos instâncias para a mesma carga.
  • Menor consumo total de energia: com processadores melhores, os recursos de computação são usados por menos tempo em uma determinada tarefa, o que reduz o consumo geral de energia e a pegada de carbono. O impacto de carbono é particularmente alto para cargas de trabalho de computação intensiva de curta duração, como jobs em lote e treinamento de modelo de ML.
  • Uso ideal de recursos: os tipos de máquina mais recentes costumam ser mais adequados para softwares modernos e mais compatíveis com recursos avançados de plataformas de nuvem. Esses tipos de máquina geralmente permitem uma melhor utilização de recursos, o que reduz a necessidade de provisionamento excessivo e ajuda a garantir que cada watt de energia seja usado de forma produtiva.

Implantar aplicativos conteinerizados

É possível usar serviços totalmente gerenciados baseados em contêineres, como o GKE e o Cloud Run, como parte da sua estratégia de computação em nuvem sustentável. Esses serviços ajudam a otimizar a utilização de recursos e automatizar o gerenciamento de recursos.

Aproveitar o recurso de redução da escala a zero do Cloud Run

O Cloud Run oferece um ambiente sem servidor gerenciado que escalona automaticamente as instâncias para zero quando não há tráfego de entrada para um serviço ou quando um job é concluído. O escalonamento automático ajuda a eliminar o consumo de energia pela infraestrutura inativa. Os recursos são ativados apenas quando processam solicitações ativamente. Essa estratégia é altamente eficaz para cargas de trabalho intermitentes ou orientadas a eventos. Para cargas de trabalho de IA, use GPUs com o Cloud Run, que permite consumir e pagar por GPUs apenas quando elas são usadas.

Automatizar a otimização de recursos usando o GKE

O GKE é uma plataforma de orquestração de contêineres que garante que os aplicativos usem apenas os recursos necessários. Para ajudar você a automatizar a otimização de recursos, o GKE oferece as seguintes técnicas:

  • Empacotamento: o Autopilot do GKE empacota de forma inteligente vários contêineres nos nós disponíveis. O empacotamento maximiza a utilização de cada nó e reduz o número de nós inativos ou subutilizados, o que ajuda a reduzir o consumo de energia.
  • Escalonamento automático horizontal de pods (HPA): com o HPA, o número de réplicas de contêiner (pods) é ajustado automaticamente com base em métricas predefinidas, como uso da CPU ou métricas personalizadas específicas do aplicativo. Por exemplo, se o aplicativo tiver um pico de tráfego, o GKE vai adicionar pods para atender à demanda. Quando o tráfego diminui, o GKE reduz o número de pods. Esse escalonamento dinâmico evita o provisionamento excessivo de recursos, para que você não pague nem ligue uma capacidade de computação desnecessária.
  • Escalonamento automático vertical de pods (VPA): é possível configurar o GKE para ajustar automaticamente as alocações e os limites de CPU e memória para contêineres individuais. Essa configuração garante que um contêiner não receba mais recursos do que o necessário, o que ajuda a evitar o provisionamento excessivo de recursos.
  • Escalonamento automático multidimensional de pods do GKE: para cargas de trabalho complexas, é possível configurar o HPA e o VPA simultaneamente para otimizar o número de pods e o tamanho de cada um deles. Essa técnica ajuda a garantir o menor consumo de energia possível para o desempenho necessário.
  • Programação com reconhecimento de topologia (TAS): o TAS melhora a eficiência da rede para cargas de trabalho de IA e ML no GKE, colocando pods com base na estrutura física da infraestrutura do data center. A TAS coloca as cargas de trabalho em um mesmo local de forma estratégica para minimizar os saltos de rede. Essa colocalização ajuda a reduzir a latência de comunicação e o consumo de energia. Ao otimizar o alinhamento físico de nós e hardware especializado, o TAS acelera a conclusão de tarefas e maximiza a eficiência energética de cargas de trabalho de IA e ML em grande escala.

Configurar a programação com reconhecimento de carbono

No Google, transferimos continuamente nossas cargas de trabalho para locais e horários que fornecem a eletricidade mais limpa. Também reaproveitamos, ou coletamos, equipamentos mais antigos para casos de uso alternativos. Use essa estratégia de programação com reconhecimento de carbono para garantir que as cargas de trabalho conteinerizadas usem energia limpa.

Para implementar a programação com reconhecimento de carbono, você precisa de informações sobre o mix de energia que alimenta os data centers em uma região em tempo real. É possível acessar essas informações em um formato legível por máquina no repositório Energia livre de carbono para regiões do Google Cloud no GitHub ou em um conjunto de dados público do BigQuery. Os dados de intensidade de carbono e combinação de rede por hora usados para calcular o conjunto de dados anual de carbono do Google são provenientes do Electricity Maps.

Para implementar a programação com reconhecimento de carbono, recomendamos as seguintes técnicas:

  • Mudança geográfica: programe as cargas de trabalho para serem executadas em regiões que usam uma proporção maior de fontes de energia renovável. Essa abordagem permite usar redes elétricas mais limpas.
  • Mudança temporal: para cargas de trabalho não críticas e flexíveis, como processamento em lote, configure as cargas de trabalho para serem executadas fora do horário de pico ou quando a energia renovável for mais abundante. Essa abordagem é conhecida como mudança temporal e ajuda a reduzir a pegada de carbono geral, aproveitando fontes de energia mais limpas quando disponíveis.

Projetar uma recuperação de desastres com eficiência energética

A preparação para a recuperação de desastres (DR, na sigla em inglês) geralmente envolve o pré-provisionamento de recursos redundantes em uma região secundária. No entanto, recursos inativos ou subutilizados podem causar um desperdício significativo de energia. Escolha estratégias de DR que maximizem a utilização de recursos e minimizem o impacto de carbono sem comprometer seus objetivos de tempo de recuperação (RTO).

Otimizar para eficiência de inicialização a frio

Use as seguintes abordagens para minimizar ou eliminar recursos ativos na região secundária (DR):

  • Priorize a DR fria: mantenha os recursos na região de DR desativados ou em um estado de redução da escala a zero. Essa abordagem ajuda a eliminar a pegada de carbono dos recursos de computação inativos.
  • Aproveite o failover sem servidor: use serviços gerenciados sem servidor, como o Cloud Run, para endpoints de DR. O Cloud Run reduz a escala verticalmente a zero quando não está em uso. Assim, é possível manter uma topologia de DR que não consome energia até que o tráfego seja desviado para a região de DR.
  • Automatize a recuperação com infraestrutura como código (IaC): em vez de manter os recursos no site de DR em execução (quente), use uma ferramenta de IaC, como o Terraform, para provisionar ambientes rapidamente apenas quando necessário.

Equilibrar redundância e utilização

A redundância de recursos é um dos principais fatores de desperdício de energia. Para reduzir a redundância, use as seguintes abordagens:

  • Prefira o modo ativo-ativo ao ativo-passivo: em uma configuração ativo-passivo, os recursos no site passivo ficam inativos, o que resulta em desperdício de energia. Uma arquitetura ativo-ativo com tamanho ideal garante que todos os recursos provisionados nas duas regiões atendam ativamente ao tráfego. Essa abordagem ajuda a maximizar a eficiência energética da sua infraestrutura.
  • Redundância de tamanho adequado: replique dados e serviços entre regiões apenas quando a replicação for necessária para atender aos requisitos de alta disponibilidade ou DR. Cada réplica adicional aumenta o custo de energia do armazenamento permanente e da saída de rede.