Padrões comuns de dimensionamento automático

Concluído

Nesta unidade, examinaremos os padrões de dimensionamento automático.

O dimensionamento automático não é uma solução imediata. Simplesmente adicionar recursos a um sistema ou executar mais instâncias de um processo não garante um melhor desempenho para o sistema. Considere os seguintes pontos ao criar uma estratégia de dimensionamento automático:

Recomendações

Identificar gargalos: a expansão não é uma correção mágica para todos os problemas de desempenho. Por exemplo, se o banco de dados de back-end for o gargalo, não ajudará a adicionar mais servidores Web. Identifique e resolva os gargalos do sistema antes de lançar mais instâncias no problema. Partes com estado do sistema são a causa mais provável de gargalos.

Decompor as cargas de trabalho por requisitos de escalabilidade: os aplicativos geralmente consistem em várias cargas de trabalho com diferentes requisitos de escala. Por exemplo, um aplicativo pode ter um site voltado ao público e um site de administração separados. O site público pode enfrentar aumentos repentinos no tráfego, enquanto o site de administração tem uma carga menor e mais previsível.

Descarregar tarefas com uso intensivo de recursos: As tarefas que exigem muitos recursos de CPU ou E/S devem ser movidas para trabalhos em segundo plano sempre que possível. O descarregamento de tarefas minimiza a carga no front-end que lida com as solicitações do usuário.

Usar recursos internos de dimensionamento automático: se o aplicativo tem uma carga de trabalho previsível e regular, aumente-a de acordo com um agendamento. Por exemplo, aumente durante o horário comercial. Caso contrário, se a carga de trabalho não for previsível, use as métricas de desempenho como CPU ou comprimento da fila de solicitação para disparar o dimensionamento automático.

Considerar o dimensionamento automático agressivo para cargas de trabalho críticas: para cargas de trabalho críticas, você deseja se manter à frente da demanda. É melhor adicionar novas instâncias rapidamente sob carga pesada para manipular o outro tráfego e, em seguida, escalar gradualmente de volta.

Design para a escala horizontal: Lembre-se de que, com a escala elástica, o aplicativo tem períodos de escala horizontal, quando as instâncias são removidas. O aplicativo deve tratar normalmente instâncias que estão sendo removidas. Veja algumas maneiras de manipular a redução horizontal:

  • Ouça os eventos de desligamento quando eles estiverem disponíveis e desligados de forma limpa.
  • Suporte ao tratamento e repetição de falhas transitórias.
  • Considere interromper o trabalho para as tarefas de execução longa.
  • Coloque os itens de trabalho em uma fila para que outra instância possa assumir o trabalho se uma instância for removida no meio do processamento.

Notificações

  • Todas as falhas de dimensionamento automático são registradas no log de atividades. Você pode então configurar um alerta de log de atividades que o notifica por email, SMS (Serviço de Mensagens Curtas) ou webhooks sempre que houver uma falha de dimensionamento automático.
  • Da mesma forma, todas as ações de escala bem-sucedidas são lançadas no Log de atividades. Em seguida, você pode configurar um alerta do log de atividades para receber notificações por email, SMS, webhooks sempre que houver uma ação de dimensionamento automático bem-sucedida. Você também pode configurar as notificações por email ou webhook para receber notificações de ações de dimensionamento bem-sucedidas por meio da guia Notificações na configuração de dimensionamento automático.

Diagrama de um fluxo de processo de webhook.

Padrões comuns para escalar seu recurso no Azure

Escalar com base na demanda

Expanda automaticamente o número de instâncias de serviço no início do dia útil quando a demanda dos clientes aumenta. No final do dia de trabalho, reduza horizontalmente de maneira automática o número de instâncias de aplicativo para minimizar os custos de recursos durante a noite quando o uso do aplicativo for baixo.

Dimensionamento diferente em finais de semana e dias da semana

Em uma noite ou fim de semana, você pode ter uma demanda menor de aplicativo. Se essa carga for consistente em um período de tempo, você poderá configurar regras de dimensionamento automático para reduzir o número de instâncias de serviço no conjunto de dimensionamento. Executar essa ação de redução reduz o custo de execução do seu conjunto de dimensionamento porque você executa apenas o número de instâncias necessárias para atender à demanda atual.

Dimensionamento diferente durante feriados

Se você tiver um uso intensivo de um serviço em determinadas partes do mês ou do ciclo fiscal, poderá escalar automaticamente o número de instâncias de serviço para acomodar as demandas extras. Quando há um evento de marketing, uma promoção ou uma oferta de feriado, você pode escalar automaticamente o número de instâncias de serviço para se antecipar à demanda dos clientes esperada.

Dimensionamento baseado em métrica personalizada

Por fim, é melhor definir com cuidado as suas regras de dimensionamento automático. Por exemplo, um ataque DoS (negação de serviço) provavelmente resultará em um fluxo em grande escala de tráfego de entrada. Tentar lidar com um pico de solicitações causado por um ataque de DoS seria inútil e caro. Essas solicitações não são verdadeiras e devem ser descartadas em vez de processadas. Uma solução melhor é implementar a detecção e a filtragem das solicitações que ocorrem durante um ataque antes que elas sejam recebidas pelo serviço.

Depois de configurar as regras de dimensionamento automático, monitore o desempenho do seu aplicativo ao longo do tempo. Use os resultados desse monitoramento para ajustar o padrão no qual o sistema é escalado, se necessário.