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 recursos dinamicamente com base em 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 a performance e a eficiência de custos, alocando recursos exatamente onde eles são necessários, sem provisionamento excessivo ou insuficiente.
Visão geral do princípio
Os requisitos de performance de um sistema influenciam diretamente quando e como ele é escalonado vertical ou horizontalmente. É necessário avaliar a capacidade do sistema e determinar a carga que ele deve processar no valor de referência. Em seguida, determine como você 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 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 com mais capacidade, memória e armazenamento.
Quando a carga diminui, o sistema precisa reduzir escala vertical (horizontal, vertical ou ambos).
Defina as circunstâncias em que o sistema aumenta ou diminui a escala. Planeje aumentar manualmente a escala dos sistemas para períodos conhecidos de alto tráfego. 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
Você precisa planejar um caminho de escalonamento eficiente para eventos conhecidos, como períodos esperados de aumento na demanda dos clientes.
Considere aumentar a escala do sistema antes de períodos conhecidos de alto tráfego. Por exemplo, se você é uma organização de varejo, espera que a demanda aumente durante as promoções sazonais. Recomendamos que você faça escalonar verticalmente ou escalonar horizontalmente manual dos sistemas antes dessas vendas para garantir que eles possam lidar imediatamente com 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 rápido o suficiente e causar atrasos para alguns usuários.
Para eventos desconhecidos ou inesperados, como um aumento repentino na demanda ou no tráfego, use recursos de escalonamento automático para acionar o escalonamento elástico com base em métricas. Elas podem incluir utilização da CPU, capacidade de veiculação do balanceador de carga, latência e até mesmo métricas personalizadas definidas no Cloud Monitoring.
Por exemplo, considere um aplicativo que é executado em um grupo gerenciado de instâncias (MIG) do Compute Engine. Esse aplicativo exige que cada instância funcione de maneira ideal 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 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 escalonador automático gerenciado.
Usar o 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 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 que são 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 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 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.