terça-feira, 21 de maio de 2013

Planejamento de Capacidade a Longo Prazo Dirigido por Métricas de Negócio para Aplicações SaaS



Este artigo é resultado da pesquisa de mestrado de David Candeia, com a colaboração da professora Dra. Raquel Lopes e de Ricardo Araújo. O artigo foi recentemente publicado no XXXI Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC 2013). A seguir, um resumo do trabalho:

No universo de Gerência de Recursos existe uma atividade estratégica de planejamento denominada de Planejamento de Capacidade. Esta atividade considera previsões de uma carga de trabalho futura de modo a estimar a quantidade de recursos computacionais que é necessária para atender esta demanda. De acordo com a duração do intervalo de tempo que se está planejando o artigo considera dois tipos de planejamento de capacidade: um planejamento de curto prazo (também denominado de Provisão Dinâmica de Recursos) busca estimar a quantidade de recursos computacionais (ou instâncias de máquinas virtuais) necessária em um curto intervalo de tempo (e.g. uma hora); um planejamento de longo prazo busca estimar a quantidade de recursos computacionais necessária em um longo intervalo de tempo (e.g. um ano). 

O planejamento de capacidade no ambiente de Computação na Nuvem se faz necessário uma vez que provedores de Infraestrutura como Serviço (i.e. provedores de IaaS) oferecem instâncias de máquinas virtuais em diferentes mercados, dos quais consideramos dois: o mercado sob demanda, no qual instâncias podem ser obtidas no momento em que forem necessárias sem uma garantia de que o pedido por estas instâncias será atendido; o mercado de reserva, no qual instâncias podem ser reservadas com antecedência (e.g., 1 ou 3 anos) e com uma garantia por parte do provedor de IaaS que tais instâncias estarão disponíveis sempre que forem requisitadas. Com a existência do mercado de reserva o planejamento de capacidade a longo prazo é responsável por determinar a quantidade de instâncias que devem ser reservadas.

Nós consideramos o cenário no qual um provedor de Software como Serviço (SaaS) monta sua infraestrutura computacional adquirindo instâncias de máquinas virtuais junto a provedores de Infraestrutura como Serviço. Neste cenário, avaliamos duas heurísticas de planejamento de capacidade a longo prazo considerando o impacto que cada uma destas heurísticas tem no lucro de um provedor de SaaS. A busca pela melhor heurística de planejamento, bem como o aperfeiçoamento das heurísticas avaliadas, fazem parte das próximas etapas do trabalho. As duas heurísticas avaliadas foram:

  • Heurística baseada em Rede de Filas (RF) - esta heurística faz uso de conceitos de Teoria das Filas (e.g., taxa média de chegada, tempo médio de serviço) para estimar a quantidade de instâncias necessária para processar a carga de trabalho estimada. De posse da quantidade de instâncias estimada, RF avalia qual reserva de recursos fornece o maior lucro para o provedor de SaaS e implementa esta reserva.
  • Heurística baseada em Taxa de Utilização (UT) - esta heurística simula a execução da carga de trabalho estimada utilizando apenas recursos obtidos no mercado sob demanda. Após a simulação, UT calcula a taxa de utilização de cada instância utilizada na simulação e considera que as instâncias que apresentaram uma taxa de utilização superior ao limiar definido pelos preços das instâncias no provedor de IaaS deveriam ter sido reservadas.


As heurísticas acima foram avaliadas através de simulações e foram comparadas com três estratégias de referência: uma estratégia que não realiza reserva de recursos (ON), utilizando apenas recursos do mercado sob demanda; uma estratégia que realiza superprovisionamento da infraestrutura (SUPER); uma estratégia ótima (OP) que conhece o futuro e implanta o melhor plano de reserva possível.

Avaliando os resultados dos testes estatísticos realizados podemos concluir (com um nível de 95% de confiança) que as heurísticas RF e UT fazem com que o provedor de SaaS obtenha um lucro maior do que o lucro que seria obtido usando as estratégias ON e SUPER. A Figura 1 nos apresenta a variação no lucro do provedor de SaaS (métrica denominada de ganho em nosso trabalho) ao utilizar as heurísticas/estratégias RF, UT e SUPER em relação à estratégia ON .




Inicialmente percebemos que superprovisionar a infraestrutura reduziu consideravelmente o lucro do provedor de SaaS, logo seria mais vantajoso para o provedor não ter realizado um planejamento de longo prazo. Para as heurísticas RF e UT, apesar do ganho apresentar valores baixos (em torno de 7% para RF no melhor cenário) é importante destacar que financeiramente este valor é mais significativo quão maior for a receita do provedor de SaaS. Além disso, a estratégia OP apresenta um ganho em torno de 11%, demonstrando que existe margem para melhoria e aperfeiçoamento das heurísticas avaliadas no artigo. 

Realizamos, ainda, uma análise de sensibilidade com o fator denominado de erro de predição, que indica um erro na estimativa da quantidade de clientes de SaaS que compõe a carga de trabalho. Foram utilizados 7 níveis para este fator e analisando os resultados apresentados na Figura 2 percebemos que:




  • Quando a quantidade de clientes de SaaS é subestimada (e.g., a carga real possui 100 clientes e a carga prevista possui 80) a heurística UT apresenta os melhores resultados. 
  • Quando a quantidade de clientes de SaaS é superestimada (e.g., a carga real possui 100 clientes e a carga prevista possui 120) a heurística RF apresenta os melhores resultados.


Logo, as principais conclusões deste trabalho para o escopo avaliado foram:

  1. Não se deve superprovisionar uma infraestrutura de TI dado que o superprovisionamento pode ser mais deficitário que não realizar um planejamento de capacidade a longo prazo. Além disso, heurísticas cujas tomadas de decisão são relativamente simples permitem ganhos em torno de 3.77% para RF e de 3.19% para UT.
  2. O erro de predição da carga de trabalho influencia fortemente os ganhos que podem ser obtidos ao se utilizar uma das heurísticas de planejamento de capacidade avaliadas. Além disso, o erro de predição influencia na escolha de qual a melhor heurística a ser utilizada.



Autoflex: Service Agnostic Auto-scaling Framework for IaaS Deployment Models


Este trabalho é resultado da pesquisa de mestrado realizada por Fábio Morais, decorrente de uma cooperação entre o Laboratório de Sistemas Distribuídos (LSD) da UFCG e a Hewlett-Packard (HP). Essa pesquisa contou com a parcipação de Fábio Morais, Francisco Brasileiro, Raquel Lopes, Ricardo Santos (representantes do LSD), Wade Satterfield (HP Fort Collins) e Leandro Rosa (HP Brasil). Uma versão resumida desse trabalho de mestrado foi publicada no 13th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid 2013), realizado na cidade de Delft, Holanda.

Figura 1. Variação de carga de utilização no tempo.

O trabalho concentra-se no cenário atual do paradigma de Computação na Nuvem, que corresponde, em essência, na provisão de Tecnologia da Informação (TI) como serviço. Esse paradigma carrega consigo o conceito de elasticidade, que consiste na provisão de recursos computacionais sob demanda. A elasticidade é uma das principais propriedades usadas na redução de custos derivados da execução de serviços em ambientes de Infraestrutura como Serviço (IaaS). No entanto, essa propriedade só pode ser inteiramente explorada se os clientes dos serviços de IaaS forem capazes de estimar futuras demandas de suas aplicações no curto prazo, de forma que apenas a infraestrutura necessária para manter as aplicações seja requisitada a cada instante de tempo. Deste modo, os acordos de nível de serviço (SLAs) firmados entre o cliente do serviço de IaaS e os usuários de suas aplicações são sempre honrados e o super provisionamento é evitado. No entanto, para aplicações que apresentam grandes variações de carga de utilização essa atividade de provisionamento torna-se uma tarefa não trivial. Um exemplo de aplicação com intensa variação de carga pode ser observado na Figura 1.


Figura 2. Abordagem de provisionamento reativo.

A técnica de provisionamento automático consiste no processo de modificar automaticamente a quantidade de recursos disponíveis para manter e executar uma aplicação em um ambiente de IaaS, dependendo da demanda da aplicação. O mercado de Computação na Nuvem apresenta soluções de provisionamento automático que utilizam abordagens reativas, que em geral não conseguem evitar violações de SLO e que  por consequência são insuficientes para minimizar os custos de quebras de SLA, embora possam reduzir os custos do super provisionamento. Um exemplo do comportamento do provisionamento reativo pode ser observado na Figura 2. Para reduzir os custos devido a violações de SLA são necessárias abordagens proativas.

O trabalho desenvolvido propõe um framework para provisionamento automático de recursos não intrusivo, ou seja, que não necessita de informações específicas da aplicação, apenas informações de utilização de recursos no nível de máquina virtual. O framework realiza o provisionamento a partir das abordagens reativa e proativa, baseadas no uso de um conjunto configurável de preditores de demandas dos serviços, além de usar um mecanismo de seleção que decide, periodicamente, o melhor preditor a ser usado. Também é proposta uma nova maneira de corrigir predições subestimadas, reduzindo por consequência o número de violações de SLO.

O framework proposto foi avaliado através de simulações baseadas em traces de utilização de aplicações em produção de clientes da HP. Os resultados evidenciam o trade-off entre redução de custo e garantias de qualidade de serviço (QoS), uma vez que a configuração do framework pode priorizar redução de custo ou manutenção de QoS. Esse trade-off pode ser observado em maiores detalhes na Figura 3. Através de configurações mais conservadoras (C8) foi possível obter uma economia de até 37% em relação ao cenário super provido, enquanto a probabilidade de quebra de SLO é mantida em média em 0,008% e limitada superiormente a 0,036%. 

Figura 3. Trade-off entre redução de custo e garantias de QoS.

Além do mais, a flexibilidade do framework permite que, através da utilização de diferentes configurações, seja possível alcançar economias adicionais apenas com um pequeno aumento no número de violações de SLO.