Aproveitar a elasticidade

Last reviewed 2024-12-06 UTC

Esse princípio no pilar de otimização de performance do Google Cloud Well-Architected Framework fornece recomendações para ajudar você a incorporar a elasticidade, que é a capacidade de ajustar os recursos de forma dinâmica com base nas mudanças nos requisitos da carga de trabalho.

A elasticidade permite que diferentes componentes de um sistema sejam escalonados 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 provisionar demais ou de menos.

Visão geral do princípio

Os requisitos de performance de um sistema influenciam diretamente quando e como ele é escalonado verticalmente ou horizontalmente. É necessário avaliar a capacidade do sistema e determinar a carga que ele deve processar na linha de base. Em seguida, determine como você quer que o sistema responda a aumentos e diminuições na carga.

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

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

Defina as circunstâncias em que o sistema é escalonado. 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 seções a seguir.

Planejar períodos de pico de carga

É necessário planejar um caminho de escalonamento eficiente para eventos conhecidos, como períodos esperados de aumento da demanda do cliente.

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

Para eventos desconhecidos ou inesperados, como um aumento repentino na demanda ou no tráfego, é possível usar 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é mesmo métricas personalizadas definidas no Cloud Monitoring.

Por exemplo, considere um aplicativo que é executado em um Compute Engine grupo gerenciado de instâncias (MIG). Esse aplicativo tem um requisito de que cada instância tenha performance ideal até que a utilização média da CPU atinja 75%. Nesse exemplo, é possível 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 atingido. 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 autoescalador 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, o que permite ao autoescalador adaptar rapidamente a previsão para mudanças 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 inerentemente elásticos, como:

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 maior 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 nós e 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.