Padrões comuns de dimensionamento automático

Concluído

Nesta unidade, veremos os padrões para dimensionamento automático.

O dimensionamento automático não é uma solução instantânea. A simples adição de recursos a um sistema ou a execução de mais instâncias de um processo não garante a melhoria do desempenho desse sistema. Ao desenhar uma estratégia de dimensionamento automático, considere os seguintes pontos:

Recomendações

Identificar gargalos: a expansão não é uma solução mágica para todos os problemas de desempenho. Por exemplo, se a base de dados de back-end estiver estrangulada, não ajuda adicionar mais servidores Web. Identifique e resolva os gargalos no sistema antes de lançar mais instâncias para o problema. As partes com monitorização de estado do sistema são a causa mais provável dos estrangulamentos.

Decompor cargas de trabalho por requisitos de escalabilidade: os aplicativos geralmente consistem em várias cargas de trabalho com requisitos diferentes de dimensionamento. Por exemplo, uma aplicação pode ter um site destinado ao público e um site de administração separado. O site público pode ter picos de tráfego repentinos, enquanto que o site de administração tem uma carga mais pequena e previsível.

Descarregar tarefas que consomem muitos recursos: as tarefas que exigem muitos recursos de CPU ou E/S devem ser movidas para trabalhos em segundo plano quando possível para minimizar a carga no front-end que está lidando com as solicitações do usuário.

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

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

Design para dimensionamento: lembre-se de que, com a escala elástica, o aplicativo terá períodos de escala, quando as instâncias forem removidas. A aplicação tem de processar graciosamente as instâncias que são removidas. Aqui estão algumas maneiras de lidar com o scale-in:

  • Escute os eventos de encerramento (quando disponíveis) e encerre corretamente.
  • Os clientes/consumidores de um serviço devem suportar a repetição e o processamento de falhas transitórias.
  • Para tarefas de longa duração, considere dividir o trabalho.
  • Coloque itens de trabalho em uma fila para que outra instância possa pegar 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 registro de atividades. Em seguida, você pode configurar um alerta de registro de atividades para que possa ser notificado por e-mail, SMS 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 Registro de atividades. Em seguida, você pode configurar um alerta de registro de atividades para que possa ser notificado por e-mail, SMS ou webhooks sempre que houver uma ação de dimensionamento automático bem-sucedida. Você também pode configurar notificações por e-mail ou webhook para ser notificado sobre ações de escala bem-sucedidas por meio da guia Notificações na configuração de dimensionamento automático.

Diagram of a webhook process flow.

Padrões comuns para dimensionar seu recurso no Azure

Dimensionamento com base na demanda

Você pode dimensionar automaticamente o número de instâncias de serviço no início do dia de trabalho, quando a demanda do cliente aumenta. No final do dia de trabalho, dimensione automaticamente o número de instâncias de aplicativos para minimizar os custos de recursos durante a noite, quando o uso do aplicativo for baixo.

Dimensionar de forma diferente durante a semana vs fins de semana

Em uma noite ou fim de semana, sua demanda de aplicativos pode diminuir. Se essa carga for consistente durante 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 escala. Essa ação de dimensionamento reduz o custo de execução do conjunto de escalas porque você executa apenas o número de instâncias necessárias para atender à demanda atual.

Dimensionar de forma diferente durante as férias

Se você tiver um uso intenso para um serviço em determinadas partes do mês ou do ciclo fiscal, poderá dimensionar automaticamente o número de instâncias de serviço para acomodar suas demandas extras. Quando há um evento de marketing, promoção ou venda de férias, você pode dimensionar automaticamente o número de instâncias de serviço antes da demanda esperada do cliente.

Dimensionar com base em métrica personalizada

Finalmente, é melhor definir suas regras de dimensionamento automático com cuidado. Por exemplo, um ataque de negação de serviço (DoS) provavelmente resultará em um influxo em grande escala de tráfego de entrada. Tentar processar um aumento nos pedidos provocado por um ataque denial of service seria inútil e dispendioso. Estes pedidos não são genuínos e devem ser eliminados em vez de processados. Uma melhor solução é implementar a deteção e filtragem dos pedidos que ocorrem durante esse tipo de ataque antes que o mesmo atinja o seu 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 é dimensionado, se necessário.