Aproveitar a elasticidade

Last reviewed 2024-12-06 UTC

Esse princípio no pilar de otimização de desempenho do Google Cloud Framework de arquitetura oferece recomendações para ajudar você a incorporar a elasticidade, que é a capacidade de ajustar recursos dinamicamente com base nas mudanças nos requisitos de carga de trabalho.

A elasticidade permite que diferentes componentes de um sistema sejam dimensionados de forma independente. Esse escalonamento direcionado pode ajudar a melhorar a performance e a eficiência de custos alocando recursos exatamente onde eles são necessários, sem superprovisionar ou subprovisionar seus recursos.

Visão geral do princípio

Os requisitos de desempenho de um sistema influenciam diretamente quando e como o sistema é dimensionado verticalmente ou horizontalmente. Você precisa avaliar a capacidade do sistema e determinar a carga que ele precisa processar no valor de referência. Em seguida, você precisa determinar como quer que o sistema responda aos aumentos e diminuições na carga.

Quando a carga aumenta, o sistema precisa escalonar horizontalmente horizontal, vertical ou ambos. Para escalonamento horizontal, adicione nós de réplica para garantir que o sistema tenha capacidade geral suficiente para atender à demanda aumentada. Para escalabilidade vertical, substitua os componentes atuais do aplicativo por componentes com mais capacidade, mais memória e mais armazenamento.

Quando a carga diminui, o sistema precisa ser reduzir escala vertical (horizontalmente, verticalmente ou ambos).

Defina as circunstâncias em que o sistema aumenta ou diminui a escala. Planeje escalonar verticalmente manualmente os sistemas para períodos conhecidos de tráfego intenso. Use ferramentas como o escalonamento automático, que responde a aumentos ou diminuições na carga.

Recomendações

Para aproveitar a elasticidade, considere as recomendações nas próximas seções.

Planejar períodos de pico de carga

Você precisa planejar um caminho de escalonamento eficiente para eventos conhecidos, como períodos de aumento esperado na demanda do cliente.

Considere aumentar o sistema antes de períodos conhecidos de tráfego intenso. Por exemplo, se você trabalha em uma organização de varejo, espera que a demanda aumente durante as vendas sazonais. Recomendamos que você escalonar verticalmente ou escalonar horizontalmente manualmente os sistemas antes dessas vendas para garantir que o sistema possa processar imediatamente a carga aumentada ou ajustar imediatamente os limites atuais. Caso contrário, o sistema pode levar vários minutos para adicionar recursos em resposta a alterações em tempo real. A capacidade do seu aplicativo pode não aumentar rápido o suficiente e causar atrasos em alguns usuários.

Para eventos desconhecidos ou inesperados, como um aumento repentino na demanda ou no tráfego, use os recursos de escalonamento automático para acionar o escalonamento elástico com base em métricas. Essas métricas podem incluir a utilização da CPU, a capacidade de veiculação do balanceador de carga, a latência e até métricas personalizadas definidas no Cloud Monitoring.

Por exemplo, considere um aplicativo executado em um grupo gerenciado de instâncias (MIG, na sigla em inglês) do Compute Engine. Esse aplicativo tem um requisito de que cada instância tenha um desempenho ótimo até que a utilização média da CPU atinja 75%. Neste exemplo, você pode definir uma política de escalonamento automático que cria mais instâncias quando a utilização da CPU atinge o limite. Essas instâncias recém-criadas ajudam a absorver a carga, o que garante que a utilização média da CPU permaneça em uma taxa ideal até que o número máximo de instâncias configuradas para o MIG seja alcançado. Quando a demanda diminui, a política de escalonamento automático remove as instâncias que não são mais necessárias.

Planeje reservas de slots de recursos no BigQuery ou ajuste os limites para configurações de escalonamento automático no Spanner usando o escalonador automático gerenciado.

Usar o escalonamento preditivo

Se os componentes do sistema incluem o Compute Engine, é necessário avaliar se o escalonamento automático preditivo é adequado para sua carga de trabalho. O escalonamento automático preditivo prevê a carga futura com base nas tendências históricas das métricas, por exemplo, a utilização da CPU. As previsões são recalculadas em intervalos de poucos minutos, para que o escalonador automático adapte rapidamente a previsão para alterações muito recentes na carga. Sem o escalonamento automático preditivo, um autoescalador só pode escalonar um grupo de modo reativo, com base nas mudanças observadas na carga em tempo real. O escalonamento automático preditivo funciona com dados em tempo real e históricos para responder à carga atual e prevista.

Implementar arquiteturas sem servidor

Considere implementar uma arquitetura sem servidor com serviços sem servidor que são inerentemente elásticos, como estes:

Ao contrário do escalonamento automático em outros serviços que exigem regras de ajuste (por exemplo, o Compute Engine), o escalonamento automático sem servidor é instantâneo e pode reduzir escala vertical para zero recursos.

Usar o modo Autopilot para Kubernetes

Para aplicativos complexos que exigem mais controle sobre o Kubernetes, considere o modo Autopilot no Google Kubernetes Engine (GKE). O modo Autopilot oferece automação e escalonabilidade por padrão. O GKE escalona automaticamente os nós e os recursos com base no tráfego. O GKE gerencia nós, cria novos nós para seus aplicativos e configura upgrades e reparos automáticos.