Padrões de carga de computação
Se o tráfego para um recurso da cloud, como uma VM (ou conjunto de VMs) ou uma aplicação Web, fosse constante e inalterável, não haveria necessidade de dimensionar. Um administrador de cloud pode simplesmente aprovisionar o número de instâncias necessárias para processar a carga e resolver a questão. No entanto, os padrões de tráfego mudam com o tempo, sendo algumas vezes previsíveis e outras não. No mundo real, um administrador tem de diagnosticar a carga sobre os recursos que gere e utilizar o dimensionamento para garantir que o sistema consegue acompanhar a procura.
Antes de vermos como dimensionar, vamos abordar por que dimensionamos ao analisarmos alguns dos padrões de carga comuns que as VMs e outros recursos da cloud experienciam.
Crescimento consistente
Um dos fatores mais comuns para a necessidade de dimensionamento é o crescimento consistente da procura. A Figura 1 mostra o tráfego para o site de uma empresa durante um período de 24 meses. A empresa está a crescer rapidamente e o tráfego para o respetivo site reflete isso mesmo. Se presumirmos que um servidor Web consegue processar cinco mil pedidos por unidade de tempo, a empresa começa com uns três ou quatro servidores Web, mas precisa de aproximadamente dois anos para acompanhar a crescente procura e continuar a servir bem os seus clientes.
Figura 1: Crescimento consistente.
O crescimento consistente está entre os padrões de carga mais fáceis de compensar porque a alteração é contínua e gradual. Provavelmente, podemos dimensionar com servidores físicos, pois conseguimos prever quando será necessário o próximo servidor (ou conjunto de servidores) e ter semanas ou meses de preparação. No entanto, a computação na cloud permite-nos colocar novos servidores virtuais online numa questão de minutos. Além disso, embora a tendência de 24 meses mostre um crescimento estável e previsível, as cargas podem flutuar substancialmente em períodos mais curtos. A computação na cloud é muito mais adaptável a micro tendências do que o dimensionamento com servidores físicos.
Cargas em constante flutuação
A rápida elasticidade oferecida pela computação na cloud é essencial quando as cargas flutuam de forma imprevisível em períodos relativamente curtos. A Figura 2 mostra a carga num site num período de 24 horas. Mais uma vez, vamos imaginar que um servidor consegue processar cinco mil pedidos por unidade de tempo: o número de servidores necessários varia de 2 para 16 ao longo do dia. Podemos acomodar este tráfego ao manter 16 servidores Web virtuais sempre online, mas lembre-se de que os fornecedores de serviços cloud cobram pelas VMs mesmo quando estão inativas. A capacidade em excesso não só desperdiçaria energia, como também duplicaria aproximadamente o custo.
Figura 2: Carga em constante flutuação.
Cargas cíclicas
A Figura 3 mostra uma carga que aumenta e diminui num padrão regular e um pouco previsível. Por exemplo, a procura aumenta durante o horário de trabalho e diminui durante o período noturno. Durante o pico, esta carga requer cerca de 20 servidores para processar a procura, uma vez mais imaginando cinco mil pedidos por unidade de tempo por servidor. Não é possível fazer uma rotação de servidores físicos 24 horas por dia, mas os servidores virtuais podem ser facilmente aprovisionados e desaprovisionados para garantir que a capacidade do servidor é aproximadamente igual à procura. Os servidores físicos que ficam inativos ou são pouco utilizados 12 horas por dia representam uma despesa de capital indesejada e consumo de energia desnecessário. Os servidores virtuais também têm um custo, mas podem ser desaprovisionados quando não forem necessários e criados rapidamente quando a procura assim o exigir.
Figura 3: Carga cíclica que se repete a cada 24 horas.
picos imprevisíveis
Um dos padrões mais difíceis de lidar do ponto de vista do custo e da manutenção é o que incorre em picos imprevisíveis (Figura 4). Se os picos forem previsíveis, por exemplo, se o site servir um serviço de entrega de pizzas com cargas maiores aos fins de semana e feriados, pode ser planeada uma capacidade extra. No entanto, se não forem previsíveis, temos de estar preparados para lidar com as mesmas a qualquer altura.
Figura 4: Explosões imprevisíveis.
Podemos prever custos excessivos (o custo dos servidores aprovisionados para processar cargas de pico, mas que estão relativamente inativos durante as horas de menor tráfego), como a área entre a parte superior da curva e uma linha horizontal desenhada através do ponto mais alto. Nesse caso, o custo de fornecer uma capacidade para 100 mil pedidos por unidade de tempo para a carga na Figura 4 é consideravelmente superior ao custo de fornecer uma capacidade equivalente na Figura 3.
Se conseguirmos prever a magnitude dos picos de procura (não necessariamente a altura em que ocorrem) e não nos preocuparmos com o custo, podemos fornecer sempre uma capacidade adequada ao aprovisionarmos servidores suficientes para processar as cargas mais altas. A computação na cloud permite-nos colocar recursos online quando são necessários e colocá-los offline (e deixar de incorrer em custos) quando não forem. A elasticidade é imposta pelo dimensionamento dos recursos da cloud. Vamos analisar o conceito de dimensionamento mais detalhadamente e ver por que motivo é um fator fundamental na economia da computação na cloud.