Elasticidade em Computação na Nuvem: Uma Abordagem Sistemática - PDF
Elasticidade em Computação na Nuvem: Uma Abordagem Sistemática
Download "Elasticidade em Computação na Nuvem: Uma Abordagem Sistemática"
Nina Aline Brandt Vilarinho
1 Capítulo 5 Elasticidade em Computação na Nuvem: Uma Abordagem Sistemática Emanuel F. Coutinho, Flávio R. C. Sousa, Danielo G. Gomes e José N. de Souza Abstract Elasticity is a key feature of cloud computing. This feature is the ability to add or remove resources without interruptions and at runtime to handle the load change. However, it difficult to understand the requirements of a specific elastic application, their workload and mainly as a provider must manage resources to meet these requirements. There have been some work on characterization of elasticity in the cloud. Typically these studies are not conducted in a systematic way, and generally are little broad and their results are hard to replicate. Moreover, a systematic review allows to identify, evaluate and interpret relevant results for a given search topic, phenomenon of interest or research question. The objective of this short course to present the state of the art of elasticity. based on an adaptation of a classic systematic review. It will be highlight different aspects of elasticity, such as definitions, metrics and benchmarks for measuring and evaluating the elasticity, strategies for use, and finally challenges and trends in the construction of elastic solutions. Resumo A elasticidade é uma das principais características da Computação em Nuvem. Esta característica consiste na capacidade de adicionar ou remover recursos, sem interrupções e em tempo de execução para lidar com a variação da carga. Contudo, é difícil compreender os requisitos de elasticidade de uma aplicação específica, de sua carga de trabalho e principalmente como um provedor deve gerenciar os recursos para atender esses requisitos. Existem alguns estudos sobre as características de elasticidade na nuvem. Normalmente esses estudos não são realizados de uma maneira sistemática e, em geral, são pouco abrangentes e difíceis de reproduzir. Por outro lado, uma revisão sistemática permite identificar, avaliar e interpretar resultados relevantes de um determinado tópico de pesquisa, fenômeno de interesse ou questão de pesquisa. O objetivo deste minicurso é,
2 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 a partir de uma proposta de adaptação de uma revisão sistemática clássica, apresentar o estado da arte sobre elasticidade. Serão destacados diferentes aspectos da elasticidade, tais como definições, métricas e benchmarks para a medição e avaliação da elasticidade, estratégicas de utilização, e por fim, desafios e tendências na construção de soluções elásticas Introdução A Computação em Nuvem propõe a integração de diversos modelos tecnológicos para o provimento de infraestrutura de hardware, plataformas de desenvolvimento e aplicações na forma de serviços sob demanda com pagamento baseado em uso [Sá et al. 2011]. Neste novo paradigma de utilização de recursos computacionais, clientes abrem mão da administração de uma infraestrutura própria e dispõem de serviços oferecidos por terceiros, delegando responsabilidades e assumindo custos estritamente proporcionais à quantidade de recursos que utilizam. Os serviços em nuvem apresentam diversas vantagens para os usuários, tais como: previsibilidade e custos mais baixos, proporcionais à qualidade de serviço (QoS) e cargas de trabalho reais; complexidade técnica reduzida, graças à interfaces de acesso unificado e administração simplificada; e elasticidade e escalabilidade, proporcionando a percepção recursos quase infinitos. Por outro lado, o provedor tem que garantir a ilusão de recursos infinitos sob cargas de trabalho dinâmicas e minimizar os custos operacionais associados a cada usuário [Sousa et al. 2010]. Os ambientes em nuvem caracterizam-se por serem intrinsecamente distribuídos e compostos por recursos heterogêneos, além de servirem concomitantemente a uma grande diversidade de clientes com requisitos de QoS distintos [Sousa et al. 2011]. Adicionalmente, os datacenters que compõem uma nuvem devem suportar uma grande quantidade de aplicações, o que os obriga a lidar com demandas variantes por processamento, armazenamento de dados e utilização de banda. O gerenciamento do ambiente de nuvem possui algumas características peculiares que diferem de outros ambientes, dentre as quais pode-se destacar a intervenção humana limitada, carga de trabalho altamente variável e uma grande quantidade e variedade de recursos compartilhados. De acordo com as requisições dos usuários, estes recursos são expandidos ou reduzidos para manter a QoS [Sousa et al. 2010]. Apesar das limitações de rede e segurança, as soluções em nuvem devem fornecer um elevado desempenho, além de serem flexíveis para se adaptarem diante de uma determinada quantidade de requisições. Como, em geral, os ambientes de Computação em Nuvem possuem acesso público, torna-se imprevisível e variável a quantidade de requisições realizadas, dificultando fazer estimativas e fornecer garantias de QoS [Suleiman et al. 2012]. Essas garantias de qualidade são definidas entre o provedor do serviço e o usuário e expressas por meio de um acordo de nível de serviço (SLA) [Sousa and Machado 2012], que consiste de contratos que especificam um nível de desempenho que deve ser atendido e penalidades em caso de falha. A elasticidade é ponto chave para implementar serviços com QoS para nuvem, pois permite adicionar ou remover recursos, sem interrupções e em tempo de execução
3 Livro de Minicursos 217 para lidar com a variação da carga. De acordo com [Mell and Grance 2009], estes recursos podem ser adquiridos de forma rápida, em alguns casos automaticamente, caso haja a necessidade de escalar com o aumento da demanda, e liberados, na retração dessa demanda. Para os usuários, os recursos disponíveis para uso parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento. Contudo, a nuvem apresenta uma variabilidade de desempenho bastante elevada [Schad et al. 2010], principalmente devido à heterogeneidade de hardware, virtualização e compartilhamento de recursos, dificultando o desenvolvimento de soluções com QoS na nuvem. Além disso, é difícil estabelecer os requisitos de elasticidade de uma aplicação específica e de sua carga de trabalho. O provedor de serviços de nuvem não pode prever como os clientes irão utilizar seus serviços. Dessa forma, é essencial compreender as características da elasticidade na nuvem e sua relação com a qualidade dos serviços neste ambiente. Apesar de vários trabalhos de Computação em Nuvem explorarem o tema da elasticidade, como em [Suleiman et al. 2012], [Islam et al. 2012], [Sharma et al. 2011], [Costa et al. 2011], [Galante and de Bona 2012], o processo de análise do estado da arte para a seleção de trabalhos correlatos frequentemente carece de uma sistemática em sua realização, o que pode implicar em uma revisão da literatura pouco abrangente, com trabalhos relacionados de difícil reprodução e cuja seleção depende fortemente de quem a realiza. Assim, o desenvolvimento de uma abordagem sistemática de revisão auxilia no estabelecimento de um processo formal para este tipo de investigação. A revisão sistemática é um estudo conduzido de maneira a identificar, avaliar e interpretar resultados relevantes de um determinado tópico de pesquisa, fenômeno de interesse ou questão de pesquisa [Mafra and Travassos 2006]. Este minicurso tem como objetivo propor uma adaptação simplificada da revisão sistemática definida por [Kitchenham 2004] de maneira a identificar trabalhos relacionados à elasticidade em Computação em Nuvem. São destacados diferentes aspectos da elasticidade, tais como definições e o estado da arte da elasticidade em Computação em Nuvem. Para isso, é apresentada uma adaptação de uma revisão sistemática aplicada ao contexto de elasticidade em ambientes de Computação em Nuvem, destacando aspectos de análise de desempenho, métricas, estratégicas elásticas, benchmarks para a medição e avaliação da elasticidade, e desafios e tendências na construção de soluções elásticas. Este minicurso é teórico, com uma descrição detalhada de todas as etapas do planejamento do estudo e uma análise crítica acerca dos aspectos encontrados nos trabalhos resultantes desta busca criteriosa e sistemática, suas diferenças, interseções, problemas mais relevantes e em aberto relacionados à elasticidade em ambientes de computação em nuvem Computação em Nuvem A Computação em Nuvem está se tornando uma das palavras chaves da indústria de Tecnologia da Informação (TI). A nuvem é uma metáfora para a Internet ou infraestrutura de comunicação entre os componentes arquiteturais, baseada em uma abstração que oculta
4 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 à complexidade da infraestrutura. Cada parte desta infraestrutura é provida como um serviço os quais normalmente são alocados em centros de dados, utilizando hardware compartilhado para computação e armazenamento [Buyya et al. 2009]. A infraestrutura do ambiente de Computação em Nuvem normalmente é composta por um grande número, centenas ou milhares de máquinas físicas ou nós físicos de baixo custo, conectadas por meio de uma rede como ilustra a Figura 5.1. Cada máquina física tem as mesmas configurações de software, mas pode ter variação na capacidade de hardware em termos de CPU, memória e armazenamento em disco [Soror et al. 2010]. Dentro de cada máquina física existe um número variável de máquinas virtuais ou nós virtuais em execução, de acordo com a capacidade do hardware disponível na máquina física. Os dados são persistidos, geralmente, em sistemas de armazenamento distribuídos. Figura 5.1. Ambiente de Computação em Nuvem A Computação em Nuvem é uma evolução dos serviços e produtos de tecnologia da informação sob demanda, também chamada de Utility Computing [Brantner et al. 2008]. O objetivo da Utility Computing é fornecer componentes básicos como armazenamento, processamento e largura de banda de uma rede como uma mercadoria através de provedores especializados com um baixo custo por unidade utilizada. Usuários de serviços baseados em Utility Computing não precisam se preocupar com escalabilidade, pois a capacidade de armazenamento fornecida é praticamente infinita. A Utility Computing propõe fornecer disponibilidade total, isto é, os usuários podem ler e gravar dados a qualquer tempo, sem nunca serem bloqueados; os tempos de resposta são quase constantes e não dependem do número de usuários simultâneos, do tamanho do banco de dados ou de qualquer parâmetro do sistema. Os usuários não precisam se preocupar com backups, pois se os componentes falharem, o provedor é responsável por substituí-los e tornar os dados disponíveis em tempo hábil por meio de réplicas [Brantner et al. 2008]. Uma razão importante para a construção de novos serviços baseados em Utility Computing é que provedores de serviços que utilizam serviços de terceiros pagam apenas pelos recursos que recebem, ou seja, pagam pelo uso. Não são necessários grandes investimentos iniciais em TI e o custo cresce de forma linear e previsível com o uso. Dependendo do modelo do negócio, é possível que o provedor de serviços repasse o custo
5 Livro de Minicursos 219 de armazenagem, processamento e de rede para os usuários finais, já que é realizada a contabilização do uso. Existem diversas propostas para definir o paradigma da Computação em Nuvem [Vaquero et al. 2009]. O National Institute of Standards and Technology (NIST) argumenta que a Computação em Nuvem é um paradigma em evolução e apresenta a seguinte definição: Computação em nuvem é um modelo que possibilita acesso, de modo conveniente e sob demanda, a um conjunto de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) que podem ser rapidamente adquiridos e liberados com mínimo esforço gerencial ou interação com o provedor de serviços [Mell and Grance 2009]. Ainda segundo o NIST, a Computação em Nuvem é composta por cinco características essenciais, três modelos de serviço e quatro modelos de implantação, detalhados a seguir Características Essenciais As características essenciais são vantagens que as soluções de Computação em Nuvem oferecem. Algumas destas características, em conjunto, definem exclusivamente a Computação em Nuvem e fazem a distinção com outros paradigmas. Por exemplo, a elasticidade rápida de recursos, amplo acesso e a medição de serviço são características básicas para compor uma solução de Computação em Nuvem. Self-service sob demanda: O usuário pode adquirir unilateralmente recurso computacional, como tempo de processamento no servidor ou armazenamento na rede, na medida em que necessite e sem precisar de interação humana com os provedores de cada serviço. Amplo acesso: Recursos são disponibilizados por meio da rede e acessados através de mecanismos padronizados que possibilitam o uso por plataformas do tipo thin, tais como celulares, laptops e PDAs. Pooling de recursos: Os recursos computacionais do provedor são organizados em um pool para servir múltiplos usuários usando um modelo multi-tenant ou multiinquilino, com diferentes recursos físicos e virtuais, dinamicamente atribuídos e ajustados de acordo com a demanda dos usuários. Estes usuários não precisam ter conhecimento da localização física dos recursos computacionais, podendo somente especificar a localização em um nível mais alto de abstração, tais como o país, estado ou centro de dados. Elasticidade rápida: Recursos podem ser adquiridos de forma rápida e elástica, em alguns casos automaticamente, caso haja a necessidade de escalar com o aumento da demanda, e liberados, na retração dessa demanda. Para os usuários, os recursos disponíveis para uso parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento. Serviço medido: Sistemas em nuvem automaticamente controlam e otimizam o uso de recursos por meio de uma capacidade de medição. A automação é realizada em algum nível de abstração apropriado para o tipo de serviço, tais como armazenamento, processamento, largura de banda e contas de usuário ativas. O uso
6 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 de recursos pode ser monitorado e controlado, possibilitando transparência para o provedor e o usuário do serviço utilizado Modelos de Serviços O ambiente de Computação em Nuvem é composto de três modelos de serviços. Estes modelos são importantes, pois eles definem um padrão arquitetural para soluções de Computação em Nuvem, conforme descrito na Figura 5.2. Software como um Serviço (SaaS): O modelo de SaaS proporciona sistemas de software com propósitos específicos que são disponíveis para os usuários por meio da Internet e acessíveis a partir de vários dispositivos do usuário por meio de uma interface thin client como um navegador Web. No SaaS, o usuário não administra ou controla a infraestrutura subjacente, incluindo rede, servidores, sistema operacional, armazenamento ou mesmo as características individuais da aplicação, exceto configurações específicas. Como exemplos de SaaS podemos destacar os serviços de Customer Relationship Management (CRM) da Salesforce e o Google Drive. Plataforma como um Serviço (PaaS): O modelo de PaaS fornece sistema operacional, linguagens de programação e ambientes de desenvolvimento para as aplicações, auxiliando a implementação de sistemas de software. Assim como no SaaS, o usuário não administra ou controla a infraestrutura subjacente, mas tem controle sobre as aplicações implantadas e, possivelmente, as configurações de aplicações hospedadas nesta infraestrutura. Google App Engine [Ciurana 2009] e Microsoft Azure [Azure 2012] são exemplos de PaaS. Infraestrutura como um Serviço (IaaS): A IaaS torna mais fácil e acessível o fornecimento de recursos, tais como servidores, rede, armazenamento e outros recursos de computação fundamentais para construir um ambiente de aplicação sob demanda, que podem incluir sistemas operacionais e aplicativos. Em geral, o usuário não administra ou controla a infraestrutura da nuvem, mas tem controle sobre os sistemas operacionais, armazenamento, aplicativos implantados e, eventualmente, seleciona componentes de rede, tais como firewalls. O Amazon Elastic Cloud Computing (EC2) [Robinson 2008] e o Eucalyptus [Liu et al. 2007] são exemplos de IaaS Modelos de Implantação Quanto ao acesso e à disponibilidade, há diferentes tipos de modelos de implantação para os ambientes de Computação em Nuvem. A restrição ou abertura de acesso depende do processo de negócios, do tipo de informação e do nível de visão desejado, conforme descrito a seguir: Nuvem privada: a infraestrutura de nuvem é utilizada exclusivamente por uma organização, sendo esta nuvem local ou remota e administrada pela própria empresa ou por terceiros.
7 Livro de Minicursos 221 Figura 5.2. Modelo de serviço da Computação em Nuvem (baseado em [Verdi et al. 2010]). Nuvem pública: a infraestrutura de nuvem é disponibilizada para o público em geral, sendo acessado por qualquer usuário que conheça a localização do serviço. Nuvem comunidade: fornece uma infraestrutura compartilhada por uma comunidade de organizações com interesses em comum. Nuvem híbrida: a infraestrutura é uma composição de duas ou mais nuvens, que podem ser do tipo privada, pública ou comunidade e que continuam a ser entidades únicas, mas conectadas por meio de tecnologia proprietária ou padronizada que permite a portabilidade de dados e aplicações Análise de Desempenho Muitos trabalhos executam atividades para avaliar o desempenho de diversos aspectos, tais como um ambiente, uma aplicação, uma política, um algoritmo, entre outros. Em Computação em Nuvem não é diferente, pois diversas áreas são objetivo de análises. No ambiente de Computação em Nuvem, a análise de desempenho pode ser utilizada para compreender a QoS e possibilitar o ajuste da elasticidade por meio de políticas de alocação de recursos. Será descrita nessa seção alguns conceitos sobre análise de desempenho comumente utilizados em trabalhos científicos. Análise de desempenho envolve coleta de dados formais e informais para ajudar os clientes e patrocinadores definir e alcançar seus objetivos. Apresenta várias perspectivas sobre um problema ou oportunidade, determinando o direcionamento para barreiras ou desempenho bem sucedido, e propor um sistema de solução com base no que é descoberto. Inclui: medição, modelagem, estatística, projeto experimental, simulação, teoria das filas, etc. Em geral são identificados três aspectos:
8 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 Sistema: Qualquer conjunto de hardware, software e firmware Métricas: Critérios utilizados para avaliar o desempenho do sistema ou componentes Cargas de trabalho: Requisições realizadas pelos usuários do sistema É possível realizar diversas atividades com análise de desempenho, tais como especificar requisitos do desempenho, avaliar alternativas do projeto, comparar dois ou mais sistemas determinar o valor ótimo de um parâmetro (ajuste do sistema), encontrar gargalos de desempenho caracterizar a carga de trabalho no sistema, determinação o número e tamanho dos componentes (capacidade planejamento) e predizer o desempenho de futuras cargas. Raj Jain [Jain 1991] realiza um estudo detalhado sobre análise de desempenho. Neste estudo, uma abordagem para avaliação de desempenho é descrita: Defina metas e o sistema Liste os serviços e seus resultados Selecione métricas Liste parâmetros Selecione fatores para estudo Selecione técnica de avaliação Selecione carga de trabalho Projete os experimentos Analise e interprete os dados Apresente os resultados Contudo, não existe a noção de plano de ação conforme os resultados vão sendo coletados e interpretados, e nem há a idéia do ciclo de vida da análise de desempenho. Além disso, Raj Jain aborda predominantemente o projeto do experimento e a intrepretação dos dados. Segundo Douglas Montgomery [Montgomery 2009], um experimento é um teste ou uma série de testes nas quais mudanças intencionais são realizadas para que variáveis de entrada de um processo ou sistema possam ser observadas e identificar as razões para mudanças que podem ser observadas nas respostas de saída. Em geral experimentos são utilizados para estudar o desempenho de processos e sistemas, e estes podem ser representados pelo modelo da figura 5.3. Geralmente um processo é visualizado como uma combinação de máquinas, métodos, pessoas e outros recursos que transformam alguma entrada em alguma saída que possui uma ou mais respostas observáveis. Algumas das variáveis desse sistema são controláveis enquanto que outras não. Os objetivos de um experimento podem incluir o seguinte:
9 Livro de Minicursos 223 Determinação de quais variáveis influenciam mais na resposta Determinação de onde configurar a variável que mais influencia de maneira que a resposta seja quase sempre próxima ao resultado desejado Determinação de onde configurar a variável que mais influencia de modo que a variação na resposta seja pequena Determinação de onde configurar a variável que mais influencia de modo que os efeitos das variáveis não controladas sejam minimizados Figura 5.3. Modelo genérico de um processo ou sistema. Fonte: Adaptado de [Montgomery 2009]. Em geral, a abordagem de planejar e conduzir o experimento é chamado de estratégia de experimentação. Projeto experimental é uma importante ferramenta para melhorar o desempenho de processos e sistemas, assim como no desenvolvimento de novas aplicações. A aplicação de técnicas de projeto experimental cedo pode resultar em: rendimento do processo ou sistema melhorado, variabilidade reduzida e conformidade próximos com requisitos ou metas, tempo de desenvolvimento reduzido e redução dos custos globais. Métodos de projeto experimental também ajudam na tomada de decisão, como por exemplo: avaliação e comparação de configurações, avaliação de alternativas, seleção de parâmetros de projeto onde um produto trabalha bem sob uma grande variedade de condições, e determinação de parâmetros de projeto chave que impactam no desempenho do produto. O projeto estatístico de experimentos se refere ao processo de planejamento de maneira que os dados possam ser apropriadamente analisados por métodos estatísticos, resultando em conclusões objetivas e válidas. Montgomery descreve algumas orientações para o projeto de experimentos: Reconhecimento e declaração do problema Escolha dos fatores, níveis e intervalos Seleção das variáveis de resposta
10 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 Escolha do projeto experimental Realização do experimento Análise estatística dos dados Conclusões e recomendações Em [Menasce et al. 2004] são descritas quais métricas podem ser agrupadas da seguinte maneira: tempo de resposta (tempo que o sistema leva para reagir a uma requisição humana, geralmente medido em segundos), throughput (taxa nas quais requisições são completadas a partir de um sistema computacional, e medido em operações por unidade de tempo), disponibilidade (fração de tempo que um sistema está ativo e disponível para clientes), confiabilidade (probabilidade de que o sistema funcione adequadamente e continuamente sobre um período fixo de tempo), segurança (combinação de confidencialidade, integridade de dados e não repudiação), escalabilidade (um sistema é dito escalável quando seu desempenho não se degrada significantemente com o aumento dos usuários ou carga), e extensibilidade (propriedade do sistema de evolução para lidar com os novos requisitos funcionais e de desempenho). [Jain 1991] também agrupa as métricas de maneira semelhante, porém mais simplificada: tempo de resposta, throughput, utilização (fração de tempo que o recurso está ocupado atendendo requisições), confiabilidade, disponibilidade (downtime e uptime), aquisição de sistemas (custo e custo/desempenho). Algumas métricas são compartilhadas entre diferentes grupos, dependendo do contexto de utilização, por exemplo: tempo de alocação/desalocação de recursos é um tempo mas é também uma métrica de escalabilidade Elasticidade Uma das principais razões para a utilização da Computação em Nuvem é a sua capacidade de aquisição de recursos de uma maneira dinâmica. Do ponto de vista do consumidor, a nuvem parece ser infinita pois ele pode adquirir mais ou menos poder computacional conforme for necessário para suas aplicações. Entretanto, é difícil compreender os requisitos de elasticidade de uma aplicação específica e de sua carga de trabalho, e a elasticidade provida por um provedor de Computação em Nuvem deve atender a esses requisitos, pois o provedor de serviços de nuvem não pode prever como os clientes irão utilizar o serviço. Segundo o NIST, o conceito de elasticidade é a capacidade de rápido provisionamento e desprovisionamento, com capacidade de recursos virtuais praticamente infinita e quantidade adquirível sem restrição a qualquer momento [Mell and Grance 2009]. Elasticidade e escalabilidade são termos que se confundem. Enquanto a escalabilidade tem relação com a capacidade do sistema ser expandido quando necessário, a elasticidade pressupõe a capacidade dos recursos se ajustarem à carga necessária (tanto o aumento quanto a diminuição deles) [Geotecnologias 2012]. Segundo [Taurion 2012], elasticidade é a capacidade do ambiente computacional da nuvem aumentar ou diminuir de forma automática os recursos computacionais demandados e provisionados para cada usuário. É a escalabilidade em duas direções: tanto
11 Livro de Minicursos 225 cresce quanto diminui a capacidade ofertada. Ao longo da pesquisa diversas definições de elasticidade foram identificadas, conforme Tabela 5.1. Tabela 5.1. Definições de elasticidade identificadas durante a revisão Autor [Cooper et al. 2010] [Fito et al. 2010] [Aisopos et al. 2011] [Espadas et al. 2011] [Garg et al. 2011] [Garg et al. 2012] [Li et al. 2011a] [Perez-Sorrosal et al. 2011] [Han et al. 2012] [Islam et al. 2012] [Pandey et al. 2012] Definição de Elasticidade Capacidade de adicionar novas instâncias e distribuir a carga de trabalho para estas instâncias. Habilidade de adquirir e liberar recursos de granularidades variadas de acordo com a carga da trabalho em um curto intervalo de tempo. Capacidade do provedor alterar dinamicamente a quantidade de recursos de CPU, memória e espaço em disco para uma determinada tarefa. Habilidade de criar um número variável de instâncias de máquinas virtuais que dependem da demanda da aplicação. Capacidade de um serviço escalar durante períodos de pico caracterizada pelo tempo médio para expandir ou contrair a capacidade do serviço e capacidade máxima do serviço. Habilidade do sistema de se adaptar à mudanças repentinas na carga de trabalho. Capacidade de aumentar e diminuir a quantidade de réplicas sem interromper o processamento em andamento. Habilidade de escalar recursos de maneira adaptável para cima e para baixo para atender à variação da demanda das aplicações. Capacidade de provisionar recursos automaticamente e rapidamente. Habilidade de um sistema expandir e contrair sem problemas. Com base nestas definições, este trabalho propõe a seguinte definição para elasticidade Capacidade de adicionar e remover recursos de forma automática de acordo com a carga de trabalho sem interrupções e utilizando os recursos de forma otimizada.. Para implementar a elasticidade, as principais formas utilizadas são técnicas de replicação e redimensionamento de recursos [Sharma et al. 2011]. Replicação de recursos: Técnicas de replicação são usadas para melhorar a disponibilidade, o desempenho e a escalabilidade em diversos ambientes. Assim, a replicação pode ser utilizada para implementar a elasticidade do ajuste automaticamente da quantidade de número de réplicas para a carga de trabalho atual [Sousa and Machado 2012]. Elasticidade é alcançada por meio de auto provisionamento, que adiciona novas réplicas se o sistema não consegue lidar com a carga de trabalho atual ou remove réplicas desnecessárias.
12 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 Redimensionamento de recursos: O redimensionamento permite a ajuste da quantidade de recursos de acordo com a carga de trabalho. Por exemplo, pode-se incrementar ou decrementar a quantidade de CPU nas máquinas virtuais de forma automática, garantindo a qualidade e reduzindo os custos [Rego et al. 2011]. A elasticidade é vista de forma diferente pelo consumidor de serviços da nuvem e pelo provedor destes serviços. O usuário ou consumidor de serviços da nuvem não olha o interior das tecnologias da nuvem, mas apenas visualiza a sua interface. Ele interage com uma nuvem apenas pelo portal de acesso no qual solicita provisionamento e alocação dos recursos computacionais, e os detalhes técnicos ficam escondidos. Já o provedor precisa colocar em operação toda a tecnologia necessária para que a elasticidade aconteça. Em nuvens privadas, a empresa precisa adquirir e implementar os recursos computacionais que serão alocados através do modelo da nuvem para os seus usuários. A elasticidade é sentida apenas no nivel dos usuários internos da nuvem privada, mas não no datacenter, que precisa ainda investir em capital, como servidores e sistemas operacionais. De qualquer forma esta infraestrutura dinâmica permitida pela nuvem privada é um grande benefício quando comparado ao modelo tradicional de gestão de recursos computacionais, como realizado hoje pelos datacenters. Uma gestão dinâmica de recursos diminui em muito a ociosidade média dos servidores (em torno de 85%) e acelera a velocidade com que estes recursos são provisionados para seus usuários [Taurion 2012] Adaptação da Revisão Sistemática Neste trabalho, uma adaptação de uma revisão sistemática é proposta como uma maneira simplificada de realizar estudos em uma determinada área de pesquisa, com a descrição de suas atividades e a dinâmica do funcionamento. Para o estudo de trabalhos relacionados e revisão bibliográfica, foi adotada uma sistemática de revisão. Essa sistemática consiste na criação de consultas em bibliotecas digitais nas quais é possível criar consultas mais detalhadas. Assim, foi elaborada uma revisão sistemática para relacionar os trabalhos que utilizaram elasticidade em ambientes de Computação em Nuvem, com foco em análise de desempenho. A revisão sistemática é uma estratégia para a identificação, avaliação e interpretação das pesquisas relevantes disponíveis para uma questão de pesquisa ou algum interesse em particular [Kitchenham 2004]. Por meio da utilização de um processo controlado e formal de pesquisa bibliográfica, espera-se que os resultados retornem os tópicos mais pesquisados, lacunas, desafios, processos, ferramentas e técnicas. Para a execução da revisão foi utilizado como base o guia para revisão sistemática de [Kitchenham 2004] com algumas adaptações. Uma ferramenta que apóia o desenvolvimento de revisões sistemáticas pode ser encontrada em [LaPES 2013], onde é possível realizar o download da ferramenta StArt. A Figura 5.4 exibe essa adaptação utilizada neste trabalho Atividade 1: Planejar Revisão Descreve as atividades necessárias para o planejamento da revisão. Identificar Necessidade da Revisão
13 Livro de Minicursos 227 Figura 5.4. Fluxo do protocolo da revisão. Fonte: Adaptado de [Kitchenham 2004]. Elasticidade é comumente citada como uma das vantagens da Computação em Nuvem, porém não é fácil encontrar trabalhos que se aprofundem no assunto. Desenvolver Protocolo da Revisão O protocolo de revisão está descrito a seguir em sete subatividades: (i) Definir Questões de Pesquisa Após a leitura dos artigos selecionados, esta revisão sistemática teve como objetivo responder às seguintes questões: Questão Principal (QP) Qual o estado da arte sobre elasticidade em ambientes de
14 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 Computação em Nuvem? Questão Secundária 1 (QS1) Como está sendo realizado análise de desempenho para elasticidade em ambientes de Computação em Nuvem? Questão Secundária 2 (QS2) Quais ferramentas, benchmarks ou cargas de trabalho são utilizados para avaliar a elasticidade de ambientes de Computação em Nuvem? Questão Secundária 3 (QS3) Quais métricas são mais utilizadas para avaliar a elasticidade de ambientes de Computação em Nuvem? Questão Secundária 4 (QS4) Quais as tendências de pesquisa em Computação em Nuvem do ponto de vista de elasticidade? (ii) Definir String de Busca Em todas as consultas foram utilizadas as seguintes palavras chave: "cloud computing", elasticity, "performance analysis", "performance evaluation", metric, benchmark e tool. Após alguns refinamentos, a seguinte string de busca foi gerada: ("cloud computing") AND ("elasticity") AND ("performance analysis" OR "performance evaluation") AND ("metric" OR "benchmark" OR "tool"). (iii) Definir Fontes de Pesquisa Para esta revisão, os artigos foram pesquisados nos indexadores Science Direct [ScienceDirect 2012], ACM Digital Library [ACM 2012] e IEEExplorer [IEEE 2012]. (iv) Definir Procedimento de Busca nas Fontes A mesma string de busca foi utilizada nos três indexadores por meio do mecanismo de busca avançada existente em cada um. (v) Definir Critérios de Inclusão e Exclusão Algumas restrições foram utilizadas para limitar a busca. Foram pesquisados trabalhos do tipo periódico ou conferência e os trabalhos deveriam ter sido publicados entre os anos de 2009 a A palavra chave elasticity deve constar no trabalho, já que todos os trabalhos estão em inglês. Novamente, os trabalhos selecionados e não selecionados são verificados para se garantir que nenhum trabalho tenha sido incluído ou excluído erroneamente. (vi) Definir Procedimento de Seleção Etapa 1: A estratégia de busca é aplicada nas fontes. Etapa 2: Para selecionar um conjunto inicial de estudos, os títulos e resumos de todos os artigos obtidos foram lidos e confrontados com os critérios de inclusão e exclusão. Etapa 3: Todos os artigos selecionados na etapa 2 foram lidos por completo e novamente confrontados com os critérios do item (v). Os artigos incluídos são documentados e encaminhados para extração dos dados. (vii) Definir Procedimento de Extração dos Dados
15 Livro de Minicursos 229 A extração das informações dos artigos foi realizada com base em um formulário com perguntas direcionadas a obter respostas para as questões de pesquisa da revisão. O formulário consistia de uma planilha com os seguintes itens a serem preenchidos para cada trabalho lido: título, ano de publicação, veículo de publicação, autores, país, grupo, palavras chave, proposta, observações, tipo de análise, métricas, métricas para elasticidade, carga de trabalho, ferramentas, trabalhos futuros e reprodução Atividade 2: Condução da Revisão A condução da revisão consistiu de quatro subatividades, descritas a seguir: Identificar Estudos Primários A coleta de informações desta revisão sistemática ocorreu no mês de julho de A execução das demais atividades ocorreram no segundo semestre de Como resultado obtido, na Science Direct foram encontrados 24 trabalhos, na ACM Digital Library 32 e no o IEEExplorer 88 trabalhos, totalizando 144 trabalhos. Selecionar Estudos Primários Para um refinamento dos resultados, como critério de inclusão os resumos dos 144 trabalhos foram lidos para que fosse confirmado se eles realmente estavam alinhados com o tema, e se de alguma forma o termo elasticidade era utilizado no trabalho, restando 48 trabalhos divididos em 15 do Science Direct, 14 da ACM Digital Library e 19 do IEEExplorer. Avaliar da Qualidade dos Estudos A avaliação da qualidade dos artigos dos estudos primários foi feita de forma simplificada verificando apenas a presença ou não de alguma forma de aplicação do conceito elasticidade em Computação em Nuvem, ou métricas e ferramentas específicas para elasticidade. Extrair Dados Uma vez definido o conjunto dos trabalhos selecionados para leitura completa, efetuou-se o processo de extração dos dados conforme planejado no item de procedimento de extração de dados. Para isto uma planilha para cada artigo foi preenchida com as informações definidas no item "Definir Procedimento de Extração dos Dados". Esta atividade durou aproximadamente quatro meses para ser concluída.
16 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC Atividade 3: Resultados da Revisão Apresenta os resultados da revisão de maneira geral e para cada questão planejada. Apresentar Visão Geral dos Estudos Após a leitura dos artigos selecionados, os resultados foram consolidados conforme o planejamento. Algumas informações foram identificadas antes da consolidação das questões pesquisadas. Estas informações permitiram obter uma visão geral sobre os estudos de elasticidade em Computação em Nuvem. A Tabela 5.2 exibe os valores para cada ano, considerando tanto periódicos quanto em conferências. O ano de publicação considerado foi o que estava registrado no próprio trabalho como data de publicação. O período considerado foram os anos de 2009 a No momento da obtenção dos artigos, alguns trabalhos ainda estavam na situação de "in press". É provável que ao longo deste trabalho estes artigos já tenham sido publicados. Pode-se perceber que houve um acréscimo nas publicações no ano de Talvez esse aumento tenha ocorrido devido ao fato que muitos grupos de trabalho finalizaram suas pesquisas em Computação em Nuvem, mostrando os primeiros resultados. Em 2012 há apenas 11 trabalhos publicados, porém esse número deve aumentar em consequencia da publicação dos trabalhos in press, e considerando que os artigos foram selecionados em meados do ano de 2012, provavelmente haverão mais trabalhos no restante do ano. Tabela 5.2. Quantidade de trabalhos publicados por ano de publicação Ano Quantidade in press 7 A maioria dos trabalhos foram originados do periódico Future Generation Computer Systems 1, fator de impacto igual a e Qualis A2 em Ciência da Computação, com 12 publicações. Estas publicações são recentes, tendo em vista que a maioria de seus trabalhos são de 2012 (4) e 7 deles estão com o estado de in press. Muitas conferências estão começando a publicar trabalhos em nuvem nos últimos anos e a tendência é que apareçam mais conferências específicas. Os veículos de publicação retornados pela pesquisa foram bem diversificados. A exceção do Future Generation Computer Systems, os demais veículos obtiveram uma ou duas publicações. A Tabela 5.3 exibe apenas os veículos com pelo menos duas publicações. A contabilização dos países foi realizada da seguinte forma: para cada país de cada grupo de pesquisa em uma publicação, seria incrementada a quantidade de publicação do país. Portanto, alguns artigos contabilizaram mais de um país. A Figura 5.5 apresenta as publicações por país. Três países se destacaram nas publicações relacionadas à elasticidade em Computação em Nuvem: Austrália (9), Espanha (9) e Estados Unidos (10). 1
17 Livro de Minicursos 231 Tabela 5.3. Quantidade de publicações por veículo de publicação Ano Quantidade Qualis Future Generation Computer Systems 12 A2 IEEE International Conference on Utility and Cloud Computing 2 - IEEE International Parallel & Distributed Processing Symposium 2 A1 IEEE International Symposium on Service Oriented System 2 B2 Engineering International Conference on Cloud Computing 2 B2 International Conference on Parallel Processing 2 A2 Apesar dos Estados Unidos possuírem mais publicações, estas foram de diferentes grupos de pesquisas e associadas a empresas. Ao todo foram identificados 71 grupos de pesquisas distribuídos entre 17 países. Os grupos que apresentaram mais publicações relacionadas à pesquisa foram Austrália (5) e Espanha (5), seguidos da China (3) e da Suécia (3), com destaque para os grupos Cloud Computing and Distributed Systems (CLOUDS) Laboratory 2 e Dept. Arquitectura de Computadores y Automática 3, que possuem muitas publicações devido a atuação em diversas áreas de pesquisa em Computação em Nuvem. Figura 5.5. Gráfico de publicações por país. A Figura 5.6 apresenta as publicações por autor. Coincidentemente os autores com maior quantidade de publicações são de grupos consolidados em pesquisa em Com
18 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 putação em Nuvem. Estes autores são de grupos da Austrália e Espanha. Seus trabalhos não se restringem somente à elasticidade, mas atuam em diversas linhas de pesquisa em Computação em Nuvem. Foram identificados 166 autores diferentes. Figura 5.6. Gráfico de publicações por autor. Apresentar Resultados das Questões O resultado e análise das questões de pesquisa estão descritos a seguir: Questão Principal (QP): Qual o estado da arte sobre elasticidade em ambientes de Computação em Nuvem? Em todos os trabalhos os termos elasticidade e análise de desempenho ocorreram. Alguns trabalhos desenvolveram experimentos especificamente para a elasticidade, enquanto que a maioria utilizou recursos de ambientes para a elasticidade ou propuseram soluções elásticas. De maneira geral, a maioria dos trabalhos em Computação em Nuvem relacionados à elasticidade englobaram os seguintes temas: Arquiteturas para Computação em Nuvem
19 Livro de Minicursos 233 Estratégias para alocação de recursos Ferramentas para proposíto geral Definição da tarifação de serviços na nuvem Aplicações de alto desempenho e web Ambientes diversificados (predominantemente Amazon) De maneira mais específica, algumas categorias de áreas pesquisa puderam ser identificadas nos trabalhos: Elasticidade: alguns trabalhos desenvolveram soluções elásticas baseadas em replicação [Sousa and Machado 2012] ou redimencionamento dos recursos de forma automática [Rego et al. 2011]. Alguns Métricas para medir a elasticidade foram propostas por [Islam et al. 2012] [Li et al. 2011a] [Calheiros et al. 2012]. Para avaliar a elasticidade, os experimentos realizados utilizaram cargas de trabalho variáveis [Tirado et al. 2011]. Alocação de recursos: estratégias e políticas para à alocação de recursos foram propostas, variando desde modelos matemáticos, análise dos recursos disponíveis, modelos multi-inquilinos e localização geográfica, dentre outros [Espadas et al. 2011], [Paniagua et al. 2011], [Bryant et al. 2011], [Li et al. 2011b], [Otto et al. 2012] e [Calheiros et al. 2011a]. Geralmente métricas estavam associadas às políticas, sejam para análise dos recursos, seja para tomada de decisão para a alocação. SLA: os trabalhos pesquisados utilizaram a elasticidade para garantir QoS. Alguns frameworks foram identificados para avaliação do SLA: YCSB [Cooper et al. 2010], OPTIMIS [Ferrer et al. 2012] e SMICloud [Garg et al. 2011] e [Garg et al. 2012]. Também foram associados a variações em cargas de trabalho distintas para analisar os efeitos sobre a manutenção do SLA. Tarifação: as pesquisas em tarifação de serviços na nuvem aparecem ainda de maneira muito variada, geralmente propostas de tarifação baseadas na utilização de recursos [Han et al. 2012]. Um ponto a ser considerado é a minimização dos custos por entre os modelos de serviços dos provedores de nuvem [He et al. 2010] e [Hong et al. 2012]. High Performance Computing (HPC): a computação de alto desempenho surgiu em vários trabalhos, tanto do ponto de vista de simplesmente executar aplicações de HPC na nuvem quanto ao desenvolvimento de metodologias [Mauch et al. 2012], [Lu et al. 2010] e [Zhai et al. 2011]. [Raveendran et al. 2011] utiliza aplicações Message Passing Interface (MPI) elásticas para um framework de nuvem. O trabalho [Moreno-Vozmediano et al. 2011] utiliza o acesso ubíquo de recursos na nuvem para implantar um cluster no topo de uma infraestrututra de nuvem para resolver aplicações do tipo Many-Task Computing (MTC).
20 o Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SBRC 2013 Computação Autonômica: muitos trabalhos indiretamente utilizaram recursos ou princípios de computação autonômica [Pandey et al. 2012], [Etchevers et al. 2011], [Ghanbari et al. 2011] e [Niu et al. 2012], tentando reduzir a intervenção humana. A utilização de agentes para coleta de informações, principalmente métricas associadas a algum recurso computacional do ambiente, para posterior tomada de decisão baseada em regras foi um recursos muitas vezes utilizado para promover elasticidade. Computação Móvel: a nuvem pode ser utilizada para melhorar o desempenho de dispositivos móveis através do processamento e armazenamento de maneira elástica na nuvem [Niehorster et al. 2011]. A Internet of Things (IoT) deve aumentar a interação entre a nuvem e os diversos dispositivos móveis [Paniagua et al. 2011] e [Flores et al. 2011]. Análise de Desempenho: avaliações de desempenho orientadas a cargas de trabalho em nuvens privadas e nuvens públicas foram alvos de algumas pesquisas em [Tudoran et al. 2012] e [Gao et al. 2011]. Arquitetura: abordagens para segurança [Li et al. 2012] e para o gerenciamento de máquinas virtuais [Montero et al. 2011] foram propostas. Muitos trabalhos utilizaram aspectos de integração entre ambientes, como GRID e nuvens. Alguns frameworks e arquiteturas foram propostas para gerenciar a tratar a alocação de recursos utilizando balanceadores de carga e brokers [Tordsson et al. 2012]. Em [Dawoud et al. 2011] foi proposta uma arquitetura de escalonamento para máquinas virtuais elásticas. Em [Etchevers et al. 2011] foi utilizado um modelo arquitetural de aplicação e protocolo de auto configuração que automatiza a distribuição de aplicações distribuídas legadas. [Lucas-Simarro et al. 2012] propuseram uma arquitetura que trabalha diferentes estratégias de escalonamento através de várias nuvens baseada em um critério de otimização, restrições do usuário e do ambiente. Questão Secundária 1 (QS1): Como está sendo realizado análise de desempenho para elasticidade em ambientes de Computação em Nuvem? Conforme as definições de [Jain 1991] para os tipos de experimentos, foram identificados três tipos para os artigos da pesquisa: experimentação, modelagem analítica e simulação, sendo que estes trabalhos podem ocorrer combinados. A Tabela 5.4 descreve o quantitativo dos tipos de experimentos por publicação. Dos 48 artigos pesquisados, dois eram do tipo survey e não possuiam nenhum experimento. Estes trabalhos não estão inclusos na Tabela 5.4. A maioria dos trabalhos faz algum tipo de experimentação, seja experimentação simples ou combinada com outra técnica. É comum que os experimentos em elasticidade em Computação em Nuvem ocorram na Amazon EC2. Diversos artigos fizeram os experimentos combinando tipos de experimentos. Isso implica em uma qualidade maior dos trabalhos, pois eles tornam-se mais completos e é possível a comparação entre trabalhos iguais mas com visões diferentes. Os trabalhos utilizaram o CloudSim [Calheiros et al. 2011b] ou utilizam traces de aplicações para realizar as simulações.