Dimensionamento automatizado na cloud

Concluído

Os administradores da cloud podem aumentar ou reduzir verticalmente para lidar com o aumento da procura e reduzir horizontal ou verticalmente para reduzir os custos quando a procura diminui. Por exemplo, um administrador atento pode detetar que a procura está a aumentar e utilizar as ferramentas fornecidas pelos fornecedores de serviços cloud para colocar VMs adicionais online (aumentar horizontalmente) ou substituir as VMs existentes por umas maiores, com mais CPU e memória (aumentar verticalmente). A palavra-chave é "vigilante". Se a demanda atingir picos e ninguém estiver ciente, o sistema como um todo pode se tornar lento, até mesmo sem resposta, para os usuários finais. Por outro lado, se aumentar ou reduzir verticalmente para processar cargas mais pesadas e não voltar a dimensionar quando a carga diminuir, acabará por pagar por recursos de que não precisa.

É por isso que as plataformas de cloud populares oferecem mecanismos de dimensionamento automático para dimensionar recursos como resposta à procura flutuante sem intervenção humana. Existem duas abordagens principais para o dimensionamento automático:

  • Baseado no tempo – os recursos são dimensionados mediante uma agenda predeterminada. Por exemplo, se o site da sua organização tiver as cargas mais altas durante o horário de trabalho, configure o dimensionamento automático para que os recursos aumentem ou diminuam às 8h00 todas as manhãs e diminuam ou diminuam às 17h00 todas as tardes. O dimensionamento baseado no tempo é por vezes chamado de dimensionamento agendado.

  • Baseado em métricas – se as cargas forem menos previsíveis, dimensione os recursos com base em métricas predefinidas, como utilização da CPU, pressão da memória ou tempo de espera médio do pedido. Por exemplo, se a utilização média da CPU atingir 70%, coloque automaticamente VMs adicionais online e, quando diminuir para 30%, desaprovisione as VMs extra.

Independentemente de optar por dimensionar com base no tempo, em métricas ou de ambas as formas, o dimensionamento automático depende de regras de dimensionamento ou políticas de dimensionamento configuradas por um administrador da cloud. As plataformas de nuvem modernas suportam regras de dimensionamento que variam de simples, como expandir de duas instâncias para quatro todos os dias às 8h00 e reverter para duas instâncias às 17h00, a complexas -- por exemplo, aumentar a contagem de VMs em uma se a utilização máxima da CPU exceder 70% ou o tempo médio de espera de solicitação atingir 5 segundos. Encontrar a combinação certa de regras envolve normalmente alguma experiência por parte do administrador da cloud.

Todos os principais fornecedores de serviços cloud, incluindo a Amazon, a Microsoft e a Google, suportam o dimensionamento automático. O Dimensionamento Automático do AWS pode ser aplicado a instâncias EC2, tabelas do DynamoDB e outros serviços cloud do AWS. O Azure fornece opções de dimensionamento automático para serviços importantes, incluindo o Serviço de Aplicações e as Máquinas Virtuais. A Google faz o mesmo para o Google Compute Engine e o Google App Engine.

Em termos gerais, os serviços de dimensionamento automático reduzem e aumentam horizontalmente em vez de aumentarem e reduzirem verticalmente, em parte, porque aumentar e reduzir verticalmente envolve substituir uma instância por outra e inevitavelmente implica um período de inatividade à medida que são criadas e colocadas online novas instâncias.

Dimensionamento automático baseado no tempo

O dimensionamento automático baseado no tempo é apropriado quando as cargas flutuam de forma previsível. Por exemplo, a carga mais alta nos sistemas de TI de muitas organizações ocorre durante o horário de trabalho e pode ocorrer pouca ou nenhuma carga nas primeiras horas da manhã. O site da Domino's Pizza's pode experimentar cargas em todas as horas do dia, uma vez que opera mais de 16.000 lojas em quase 100 países/regiões. No entanto, tem previsivelmente cargas mais altas do que o normal durante determinadas alturas do ano.

Qualquer cenário é candidato ao dimensionamento automático baseado no tempo. A Figura 7 mostra como o dimensionamento automático agendado é aplicado no Azure. Neste exemplo, um administrador de nuvem configura um Serviço de Aplicativo do Azure que hospeda o site da organização para executar duas instâncias por padrão, mas dimensionar para quatro instâncias entre 6h00 e 18h00, seis dias por semana, exceto domingo. Ao selecionar a opção "Especificar datas de início/fim", o administrador da cloud pode simplesmente configurar o Serviço de Aplicações para aumentar horizontalmente para 10 instâncias no domingo do Super Bowl. Pode ainda definir várias condições de dimensionamento para aumentar horizontalmente também noutras datas.

Figura 7: Dimensionamento automático agendado no Azure.

Figura 7: Dimensionamento automático agendado no Azure.

Dimensionamento automático baseado em métricas

O dimensionamento baseado em métricas, como a utilização da CPU e o tempo de espera médio do pedido, é apropriado quando as cargas são menos previsíveis. A monitorização é um elemento crucial para um dimensionamento automático eficiente de recursos baseado em métricas de desempenho, uma vez que permite ao dimensionamento automático saber quando tem de dimensionar. A monitorização permite analisar os padrões de tráfego ou a utilização de recursos para fazer uma avaliação informada sobre quando e quantos recursos dimensionar para maximizar o Quality of Service, enquanto minimiza o custo.

Existem vários aspetos dos recursos que são monitorizados para acionar o dimensionamento de recursos. A métrica mais comum é a utilização de recursos. Por exemplo, um serviço de monitorização pode acompanhar a utilização da CPU de cada nó de recurso e dimensionar os recursos se a utilização for excessiva ou demasiado baixa. Por exemplo, se a utilização de cada recurso for superior a 90%, é recomendável adicionar mais recursos, pois o sistema está sujeito a uma carga pesada. Normalmente, os fornecedores de serviços decidem estes pontos de acionamento ao analisar o ponto de rutura dos nós de recurso, quando começam a falhar e ao mapear o comportamento mediante vários níveis de carga. Embora, por motivos de custo, seja importante utilizar cada recurso ao máximo, é aconselhável deixar algum espaço para o sistema operativo permitir atividades de sobrecarga. Da mesma forma, se a utilização estiver abaixo de 30%, por exemplo, é possível que nem todos os nós de recurso sejam necessários e que alguns possam ser desaprovisionados.

Na prática, os fornecedores de serviços monitorizam geralmente uma combinação de várias métricas diferentes de um nó de recurso para avaliar quando dimensionar os recursos. Entre estas, incluem-se a utilização da CPU, o consumo de memória, o débito e a latência. O AWS utiliza o CloudWatch para monitorizar os recursos EC2 e fornecer métricas de dimensionamento (Figura 8). O CloudWatch acompanha as métricas de todas as instâncias EC2 num grupo de dimensionamento e gera um alarme quando uma métrica especificada ultrapassa um limiar, por exemplo, quando a utilização da CPU excede 70%. Em seguida, o AWS aumenta ou diminui a contagem de instâncias EC2 com base nas políticas de dimensionamento configuradas por um administrador.

Figura 8: Dimensionamento automático de instâncias do EC2 na AWS.

Figura 8: dimensionamento automático de instâncias EC2 no AWS.

O AWS também suporta o dimensionamento preditivo, que utiliza machine learning para prever padrões de tráfego e gerir contagens de instâncias em conformidade. O objetivo é dimensionar de forma inteligente os recursos da cloud sem exigir que um administrador da cloud configure regras de dimensionamento automático. Os principais fornecedores de serviços cloud estão sempre a encontrar novas formas de melhorar as suas plataformas com machine learning. A Microsoft, por exemplo, utiliza agora machine learning para melhorar a resiliência das Máquinas Virtuais do Azure ao prever e reduzir proativamente as falhas de VMs1.

Referências

  1. Microsoft (2018). Melhorar a resiliência da Máquina Virtual do Azure com ML preditivo e migração ao vivo. https://azure.microsoft.com/blog/improving-azure-virtual-machine-resiliency-with-predictive-ml-and-live-migration/.

Verifique o seu conhecimento

1.

É administrador da cloud responsável por garantir que o site destinado ao público da sua organização permanece sempre rápido e responsivo. O site está alojado num Serviço de Aplicações do Azure. Regista o tráfego mais intenso entre as 8h00 e as 17h00 todos os dias, mas a carga é um pouco inconsistente de um dia para o outro. Além disso, ocorrem cargas de pico pouco frequentes até 10 vezes o tráfego normal. Estes picos são difíceis de prever, mas tornam o site lento se não forem incorporados rapidamente recursos online. Que abordagem forneceria o melhor equilíbrio entre a capacidade de resposta e o custo?