Esse princípio no pilar de otimização de desempenho do Google Cloud framework bem arquitetado fornece 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 escalonados de forma independente. Esse escalonamento direcionado pode ajudar a melhorar o desempenho e a eficiência de custos, alocando recursos precisamente onde são necessários, sem provisionamento excessivo ou insuficiente de recursos.
Visão geral do princípio
Os requisitos de desempenho de um sistema influenciam diretamente quando e como o sistema é escalonado verticalmente ou horizontalmente. É preciso avaliar a capacidade do sistema e determinar a carga que se espera que o sistema processe no valor de referência. Em seguida, é preciso determinar como você quer que o sistema responda a aumentos e diminuições na carga.
Quando a carga aumenta, o sistema precisa ser escalonado horizontalmente e verticalmente, ou ambos. Para escalonamento horizontal, adicione nós de réplica para garantir que o sistema tenha capacidade geral suficiente para atender ao aumento da demanda. Para escalonamento vertical, substitua os componentes atuais do aplicativo por componentes que contenham mais capacidade, memória e armazenamento.
Quando a carga diminui, o sistema precisa ser reduzido (horizontalmente, verticalmente ou ambos).
Defina as circunstâncias em que o sistema é escalonado verticalmente ou reduzido. Planeje o escalonamento vertical manual dos sistemas para períodos conhecidos de alto tráfego. Use ferramentas como escalonamento automático, que responde a aumentos ou reduções da carga.
Recomendações
Para aproveitar a elasticidade, considere as recomendações nas seções a seguir.
Planejar os períodos de pico de carga
Você precisa planejar um caminho de escalonamento eficiente para eventos conhecidos, como períodos esperados de aumento na demanda de clientes.
Considere escalonar verticalmente o sistema antes de períodos conhecidos de alto tráfego. Por exemplo, no caso de uma organização de varejo, você espera que a demanda aumente durante as vendas sazonais. Recomendamos que você escalone horizontalmente seus sistemas de forma manual antes dessas vendas para garantir que eles possam lidar imediatamente com o aumento de carga 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 aplicativo pode não aumentar rápido o suficiente e causar atrasos a alguns usuários.
Para eventos desconhecidos ou inesperados, como um aumento repentino de demanda ou 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 o uso da CPU, a capacidade de exibição do balanceador de carga, a latência e até mesmo métricas personalizadas definidas no Cloud Monitoring.
Por exemplo, considere um aplicativo executado em um grupo gerenciado de instâncias (MIG) do Compute Engine. O requisito desse aplicativo é que cada instância tenha um desempenho ideal até que a utilização média da CPU atinja 75%. Neste 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 ajuda a garantir 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 das configurações de escalonamento automático no Spanner usando o escalonador automático gerenciado.
Usar escalonamento preditivo
Se os componentes do sistema incluírem o Compute Engine, avalie 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 suas métricas, como a utilização da CPU. As previsões são recalculadas em intervalos de alguns minutos, portanto, o escalonador automático adapta rapidamente a previsão a alterações muito recentes na carga. Sem o escalonamento automático preditivo, um escalonador automático só pode escalonar um grupo de forma reativa, com base nas alterações de carga em tempo real observadas. O escalonamento automático preditivo funciona com dados em tempo real e dados históricos para responder à carga atual e prevista.
Implementar arquiteturas sem servidor
Considere implementar uma arquitetura sem servidor com serviços sem servidor que sejam inerentemente elásticos, como os seguintes:
Ao contrário do escalonamento automático em outros serviços que exigem regras de ajuste (por exemplo, Compute Engine), o escalonamento automático sem servidor é instantâneo e pode ser reduzido a zero recursos.
Usar o modo Autopilot para Kubernetes
Para aplicativos complexos que exigem maior controle sobre o Kubernetes, considere usar 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.