UNIVERSIDADE FEDERAL DO ABC CENTRO DE MATEMÁTICA, COMPUTAÇÃO E COGNIÇÃO PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DA INFORMAÇÃO RHODNEY ARTHUR MENNA BARRETO KONIG SIMÕES GERENCIAMENTO DE ELASTICIDADE EM COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO USANDO SMART GRID Santo André - SP Julho de 2013 RHODNEY ARTHUR MENNA BARRETO KONIG SIMÕES GERENCIAMENTO DE ELASTICIDADE EM COMPUTAÇÃO EM NUVEM: ESTUDO DE CASO USANDO SMART GRID Dissertação de mestrado apresentada ao Programa de Pós-Graduação em Engenharia da Informação, da Universidade Federal do ABC, como parte dos requisitos para a obtenção do título de Mestre em Engenharia da Informação. ORIENTADOR: Carlos Alberto Kamienski . Santo André – SP Julho de 2013 Ficha Catalográfica S593g Simões, Rhodney Arthur Menna Barreto konig GERENCIAMENTO DE ELASTICIDADE EM COMPUTAÇÃO EM NUVEM: estudo de caso usando SMART GRID / Rhodney Arthur Menna Barreto konig Simões. Santo André, S.P: UFABC, 2013. 80 f. : il. color. Orientador: Prof. Doutor Carlos Alberto Kamienski Dissertação (mestrado) – Universidade Federal do ABC (UFABC), Área de Engenharia da Informação, 2013. 1. 1. SMART GRID. 2. Computação em Nuvem. 3. Gerenciamento de Elasticidade. I. Título. II. KAMIENSKI, Carlos Alberto. CDU 004 CDD 004.36 Este exemplar foi revisado e alterado em relação à versão original, de acordo com as observações levantadas pela banca no dia da defesa, sob responsabilidade única do autor e com a anuência de seu orientador. Santo André, 18 de Outubro de 2013. Assinatura do autor: _____________________________________ Rhodney Arthur Menna Barreto Konig Simões Assinatura do orientador: _________________________________ Prof. Doutor Carlos Alberto Kamienski AGRADECIMENTOS Agradeço a Deus por ter me dado condições de lutar e alcançar os objetivos pretendidos. Agradeço aos meus Pais pelo apoio incondicional, o que me permiti vencer os obstáculos. Agradeço ao meu irmão, pelo incentivo e apoio em todos os momentos, mesmo distante. Agradeço aos professores de minha graduação, que através de seus ensinamentos, permitiu minha escalada profissional. Agradeço em especial aos professores Jarbas Alves Cavalcante e Stênio Flávio de Lacerda Fernandes pelo apoio no período em que estava me preparando para o mestrado. Agradeço ao meu orientador Carlos Alberto Kamienski, pela sua excelente orientação e por ampliar meus conhecimentos. Agradeço a todos que de alguma forma contribuíram na minha jornada. Agradeço por todas as coisas alegres e felizes que vivi. Agradeço também às dificuldades, estas que me ensinaram a ver o mundo e a vida de frente, e a transformar as agruras em vitórias. RESUMO Computação em nuvem oferece recursos computacionais aos seus clientes na forma de serviços, onde o provedor de nuvem cobra apenas o que o cliente usar, de maneira similar a serviços básicos de água, energia e telefone. O cliente de nuvem possui autonomia no gerenciamento do serviço contratado, com a possibilidade de configurá-lo para atender suas necessidades sem a intervenção direta do provedor. Uma das principais características da computação em nuvem para gerar flexibilidade ao usuário é a elasticidade, que possibilidade a alocação e liberação instantâneas de recursos diante do aumento e redução da demanda. Esse tipo de gerenciamento de recurso pode ser compreendido como uma forma de uso de computação autonômica, uma vez que a alocação dos recursos é alterada automaticamente. O Smart Grid é uma tecnologia para implantar uma Rede Elétrica Inteligente ainda em fase de estudo e especificação em todo o mundo que depende em alto grau de tecnologias de informação e comunicação. Embora sua implantação tenha um custo alto, existe um consenso de que suas vantagens superam o modelo de comercialização de energia elétrica existente hoje, principalmente os ganhos em sustentabilidade. Uma das propostas existentes hoje para reduzir o custo de implantação de Smart Grid é a utilização da infraestrutura de computação em nuvem. A nuvem computacional oferece várias características que combinam com os requisitos de Smart Grid, por ser escalável, elástica e tolerante a falhas. Este trabalho tem como objetivo avaliar a elasticidade de computação em nuvem com um estudo de caso em Smart Grid. Foi especificado, implementado e avaliado parcialmente um Sistema de Gerenciador Autonômico de Smart Grid, o SGAMS (Smart Grid Autonomic Management System). A avaliação foi realizada em nuvem privada e em nuvem híbrida que combina a nuvem privada com o serviço de nuvem pública. O ambiente de nuvem híbrida foi usado somente para atender os picos de demanda que superam os recursos da nuvem privada, usando a técnica de cloudburst. Ambas utilizaram o PlanetLab para gerar carga de trabalho assumindo o papel dos clientes de Smart Grid. As principais contribuições deste trabalho estão na avaliação da elasticidade em um ambiente de nuvem privada e na realização de cloudburst para a nuvem pública da Amazon AWS. Os resultados apontam que é possível manter tempos de resposta em níveis adequados para o cenário escolhido, tanto em nuvem pública quanto híbrida, dependendo da parametrização adotada no gerenciamento da elasticidade. Palavras-chave: SMART GRID. Computação em Nuvem. Gerenciamento de Elasticidade. ABSTRACT Cloud computing provides computing resources to its users as services, where cloud providers charge only what clients really use, similar to basic public services such as water, energy and telephone. Cloud clients have a good deal of autonomy for managing the services, being able to configure it as they prefer without the direct intervention of the provider. One of the key features that provide flexibility to cloud computing users is elasticity, which makes it possible instant resource allocation and deallocation as demand is increased and reduced. This model of resource management may be understood as a way of using autonomic computing, since resource allocation is changed automatically. Smart Grid is a technology aimed at deploying an Intelligent Power Grid that is still being studied and specified all over the world that is highly dependent on information and communication technologies. Even though the transition to the Smart Grid will be expensive, there is a consensus that it will bring many benefits that surmount the current electrical energy business model, mainly when it comes to sustainability. An alternative for deploying the needed computing resources for the Smart Grid with low cost is the use of cloud computing, due to some important features of the latter that match the needs of the former, such as scalability, elasticity and fault tolerance. This dissertation is aimed at evaluating the elasticity feature of cloud computing in a scenario inspired on Smart Grid. A Smart Grid Autonomic Management System (SGAMS) has been specified, implemented and partially evaluated. The evaluation was conducted in both a private and a hybrid cloud, where the latter combines private and public cloud services. A hybrid cloud environment was used for providing additional computing power whenever demand peaks could not be dealt with by the installed capacity of the private cloud, using the cloudburst technique. In both cloud models PlanetLab clients were used for generating workloads playing the role of Smart Grid clients. The main contributions of this work are results of performance evaluation of elasticity focused on understanding the existing tradeoffs in using a private cloud as well as directing the excessive demand to the Amazon AWS public cloud via cloudburst. Results show that it is possible to keep response times in adequate levels for the chosen scenario, both in the private and hybrid cloud, depending on the parameterization used for the elasticity management. Keywords: SMART GRID. Cloud Computing. Elasticity Management. LISTA DE FIGURAS Figura 1 – Níveis de computação em nuvem ........................................................................... 22 Figura 2 – Componentes do controlador Nimbus[26] .............................................................. 29 Figura 3 – Arquitetura do OpenNebula contextualizada em computação em nuvem [39]. ..... 30 Figura 4 – Arquitetura do OpenStack ....................................................................................... 31 Figura 5 – Tecnologias para virtualização ................................................................................ 34 Figura 6 – Arquitetura Xen Hipervisor..................................................................................... 36 Figura 7 – Modelo conceitual de Smart Grid [8]...................................................................... 39 Figura 8 – Modelo do SGAMS ................................................................................................ 41 Figura 9 – Estrutura do XML de controle do módulo de distribuição e geração ..................... 42 Figura 10 – Arquitetura do SGAMS sem cloudburst ............................................................... 47 Figura 11 – Arquitetura do SGAMS com cloudburst .............................................................. 48 Figura 12 – Experimento com limiares positivo e negativo 250 e 100 respectivamente e sem histerese. ............................................................................................................ 52-55 Figura 13 – Experimento com limiares positivo e negativo 400 e 125 respectivamente e sem histerese. ............................................................................................................ 54-56 Figura 14 – Experimento com limiares positivo e negativo 600 e 150 respectivamente e sem histerese. .................................................................................................................. 58 Figura 15 – Médias dos tempos de resposta e do número de máquinas virtuais existentes para os experimentos sem histerese. ................................................................................ 59 Figura 16 – Experimento com limiares positivo e negativo 300, 125 respectivamente e com histerese. ............................................................................................................ 58-60 Figura 17 – Experimento com limiares positivo e negativo 300, 125 respectivamente e sem histerese. .................................................................................................................. 62 Figura 18 – Média do tempo de resposta e número de máquinas virtuais com histerese. ........ 63 Figura 19 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo small. ......................................................... 62-65 Figura 20 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo medium. ..................................................... 64-66 Figura 21 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo large................................................................. 68 Figura 22 – Experimento com limiares positivo e negativo 350, 150 respectivamente e sem cloudburst. ......................................................................................................... 67-69 Figura 23 – Média do tempo de resposta e número de máquinas virtuais sem histerese e com cloudburst. ............................................................................................................... 70 Figura 24 – Relação de custo benefício baseado no número de máquinas virtuais e tempo de resposta .................................................................................................................... 72 LISTA DE TABELAS Tabela 1 – Tipos de instâncias Amazon EC2 ........................................................................... 27 Tabela 2 – Lista dos recursos computacionais das máquinas utilizadas no ambiente .............. 43 Tabela 3 – Dados gerados para interpretação dos tempos de respostas ................................... 45 Tabela 4 – Estrutura da nuvem sem utilização da técnica de cloudburst ................................. 47 Tabela 5 – Estrutura da nuvem com utilização da técnica de cloudburst................................. 48 Tabela 6 – Lista de fatores e níveis utilizados nos experimentos sem cloudburst ................... 49 Tabela 7 – Lista de fatores e níveis dos experimentos adicionais sem cloudburst .................. 50 Tabela 8 – Lista de ferramentas com funcionalidades e emprego ............................................ 51 LISTA DE ABREVIATURAS E SIGLAS AWS CRM EC2 Amazon Web Services Gestão de Relacionamento com o Cliente Elastic Compute Cloud ERP HPC IaaS IDE MB MPI NIST PaaS PHEV SaaS SDK SGAMS SO TI TIC TR TRm UFABC VM Sistemas Integrados de Gestão Empresarial Computação de Alta Performance Infrastructure as a Service Ambiente integrado para desenvolvimento de software Megabyte Message Passing Interface National Institute of Standards and Technology Plataform as a Service Híbrido Elétrico Plug-in Software as a Service Kit de Desenvolvimento de Software Smart Grid Autonomic Management System Sistema Operacional Tecnologia da informação Tecnologia da informação e comunicação Tempo de resposta Tempo de resposta mínimo Universidade Federal do ABC Máquina virtual SUMÁRIO CAPÍTULO 1 .............................................................................................................................. 16 INTRODUÇÃO ............................................................................................................................ 16 1.1. MOTIVAÇÃO ................................................................................................................. 16 1.2. OBJETIVOS ................................................................................................................... 17 1.3. CONTRIBUIÇÕES ........................................................................................................... 18 1.4. ORGANIZAÇÃO ............................................................................................................. 18 CAPÍTULO 2 .............................................................................................................................. 20 ESTADO DA ARTE ..................................................................................................................... 20 2.1 COMPUTAÇÃO EM NUVEM ........................................................................................... 20 2.1.1. CARACTERÍSTICAS ESSENCIAIS ............................................................................... 21 2.1.2. MODELOS DE SERVIÇOS DE NUVEM ......................................................................... 22 2.1.2.1. SOFTWARE AS A SERVICE – SAAS ............................................................................. 22 2.1.2.2. PLATFORM AS A SERVICE – PAAS ............................................................................. 23 2.1.2.2.1. GOOGLE APP ENGINE .......................................................................................... 24 2.1.2.2.2. WINDOWS AZURE ................................................................................................ 25 2.1.2.2.3. FORCE.COM .......................................................................................................... 26 2.1.2.3. INFRASTRUCTURE AS A SERVICE – IAAS ................................................................. 26 2.1.2.3.1. AMAZON EC2 ....................................................................................................... 27 2.1.2.3.3. NIMBUS ................................................................................................................. 29 2.1.2.3.4. OPENNEBULA ....................................................................................................... 30 2.1.2.3.5. OPENSTACK ......................................................................................................... 30 2.1.3. MODELOS DE IMPLANTAÇÃO DE NUVEM ................................................................. 31 2.1.3.1. NUVEM PÚBLICA ......................................................................................................... 31 2.1.3.2. NUVEM PRIVADA ......................................................................................................... 32 2.1.3.3. NUVEM HÍBRIDA ...................................................................................................... 32 2.1.3.4. NUVEM COMUNITÁRIA ............................................................................................ 32 2.2. GERENCIAMENTO DE ELASTICIDADE .......................................................................... 32 2.3. HIPERVISOR ................................................................................................................. 34 2.3.1. Xen Hipervisor ............................................................................................................ 32 2.3.2. KVM ............................................................................................................................ 33 2.4. COMPUTAÇÃO AUTONÔMICA ...................................................................................... 37 CAPÍTULO 3 .............................................................................................................................. 39 ESTUDO DE CASO: GERENCIADOR DE SMART GRID ............................................................... 39 3.1. SMART GRID................................................................................................................. 39 3.2. VISÃO GERAL DO GERENCIADOR DE SMART GRID .................................................... 41 3.3. ARQUITETURA .............................................................................................................. 42 CAPÍTULO 4 .............................................................................................................................. 44 METODOLOGIA ........................................................................................................................ 44 4.1. PROCESSO DE COLETA NOS MÓDULOS CLIENTE E DISTRIBUIÇÃO DO SGAMS ............... 44 4.1.1. CENÁRIO ................................................................................................................... 46 4.1.1.2. ARQUITETURA UTILIZANDO A NUVEM PRIVADA SEM CLOUDBURST ........................ 47 4.1.2. ARQUITETURA UTILIZANDO A NUVEM PRIVADA COM CLOUDBURST ....................... 48 4.2. FATORES E NÍVEIS ........................................................................................................ 49 4.2.1. LIMIARES UTILIZADOS NOS EXPERIMENTOS SEM CLOUDBURST.............................. 49 4.2.2. LIMIARES UTILIZADOS NOS EXPERIMENTOS COM CLOUDBURST ............................. 50 4.3. MÉTRICAS .................................................................................................................... 50 4.4. FERRAMENTAS UTILIZADAS ......................................................................................... 51 4.5. EXPERIMENTOS ............................................................................................................ 52 CAPÍTULO 5 .............................................................................................................................. 53 RESULTADOS ............................................................................................................................ 53 5. EXPERIMENTOS SEM HISTERESE...................................................................................... 53 5.2. EXPERIMENTOS COM HISTERESE................................................................................. 59 5.3. EXPERIMENTOS COM CLOUDBURST ............................................................................. 63 5.4. CUSTO VS. BENEFÍCIO .................................................................................................. 71 CAPÍTULO 6 .............................................................................................................................. 73 CONCLUSÃO E TRABALHOS FUTUROS ..................................................................................... 73 6.1 PRINCIPAIS RESULTADOS ............................................................................................. 74 6.2. TRABALHOS FUTUROS ................................................................................................. 75 REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................................. 76 16 Capítulo 1 Introdução A computação em nuvem trouxe diversas vantagens em comparação com o ambiente tradicional da internet. Dentre as principais podemos citar o pagamento somente pelo que é utilizado, a elasticidade, a sensação de recursos computacionais infinitos nos provedores de serviços. Tais características viabilizam o uso da nuvem pública para implantação de novas soluções oriundas de Start up, sem a necessidade de grandes investimentos em infraestrutura computacional. No entanto se faz necessária a avaliação desses serviços, mais específico o comportamento da elasticidade para atender aos picos de consumo. Tendo em vista que tal característica do ambiente de nuvem deve ocorrer de forma automática e transparente para o usuário, sendo necessária apenas a configuração inicial dos limiares para a realização tanto para a alocação de recursos quanto a liberação dos mesmos. 1.1. Motivação O conceito de computação em nuvem é oriundo de outros conceitos já existente como: Grid Computing [21], Utility Computing [56], onde os recursos computacionais são oferecidos como serviço e o cliente paga somente pelo que usar, seguindo o modelo de pagamento de serviços básicos como: água, luz e telefone. Computação em nuvem apresenta características únicas como elasticidade, autosserviço sob demanda, amplo acesso via rede, recursos disponíveis e medida de uso de serviço [48]. Esses atributos visam proporcionar ao cliente de nuvem a independência deste sobre os serviços utilizados. O cliente tem a autonomia para usufruir de todos os serviços oferecidos pelo provedor de nuvem sem a necessidade que este intervenha. A existência de diferentes modelos de nuvem como: pública, privada, híbrida e comunitária [48] [27], viabilizam o uso das vantagens de nuvem sem a necessidade de abandonar a infraestrutura já existente. Desta forma o investimento necessário para utilizar o ambiente de nuvem é reduzido, além de ser possível migrar para a nuvem pública apenas o necessário. O emprego de autogerenciamento, conceito oriundo de computação autonômica [30], no ambiente de nuvem é amplamente viável, pois a complexidade existente em um data center torna impraticável o seu gerenciamento de forma manual. Uma característica predominante das aplicações existentes na nuvem é que em sua maioria são aplicações web. Sendo assim, o conceito de elasticidade está acompanhado da funcionalidade de balanceamento de carga. Desta forma é necessário não somente haver o monitoramento do ambiente de nuvem para que o 17 processo de elasticidade ocorra de forma automática. Mas como também empregar funções como: autocura, para tolerância a falhas, e autoconfiguração, com intuito de prover ao ambiente de nuvem a autonomia necessária para realizar a elasticidade com balanceamento de carga de forma automática. Para avaliar o comportamento da elasticidade em aplicações web usando a infraestrutura da nuvem, foi construído um ambiente de gerenciamento de Smart Grid. Este é um novo modelo para a comercialização de energia elétrica no mundo baseado na variação da tarifação diante da oscilação do consumo. Tal conceito visa ampliar a utilização de fontes renováveis e estimular o consumo consciente por parte do cliente. Para tanto Smart Grid será totalmente digital, necessitando de recursos integrados de processamento, transmissão e gerenciamento de dados em tempo real da rede de energia elétrica [13]. Para que o objetivo de conscientizar os consumidores seja alcançado é necessário disponibilizar informações sobre a produção, transmissão e consumo de energia tanto para as produtoras quanto para o consumidor em sua casa, estas informações são imprescindíveis para que o consumidor possa usar este recurso de forma mais econômica, que saberá em qual hora do dia será mais barato usar um determinado aparelho que irá consumir mais energia. Porém para implantar tal tecnologia diversos desafios são apresentados. Entre eles podemos citar o alto custo de implantação tanto da infraestrutura de transmissão de energia elétrica quanto de TI para fornecer as informações e a falta de padrão entre as concessionárias para disponibilizar as informações para os clientes. O Smart Grid, o Smart Grid Autonomic Management System – SGAMS é ambiente de gerenciamento de Smart Grid usado para avaliação da elasticidade neste trabalho. São utilizados dois ambientes distintos, o primeiro visa avaliar apenas a nuvem privada com o controlador de nuvem OpenNebula. Já o segundo tem como objetivo empregar o conceito de cloudburst [32], utilizando a nuvem pública para atender as requisições quando os recursos da nuvem privada já estiverem exauridos. Para tanto foi usada a nuvem pública da Amazon WS, com o serviço EC2. 1.2. Objetivos O objetivo geral deste trabalho de pesquisa é avaliar o comportamento da elasticidade em ambiente de nuvem computacional, privada ou híbrida, com um estudo de caso no gerenciamento de Smart Grid. O trabalho visa obter maior compreensão sobre as relações de compromisso (trade-off) e a relação custo/benefício das escolhas em relação a qualidade e custo. Os objetivos específicos são: 18 Identificar a implicação da variação dos limiares para a elasticidade no aumento e diminuição do tempo de resposta das requisições. Elucidar o efeito de utilizar um ambiente de nuvem privada em comparação com outro ambiente que faça uso de cloudburst para a nuvem pública da Amazon WS. Demonstrar o resultado ao fazer uso de histerese para controlar a elasticidade em um ambiente de nuvem privada. Identificar uma forma de calcular o custo benefício entre investimento em recursos computacionais e diminuição do tempo de resposta. Elucidar as implicações da escolha dos diferentes tipos de instâncias na nuvem pública da Amazon WS para elasticidade no tempo de resposta das requisições. 1.3. Contribuições As principais contribuições do trabalho são: Especificação, implementação e avaliação do comportamento da elasticidade em um ambiente de nuvem computacional em um ambiente globalmente distribuído. Identificação dos melhores limiares para efetuar a elasticidade em um ambiente de nuvem privada e híbrida (com cloudburst) para o ambiente de Smart Grid. Elucidação do reflexo do tipo de instância escolhida na Amazon WS para elasticidade no tempo de resposta das requisições. Impacto dos diferentes tipos de instâncias da nuvem pública no investimento em recursos computacionais para a elasticidade. Elucidação da maneira de se calcular o custo benefício entre investimento em recursos computacionais e diminuição do tempo de resposta 1.4. Organização A dissertação está organizada da seguinte forma. No Capítulo 2, são apresentadas as informações necessárias para contextualizar o leitor ao tema abordado no trabalho. Sucessivamente, no Capítulo 3, é descrito o estudo de caso empregado neste trabalho, juntamente com a contextualização de Smart Grid para o ambiente de nuvem. No Capítulo 4, é descrita a metodologia utilizada na pesquisa. Assim como a arquitetura do gerenciador do Smart Grid bem como os cenários em que este foi implantado. São descritas as métricas e a maneira como foram realizados os experimentos. No Capítulo 5, são apresentados os resultados obtidos, onde é feita uma discussão sobre as implicações dos experimentos. O custo benefício entre utilizar a nuvem privada com 19 diferentes limiares para a elasticidade e a possibilidade de cloudburst para a nuvem pública da Amazona WS. No Capítulo 6, conclui-se a dissertação com uma breve descrição do trabalho realizado e suas principais contribuições além dos trabalhos futuros. 20 Capítulo 2 Estado da Arte Neste capítulo, são apresentadas as informações necessárias para contextualizar o leitor quanto ao tema abordado e, assim, proporcionar um melhor entendimento dos capítulos subsequentes deste trabalho. As seções estão distribuídas da seguinte forma: na seção 2.1 é apresentado o conceito de computação em nuvem, seus tipos, níveis e exemplos para facilitar a compreensão do leitor. Na seção 2.2 são descritos os monitores de máquinas virtuais e como cada um funciona. Na seção 2.3 é feita uma rápida descrição de computação autonômica e seus aspectos. Por fim na seção 2.4 é feita a descrição de Smart Grid e suas vantagens perante a infraestrutura vigente. 2.1 Computação em Nuvem Serviços essenciais de utilidade pública, como por exemplo, eletricidade, água, esgoto e telefone são entregues à população de modo bastante transparente e o usuário paga apenas pelo que efetivamente consome. Aplicando a mesma lógica de negócio na informática, esse modelo possibilita que serviços de TI sejam oferecidos aos usuários sob demanda, onde estes pagam apenas pelo que utilizaram do serviço. Essa é a ideia básica da Computação em Nuvem, que provê recursos dinamicamente escaláveis e normalmente virtualizados através de serviços sobre a Internet [7]. Segundo esse modelo, desenvolvedores com ideias inovadoras de serviços na Internet não precisam mais investir muito capital em hardware e em recursos humanos para manter o serviço em operação. Mais do que isso, companhias que necessitam de um alto poder de processamento podem obter seus resultados tão rapidamente quanto seus programas possam ser dimensionados, uma vez que usar mil servidores por uma hora pode custar o mesmo que usar um único servidor por mil horas. Essa elasticidade de recursos, sem a necessidade de pagar mais por usar poder computacional em alta escala, é inédita na indústria da TI [7]. Do ponto de vista do usuário, infraestruturas de computação em nuvem disponibilizam sistemas operacionais que possibilitam que os usuários, utilizando qualquer dispositivo conectado à Internet, possam ter acesso aos serviços, arquivos, informações e programas situados “na nuvem”. Assim, os dispositivos utilizados pelos usuários não necessitam de grandes recursos computacionais, aproximando-se de simples terminais. 21 Existem quatro [49] [27] categorias distintas de nuvens, públicas, privadas, híbridas e as comunitárias. Empresas que oferecem serviços de algum nível de computação em nuvem para os seus clientes são classificadas como nuvens públicas. Já nuvens privadas são construídas pelas organizações para atender necessidades específicas de sua empresa, sendo necessário gerenciar a infraestrutura física para suprir tais requisitos. No caso das nuvens híbridas estes surgem da composição tanto de nuvens públicas quanto privadas, tal divisão geralmente ocorre com intuito de delegar as empresas que provem serviços, parte das tarefas que poderiam ser executadas em um ambiente externo ao das empresas. Computação em nuvem prover serviços de diferentes níveis e finalidades como [49] [27]: Infraestrutura as a Service (IaaS), Plataforma as a Service (PaaS) e Software as a Service (SaaS) [39]. IaaS tem como objetivo oferecer infraestrutura de hardware para organizações configurarem todo o seu ambiente de software de forma flexível e escalável. PaaS tem por finalidade prover uma plataforma de desenvolvimento, teste e o ambiente de implantação do software, visando atender parte do ciclo de vida do software. Já no escopo de SaaS a intenção é proporcionar para o usuário, seja ele empresa ou consumidor final, um software que atenda as suas necessidades sem que haja a preocupação com o local onde este esteja instalado. 2.1.1. Características Essenciais Segundo NIST[48][40][35] computação em nuvem possui características que a lhe distingue de outros conceitos já existentes, como Grade Computacional (Grid Computing) [21]. As características essenciais de computação em nuvem são: Autosserviço sob demanda: Um consumidor pode aumentar ou diminuir os recursos computacionais contratados sem a necessidade da intervenção do provedor de serviços. Amplo acesso via rede: Os recursos da nuvem devem estar disponíveis para serem acessados pelos diferentes tipos de dispositivos, tais como: celular, tablete, notebook, PCs etc. Recursos disponíveis: Os recursos providos pelo prestador de serviço podem ser do tipo: enlace de rede, CPU, memória, armazenamento dentre outros. Todos esses recursos são alocados e liberados dinamicamente para o cliente diante da sua necessidade. O cliente não possui conhecimento da localização exata dos recursos disponíveis como tão pouco controle sobre o mesmo, o que em grande parte é fornecido ao cliente é a escolha do data center em que os recursos serão alocados. 22 Elasticidade: Capacidade de o cliente alocar mais recursos computacionais para atender a um pico de demanda, esta característica pode ser atendida de forma automática como é provido pela Amazon WS com o serviço CloudWatch [4], onde este monitora diversas métricas personalizáveis pelo cliente. Medida de uso de serviço: Os provedores de serviço de nuvem utilizam de diferentes métricas para quantificar, monitorar e reportar a utilização dos recursos de forma transparente tanto para o cliente quanto para o próprio provedor. 2.1.2. Modelos de serviços de nuvem Computação em nuvem apresenta diversos níveis de serviços, no entanto os três níveis amplamente adotados pela academia são os de Software as a Service, Platform as a Service e Infrastructure as a Service [59][49][40]. Ordenados seguindo uma arquitetura hierárquica, onde quanto mais alta a camada maior será a abstração do hardware e dos ambientes de desenvolvimento, IDEs, configurações de rede, gerenciamento de recursos, (Figura 1). Figura 1 – Níveis de computação em nuvem 2.1.2.1. Software as a Service – SaaS Software como serviço [11] é a camada mais alta dos serviços providos por computação em nuvem (Figura 1). Neste modelo de negocio o serviço é disponibilizado utilizando a infraestrutura de nuvem com intuito de proporcionar maior disponibilidade. Por ser um serviço web não existe a necessidade de instalação/configuração da aplicação na infraestrutura do 23 cliente, reduzindo o custo final do serviço. O software é utilizado apenas através de um browser, tal recurso se mostra vantajoso devido a facilidade de upgrade da aplicação sem que haja a necessidade de intervenção em qualquer máquina cliente. Todas as atualizações são efetuadas diretamente na aplicação existente no servidor web e automaticamente ficarão disponíveis para os diversos clientes. Atualmente, diversas aplicações estão sendo migradas para este novo modelo de negócio. Dentre elas se destacam o Google Docs, onde aplicativos de escritório como: editores de texto, planilhas, apresentações são oferecidos gratuitamente por meio da nuvem e apresentam um alto grau de qualidade. Outro serviço que se consolidou no meio empresarial foi a Salesforce.com [61] com o serviço de Enterprise Resource Planning – ERP online. Neste mesmo serviço é integrada uma plataforma de desenvolvimento para que as empresas possam implementar módulos para atender necessidades específicas que o ERP não possui. Tal plataforma é enquadrada no nível de Platform as a Service – PaaS que é descrito abaixo. O crescente avanço no desenvolvimento de tecnologias para a implementação de interfaces de usuário para aplicações web como Flash, AJAX e HTML5 impulsionou a ampla utilização de SaaS. Pois à medida que as aplicações web apresentam funcionalidades semelhantes às aplicações desktop aumenta a adesão de novos adeptos a esse novo paradigma, devido à facilidade do usuário se adaptar à nova aplicação. Outro fator importante no emprego deste novo paradigma é a utilização de protocolos para integração de serviços como SOAP e REST. Ambas as tecnologias visam a adaptação/integração de aplicações existentes visando à redução do custo de desenvolvimento de novas aplicações. 2.1.2.2. Platform as a Service – PaaS Plataforma como serviço [11] é uma das categorias dos serviços providos por computação em nuvem. Neste nível de serviço são fornecidas algumas etapas no processo de desenvolvimento de software. Iniciando pelo ambiente de desenvolvimento da aplicação, em seguida, pela fase de depuração e teste e culminando na implantação, execução e o gerenciamento. Estas características visam reduzir custos com o ciclo de vida do software e com a configuração tanto do ambiente para desenvolvimento quanto para o local de implantação, tornando possível também a redução do tempo de desenvolvimento da aplicação. Os softwares desenvolvidos utilizando PaaS frequentemente são aplicações Webs, no entanto existem exceções. Assim como as ferramentas usadas para a implementação podem ser online, obrigando o desenvolvedor estar conectado para trabalhar, ou off-line permitindo o 24 desenvolvimento local e após a implementação que será realizada a sincronização com os servidores do provedor de serviço. Atualmente existem algumas plataformas que se destacam em relação às demais como Google App Engine [24], Microsoft Azure [38] e Force.com [20]. Cada um desses ambientes possui características que as distinguem quanto ao objetivo de sua plataforma, tanto a suporte a linguagens como em ambiente de desenvolvimento. Caso nenhuma das plataformas existentes atenda as necessidades específicas de cada negócio, é possível a construção de uma plataforma própria utilizando o nível de Infraestrutura como Serviço (IaaS) [52] para suprir tal exigência. No entanto todas as plataformas de nuvem devem, além das funcionalidades supracitadas, prover uma abstração do ambiente em que está sendo utilizado para o desenvolvimento, como sistema operacional e recursos de rede [7]. Devido ao novo paradigma apresentado por serviços de plataformas surgem questionamentos quanto à migração de sistemas já consolidados nas empresas. A migração de todos os dados é uma tarefa extremamente custosa e delicada, para tanto existe o conceito de ambientes híbridos. Onde parte da infraestrutura fica localizada na própria empresa e outra parte é levada para a nuvem, ambos os sistemas executam tarefas de forma sincronizada para garantir a integridade dos dados [7]. Fatores como custo para mover a aplicação para a nuvem, a necessidade de um hardware para executar a aplicação além de ser preciso analisar se a aplicação atende aos requisitos necessários para ser implantada na nuvem. Como por exemplo, se o sistema necessita de intervenção humana para a sua reinicialização, caso necessário. 2.1.2.2.1. Google App Engine O Google App Engine [24] é uma plataforma que prove o desenvolvimento de aplicações tradicionais web. Tal ambiente fornece ao desenvolvedor uma abstração das camadas tanto de recursos físicos quanto de armazenamento [12]. O desenvolvedor não precisa se ater a recursos de armazenamento, rede e CPU, aumentando assim a eficiência no desenvolvimento da aplicação, pois a própria plataforma escalona e balanceia a carga de acordo com a demanda de cada aplicação implantada em sua infraestrutura. Na camada de armazenamento é utilizado o MegaStore [6] que se baseia em BigTable [16]. Essa tecnologia é empregada no gerenciamento de grandes quantidade de dados (Big Data), que possui recursos de autogerenciamento o tornando assim tolerante a falhas. A plataforma do Google oferece suporte a três linguagens de programação Java, Python e Go, sendo essa última uma linguagem da própria Google. O desenvolvimento seja ele em qualquer uma das linguagens supracitadas, se dá por meio de um Software Development Kit – 25 SDK que é instalado no Eclipse por meio de um plug-in. Após a implementação e teste da aplicação, que são realizados localmente por meio do SDK instalado, é feita a implantação na infraestrutura do Google. Todas as aplicações presentes na infraestrutura do Google estão restritas a cotas de utilização. Essas cotas são referentes a uso de disco rígido, tráfego de entrada e saída e tempo de processamento. O Google apresenta uma tabela de preços para o excedente das cotas de cada recurso, até mesmo destinatários de e-mails. No entanto o serviço oferecido gratuitamente apresenta resultados satisfatórios. 2.1.2.2.2. Windows Azure O Windows Azure [31] assim como o Google App Engine prove os recursos e funcionalidades esperadas de um PaaS. Este serviço fornece recursos de rede, CPU, armazenamento, gerenciamento de aplicações na internet por meio do data center da própria Microsoft, entre outros sob a demanda da necessidade do cliente sendo escalável e tolerante a falhas. Windows Azure oferece para a camada de armazenamento o Microsoft SQL Azure que é construído sobre a tecnologia SQL Server, banco de dados da própria Microsoft, sendo este um banco de dados relacional. Esta plataforma de desenvolvimento da Microsoft oferece suporte a diversas linguagens de programação como: Java, Ruby, .NET Framework, C# e PHP, além de possuir compatibilidade com REST, SOAP, XML. Diante das características de abstração que um PaaS deve apresentar o Windows Azure provê tais requisitos em forma virtualizada utilizando máquinas virtuais, virtualização de rede. A plataforma da Microsoft usa o componente central Controlador de Fábrica - FC sendo este extremamente redundante, pois tem como funcionalidade gerenciar e automatizar todo o ciclo de vida do hardware e software utilizado para executar uma determinada tarefa. Para a gerência de hardware, o FC controla a alocação e a liberação de recursos, máquinas virtuais, infraestrutura de rede, diante do software em execução, além de se auto recuperar diante de uma falha sem que seja necessária a intervenção de um especialista. Já para gerenciamento de software, o FC tem como responsabilidade um repositório com todas as aplicações em execução, onde ele dimensiona uma máquina virtual, configura filtros de pacotes diante da necessidade de recursos dessa aplicação. O FC também auxilia a aplicação a se recuperar de uma falha automaticamente. 26 2.1.2.2.3. Force.com A Salesforce.com [37] foi a pioneira no mercado de Enterprise Resource Planning ERP e Customer Relationship Management - CRM online oferecendo serviços no nível de SaaS. No entanto, ela observou que cada cliente possui uma necessidade específica de seu negócio, sendo necessário o desenvolvimento de funcionalidades específicas para atender essas necessidades. Diante dessa problemática, a Salesforce.com aumentou o seu portfólio com a adição da plataforma Force.com [7]. Sendo este ambiente capaz de desenvolver e incorporar as aplicações aos serviços providos pela Salesforce.com. O ambiente de desenvolvimento é instalado por meio de um plug-in para o Eclipse e a única linguagem a qual oferece suporte é Java. As aplicações a serem implementadas nesse ambiente seguem o padrão de projeto MVC, para a futura implantação e customização da solução já existente. 2.1.2.3. Infrastructure as a Service – IaaS No nível de Infraestrutura como serviço – IaaS [39], hardwares são providos sob demanda, sem que haja a necessidade de um contrato de longo prazo entre o cliente e o provedor de serviço. Tais recursos podem ser oferecidos por meio de armazenamento, rede além de softwares específicos como sistemas operacionais e serviços de balanceamento de carga. Grande parte destes serviços é provida pelos gerenciadores de máquinas virtuais – Hipervisor, pois estes realizam efetivamente a virtualização nos data centers. Com o intuito de tornar a infraestrutura existente flexível é amplamente utilizado o recurso de virtualização. Consequentemente viabiliza a elasticidade para alocar e liberar recursos computacionais com a finalidade de atender aos picos de consumo das aplicações. Para tanto, tecnologias como Xen Hipervisor que possuem funcionalidades como para-virtualização se destacam pelo melhor desempenho [28]. Este serviço apresenta ser atraente para empresas que visam não possuir uma infraestrutura computacional robusta para suportar as aplicações existentes na empresa. Com a utilização dos serviços de IaaS as empresas delegam a responsabilidade de gerenciamento/monitoramento dos hardwares para os provedores de IaaS, consequentemente deixam de investir em manutenção. Os provedores deste nível de serviço de nuvem agregam valor aos serviços prestados oferecendo outros serviços como: balanceamento de carga, onde diante do aumento do consumo mais máquinas virtuais serão alocadas automaticamente e liberadas quando houver a redução do consumo. Além de possuírem serviços de persistência e uma grande variedade de configuração de máquinas virtuais. As mais econômicas com 613 MB 27 de RAM e 1 core de 1Ghz, e as máquinas mais robustas com 15GB e 8 cores de processamento. Existindo ainda instâncias clusters que ultrapassam os 60 GB de RAM e 88 cores, tais máquinas são indicadas para aplicativos High Performance Compute – HPC. Uma alternativa às soluções oferecidas pelos provedores de nuvem são os controladores de nuvem como OpenNebula, Nimbus, Eucalyptus dentre outros [45][65][63]. Estas ferramentas proporcionam ao usuário criar sua nuvem em sua própria infraestrutura. Com intuito de oferecer serviços semelhantes aos dos provedores de nuvem estes controladores demonstram ser bastante viáveis. Para empresas que não querem descartar a infraestrutura já existente, mas querem usufruir das funcionalidades das nuvens, esses controladores suprem esta necessidade de mercado e acadêmico. 2.1.2.3.1. Amazon EC2 A nuvem pública que fara parte do protótipo a ser desenvolvido é a da Amazon Web Service (AWS) [3], por ser uma das maiores empresas provedoras de infraestrutura como serviço (Infrastructure-as-a-Service - IaaS) no mundo, por possuir um grau de confiabilidade satisfatório, por deter um data center geograficamente próximo, e desta forma, ser apto a hospedar mais adequadamente a avaliação. Especificamente, foi avaliado o serviço Amazon Elastic Compute Cloud (Amazon EC2) [2], que é um serviço de IaaS que possibilita a utilização da grande infraestrutura computacional da Amazon pelos clientes. Esse serviço é chamado de elástico porque permite que os clientes aumentem ou diminuam sua utilização dinamicamente através da criação ou remoção de instâncias de máquinas virtuais. A Amazon EC2 oferece alguns padrões de instâncias virtuais a serem alocadas para o cliente – como pode ser contemplado na (Tabela 1). Além dos padrões de instâncias apresentados na tabela, existem outras instâncias de alto desempenho que estão disponíveis apenas para algumas centrais de servidores disponibilizados pela Amazon. É utilizado o conceito de unidades de processamento EC2 – ECU, que é correspondente a capacidade de um processador Opteron 2007 ou Xeon 2007 de 1.0-1.2 GHz. Tabela 1 – Tipos de instâncias Amazon EC2 Tipo de Memória Armazenamento Instância Unidades de Plataforma Preço/Hora $0,020 $0,027 $0,060 $0,080 Processamento Micro 613 MB Variável Até 2 ECUs 32 bits / 64 bits Pequeno 1,7 GB 160 GB 1 núcleo virtual com 1 unidade EC2 Compute 32 bits/ 64 bits 28 Médio 3,75 GB 410 GB Grande 7,5 GB 850 GB Extragrande 15 GB 1.690 GB 1 núcleo virtual com 2 unidades de processamento EC2 2 núcleos virtuais com 2 unidades de processamento EC2 cada 4 núcleos virtuais com 2 unidades de processamento EC2 cada 32 bits/ 64 bits $0,120 $0,160 64 bits $0,240 $0,320 64 bits $0,480 $0,640 2.1.2.3.2. Eucalyptus O Eucalyptus[43] é um controlador de nuvem que possui duas soluções, uma proprietária e outra de código aberto para a construção de IaaS. Esta ferramenta era a mais popular dentre os controladores de nuvem, pois se destacava por possuir uma arquitetura dividida em módulos simples e distribuída hierarquicamente. Por ser descentralizado o Eucalyptus possibilita a criação de nuvens escaláveis e distribuídas. Os módulos específicos para gerência de máquinas virtuais e de armazenamento podem ser alocados em servidores distintos, o que possibilita a criação de infraestruturas dedicadas a uma única tarefa em particular. Tal característica pode resultar em um melhor desempenho devido ao não compartilhamento de recursos. No entanto, o motivo pelo qual tornava o controlador de nuvem Eucalyptus popular era possuir uma interface de acesso aos serviços baseados na API da Amazon EC2. É possível desenvolver aplicações que utilizem o Eucalyptus em um determinado momento e em seguida utilize a própria infraestrutura da Amazon EC2, sem que haja a necessidade de alteração de grande parte do código. Além de permitir a utilização tanto do Eucalyptus quanto da Amazon EC2 simultaneamente, fazendo-se uso da mesma API. Porém, o fator que desmotivou o seu uso perante os demais controladores de nuvem foi a falta de atualizações e manutenção da solução de código aberto priorizando a solução empresarial. E o surgimento de padrões de interfaces para serviços de IaaS, sejam elas abertas ou de provedores, como OCCI [44] além dos demais controladores de nuvem também passarem a oferecer suporte a API da Amazon EC2. 29 2.1.2.3.3. Nimbus O Nimbus [42] é uma plataforma de IaaS específica para usuários de aplicações científicas. Este controlador oferece a funcionalidade de contratar recursos de outras nuvens como a Amazon EC2 e até mesmo de outros controladores de nuvem. Tal característica se apresenta relevante por tornar transparente para o usuário o local físico da máquina virtual que está instanciando. No entanto este controlador possui limitações quanto ao sistema de armazenamento, pois o Nimbus só há suporte ao próprio sistema de armazenamento intitulado Cumulus. Devido ao seu objetivo de simplificar e facilitar a sua utilização é consideravelmente reduzido o número de parâmetros a ser definido pelo usuário, o que impõe severas limitações de recursos comparados aos demais controladores. Os componentes de sua arquitetura interna (Figura 2), cada componente de sua estrutura são responsáveis por uma funcionalidade distinta [50]. Workspace service: este módulo é responsável pelas interfaces EC2 e WSRF ambas baseadas em Web services, é atribuído a este componente a funcionalidade que prove segurança por meio de autenticação e autorização utilizando GSI. Workspace control: este componente é responsável por criar e gerenciar as máquinas virtuais além das imagens referenciadas para a criação das MVs. Este módulo recebe como atribuição também a alocação dos IP das máquinas recém-criadas. Este controlador possui suporte aos gerenciadores de máquinas virtuais Xen Hipervisor e KVM [33]. Workspace resource management: este módulo possui a funcionalidade de gerenciar máquinas virtuais de outros controladores como o OpenNebula. Workspace pilot: este último componente é responsável por prover virtualização em um cluster sem que haja a necessidade de mudanças severas no mesmo. Figura 2 – Componentes do controlador Nimbus[29] 30 2.1.2.3.4. OpenNebula O OpenNebula [64][68] é um controlador de nuvem que possui uma arquitetura com alto grau de centralização e flexível. Além de apresentar como ponto forte a sua customização, possibilitando ao usuário definir a maneira como o OpenNebula deverá ser executado diante das tarefas a serem executadas. Devido à customização, este controlador se torna adaptável e com características de interoperabilidade, podendo assim ser executado em diferentes data centers. Por ser uma ferramenta de código aberto, os seus módulos apresentam grande integração com softwares de armazenamento já existentes no ambiente. O controlador de nuvem OpenNebula possui alto grau de personalização comparado aos demais controladores. Esta característica resulta em uma grande complexidade para efetuar de forma vantajosa as configurações deste controlador, sendo assim se faz necessário a presença de um técnico para desempenhar tal tarefa. A arquitetura do OpenNebula é baseada em três tecnologias para permitir a provisão de serviços em nuvem: virtualização, armazenamento e rede (Figura 3). Por ser de uma camada superior na hierarquia de virtualização, o OpenNebula pode controlar o uso de diferentes hipervisors. Dentre eles está presente o Xen Hipervisor, ferramenta utilizada entre todos os controladores de nuvem e até mesmo em provedores de nuvem como a Amazon EC2. Figura 3 – Arquitetura do OpenNebula contextualizada em computação em nuvem [46]. 2.1.2.3.5. OpenStack O OpenStack [47][68] é um sistema operacional em nuvem que controla grandes recursos computacionais, como: processamento, armazenamento e recursos de rede, ao longo de um data center, tudo gerenciado através de uma interface web. O OpenStack foi criado a partir da parceria entre Rackspace [54], uma das maiores provedoras de serviços de nuvem, e a 31 NASA. Cada uma dessas organizações contribuiu significativamente para o projeto, resultando na arquitetura composta por três partes (Figura 4): o Nova, oriundo do Nebula da NASA este responsável por implementar a parte computacional da arquitetura do OpenStack - Compute. O Swift, proveniente do Cloud Files da Rackspace responsável pelo gerenciamento de armazenamento e o Glance tendo como atribuição a imagens a serem utilizadas para a criação das máquinas virtuais [67]. Figura 4 – Arquitetura do OpenStack 2.1.3. Modelos de implantação de nuvem As nuvens podem ser classificadas diante da infraestrutura física as quais pertencem. Variando desde poucos servidores localizados dentro de uma determinada instituição para atender necessidades específicas da própria instituição. Existe grandes data centers estabelecidos em diversas localidades do mundo para atender as necessidades de seus clientes. Existem quatro [11][35][49] modelos de nuvens sendo elas: pública, privada, híbrida e comunitária. 2.1.3.1. Nuvem Pública As nuvens públicas são oferecidas por provedores de serviços, sejam eles no nível de SaaS, PaaS e IaaS para seus clientes/usuários. Apesar dos provedores disponibilizarem os serviços para os clientes/usuários, não significa que estes sejam pagos. Neste modelo de negócio o custo da disponibilização do serviço pode ser feita tanto em forma de cobrança direta ao seu cliente, ou em forma de anúncios para os usuários [11]. Geralmente os provedores de IaaS e PaaS utilizam da cobrança direta, já em SaaS é mais frequente por meio de anúncios salvo as exceções de sistemas empresarias como Salesforce. 32 2.1.3.2. Nuvem Privada Os serviços oferecidos pelas nuvens privadas são executados dentro da própria infraestrutura da empresa usuária do serviço. Tal categoria de nuvem é proveniente da opção de não migrar a infraestrutura já existente para a nuvem pública, mas mesmo assim usufruir dos recursos oferecidos pela nuvem por meio da utilização dos controladores de nuvem. No entanto, a escolha de não migrar para a nuvem pública acarreta no custo de efetuar manutenção e upgrade sempre que necessário [35]. 2.1.3.3. Nuvem Híbrida A nuvem híbrida é composta pelas nuvens públicas e privada, tal fato ocorre quando uma determinada organização decide não migrar totalmente sua infraestrutura para a nuvem pública, dessa forma as duas infraestruturas executam tarefas em paralelo [51]. Outra aplicação seria quando são utilizados os serviços providos pela nuvem pública para atender a um pico de consumo de seus clientes. A funcionalidade de utilizar a nuvem pública quando não existem mais recursos na nuvem privada, através da elasticidade, é denominado cloudburst [32]1. 2.1.3.4. Nuvem Comunitária A nuvem comunitária visa distribuir tanto os custos quanto a gestão entre as organizações que compõem a nuvem. Tal categoria de nuvem surge a partir de objetivos e interesses semelhantes de seus integrantes [11], um exemplo similar de tal tipo de nuvem é o PlanetLab [53]. No entanto conceitualmente em computação em nuvem o usuário/cliente não possui conhecimento da localização geográfica dos servidores, já o PlanetLab não prove essa transparência para o usuário/cliente. 2.2. Gerenciamento de Elasticidade O conceito de elasticidade em nuvem segundo NIST [48] emprega a liberdade do cliente de alocar e liberar recursos diante da sua necessidade, sem que seja necessária a intervenção do provedor de serviço. No entanto, os recursos estarem apenas disponíveis quando necessário não é suficiente, estes recursos devem possuir a característica de alta disponibilidade. Tal atributo implica em um nível adequado de serviço 24 horas por dia e 7 dias por semana (7/24), com O termo cloudburst em inglês pode ser traduzido por “aguaceiro” em português. Como esta traduação não auxilia o processo de compreensão do conceito de cloudburst no contexto de Computação em Nuvem, neste trabalho será utilizado o termo original em inglês. 1 33 apenas alguns minutos de instabilidade por ano [18]. É possível categorizar os mecanismos de elasticidade [22]. A elasticidade pode ser feita de forma automática na nuvem pública da Amazon WS por meio do serviço CloudWatch. Outros provedores de nuvem pública como GoGrid [23] e Rackspace [54] apresentam serviços de replicação. Porém estas funcionalidades não são oferecidas nativamente, sendo necessária a implementação por meio de APIs. O CloudWatch tem como funcionalidade monitorar métricas como: utilização de CPU e memória, quantidade de requisições que são efetuadas para uma determinada máquina virtual. Diante dessas métricas o cliente pode configurar limiares para que uma nova VM seja criada para atender a demanda. No entanto, este recurso não é viabilizado por controladores de nuvem privada como OpenNebula, por tanto se o cliente de nuvem privada quiser usufruir de tal funcionalidade ele terá de implementar este recurso. A utilização de nuvem híbrida pode fornecer um ambiente robusto o suficiente para suportar picos de demanda. No entanto, o uso da nuvem pública reflete no aumento do investimento em infraestrutura. O emprego da técnica cloudburst [32] é relevante para a redução do custo com infraestrutura sem ter a redução da qualidade do serviço. Pois somente serão criadas novas máquinas virtuais na nuvem pública quando os recursos existentes na nuvem privada já tiverem se exaurido. Desta forma não haverá o uso da nuvem pública a menos que seja realmente necessária a sua utilização. Para a utilização de tal técnica se faz necessário o conhecimento dos diferentes tipos de máquinas virtuais nas nuvens públicas. Pois cada tipo possui preço e recursos computacionais distintos, identificar a que oferece melhor custo benéfico é de suma importância para não investir mais do que o necessário e não perder a qualidade do serviço prestado. Outro fator a ser considerado é o data center em que será implantada as VMs criadas, tendo em vista a variação do preço do mesmo tipo de instância para diferentes data centers. O trabalho realizado em [57] propõe a utilização de um framework que tem como objetivo executar aplicações do tipo HPC – Computação de alta performance, usando o padrão para comunicação de dados em computação paralela MPI no ambiente de nuvem pública da Amazon. Para tanto foi criado um módulo específico onde o usuário determina o limite de utilização, baseando-se no tempo a ser usado e no quanto será investido financeiramente. Porém estas métricas não garantem que ao atingir um dos limiares o resultado da operação tenha sido alcançado. Este trabalho apresenta severas limitações, tendo em vista o seu escopo, HPC utilizando um padrão específico MPI. 34 O trabalho [55] assim como no anterior, é focado em aplicações que utilizem computação paralela por meio do padrão MPI. Foi utilizado o framework Work Queue [34], sendo este baseado no paradigma master-worker, onde o master tem como responsabilidade gerenciar todos os worker e este possui como atribuição executar a tarefa que lhe designada. Ao contrário do artigo anterior neste trabalho não apresentou uma forma de determinar o quanto gostaria de ser investido na nuvem pública. Elas utilizaram a nuvem da Amazon e Microsoft Azure para a realização dos experimentos, tendo como objetivo comparar desempenho. O trabalho realizado nesta dissertação tem como o foco aplicações web, ao contrário dos trabalhos supracitados. Foram utilizadas duas variáveis de limiares para efetuar a elasticidade. Estes limites são baseados na métrica de número de requisições simultâneas, pois esta apresenta maior confiabilidade para evitar a ação da elasticidade de forma desnecessária. Todo o processo se dá de forma automática, não só a elasticidade como o conceito implícito de balanceamento de carga. 2.3. Hipervisor São responsáveis por realizar efetivamente a virtualização nos servidores, permitindo esses a criação de várias máquinas virtuais em uma única máquina física. Existem três tecnologias distintas utilizadas pelos VMM para prover a virtualização [36][41][69] (Figura 5): virtualização total, para-virtualização e a virtualização no nível de sistema operacional. ( a ) Virtualização total ( b ) Para-virtualização ( c ) Virtualização no nível de sistema operacional Figura 5 – Tecnologias para virtualização 35 Virtualização total: Este tem como característica fornecer ao sistema operacional da máquina virtual todos os recursos da máquina física. Sendo assim o SO não necessita de nenhuma alteração. Porém, esta tecnologia apresenta graves problemas, o mais impactante é a necessidade do VMM testar todas as instruções a serem executadas antes de efetivamente as realizarem. Pois algumas delas podem alterar o estado do sistema, tendo em vista que o sistema operacional instalado na máquina virtual não possui o conhecimento do ambiente em que está sendo executado [36]. Para-virtualização: Esta tecnologia visa resolver os problemas existentes na virtualização total. Para tanto se faz necessário que os sistemas operacionais a serem controlados pelo monitor de máquinas virtuais sejam modificados. Com intuito de não haver a necessidade de testar as tarefa que irão mudar o estado do sistema, o próprio sistema operacional sinaliza ao VMM quando for executar instruções desta natureza. Tal solução prove a esta tecnologia significativo ganho no desempenho em relação à tecnologia supracitada [14]. Virtualização no nível de sistema operacional: Este método de virtualização é o que apresenta maior desempenho dentre todos. Pois as máquinas virtuais criadas são instâncias do próprio sistema operacional hospedeiro, sendo denominados de servidor virtual privado – VPS. Desta forma o compartilhamento de recursos é gerenciado pelo próprio kernel do Linux, pois este tipo específico de virtualização não é suportado em outros sistemas operacionais, pela necessidade de alteração do kernel tanto do sistema hospedeiro quando das máquinas virtuais criadas a partir dele, e este prove também o isolamento entre as diversas VPSs. No entanto, esta tecnologia apresenta diversos problemas como: caso o kernel falhe todas as VPSs criadas terão problemas [14]. 2.3.1. Xen Hipervisor O Xen [66] é uma solução de código aberto para virtualização de infraestrutura que provê uma camada de abstração entre o hardware e o sistema operacional e com isso, permite a execução de vários sistemas operacionais em paralelo numa mesma máquina física. Ele possui componentes que agendam a utilização dos recursos físicos pelas máquinas virtuais. O hipervisor Xen possui suporte a para-virtualização [12], onde o sistema operacional da máquina virtual tem a ilusão de estar executando diretamente sobre o hardware. Isso causa uma melhoria considerável no desempenho das máquinas virtuais, se comparado com a estratégia de virtualização total. Apesar de ser uma solução aberta, muitas plataformas comerciais usam o Xen (ou versões adaptadas deste) para oferecer seus serviços, devido ao 36 desempenho proporcionado em comparação com as demais soluções abertas existentes [28], como por exemplo, o Amazon EC2. Um servidor necessita de três componentes para que o Xen seja executado, o próprio hipervisor Xen, Domain 0 Guest e o Domain Guest (Figura 6). Hipervisor Xen – este é executado diretamente sobre o hardware e se torna uma interface para todas as requisições de I/O, CPU e disco dos sistemas operacionais clientes. Domain0 Guest – este componente é iniciado pelo hipervisor Xen a partir do boot do sistema operacional, com exceção do Windows. O Dom0 possui privilégios exclusivos para acessar o hipervisor Xen que não é atribuída a todos os clientes. Estes privilégios permitem que ele administre todos os aspectos dos clientes, tais como iniciar, parar pedidos de I/O. Domain Guest – este denominado também como domínios privilegiados é iniciado e controlado pelo Dom0 e operam o sistema de forma independente. Os clientes necessitam de uma modificação no sistema operacional conhecido como paravirtualização ou sistemas operacionais não modificados precisam que o hardware a ser virtualizado possua a tecnologia (Intel VT ou AMD-V) conhecida como hardware virtual machine – HVM. Figura 6 – Arquitetura Xen hipervisor. 2.3.2. KVM O hipervisor KVM [1] foi inicialmente desenvolvido apenas para ser executado utilizando o conceito de virtualização total, possuindo apenas aproximadamente 10.000 linhas 37 de código. No entanto hoje este monitor possui suporte a para-virtualização fazendo-se uso das tecnologias Intel VT e AMD-V e está incluso na versão estável do kernel do Linux desde a versão 2.6.20. O KVM não possui módulos específicos para o gerenciamento de recursos alocados às máquinas virtuais criadas, ele utiliza o próprio kernel do Linux para efetuar essas tarefas. Os sistemas operacionais utilizados para criar máquinas virtuais por meio do KVM não necessitam de nenhuma alteração. Apesar de sua simplicidade o KVM presenta desempenho aceitável para a execução de High Performance Computing – HPC [58]. 2.4. Computação Autonômica Sistemas de computação autonômica devem ter a capacidade de se gerenciarem e adaptarem dinamicamente a mudanças de acordo com políticas e objetivos de negócios, tornando possível que problemas frequentemente sejam identificados e corrigidos antes mesmo de serem percebidos pelo pessoal de TI [30]. A essência da computação autonômica é o autogerenciamento (self-management), que tem como objetivo livrar os administradores dos detalhes da operação e manutenção dos sistemas e oferecer aos usuários máquinas que rodam com alto desempenho e disponibilidade em rotina de 24/7. Essa característica justamente faz com que essa abordagem se torne adequada ao gerenciamento de Smart Grid. O autogerenciamento proporciona ao ambiente de nuvem a capacidade da realização da elasticidade de forma automática. As características de sistemas autonômicos se fazem necessários atualmente diante do crescente aumento da complexidade dos sistemas. Tendo como base computação em nuvem onde existe a presença de diversos tipos de sistemas trocando informações entre si sem que exista a necessidade da intervenção humana para a sua manutenção. É imprescindível tornar estas aplicações tolerantes não somente a falhas, mas também capazes de se recuperar automaticamente proporcionando até certo nível independente de um especialista. Existem quatro aspectos essenciais do autogerenciamento identificados como CHOP [25][70]: autoconfiguração (self-configuration), autocura (self-healing), auto-otimização (selfoptimization) e autoproteção (self-protection) sendo cada um responsável por uma função em específico e o conjunto destas prove o comportamento autonômico do sistema. Autoconfiguração: significa que a configuração dos sistemas deve ser feita de maneira automática, seguindo políticas de negócios de alto nível. 38 Autocura: diz respeito a sistemas que automaticamente detectam, diagnosticam e recuperam dos problemas de software e hardware, em alguns casos isolando o componente defeituoso. Autoproteção: significa que os sistemas devem estar sempre à busca de possibilidades para melhorar o seu desempenho e eficiência. Auto-otimização: significa que os sistemas devem se defender automaticamente de ataques ou múltiplas falhas em sequência. 39 Capítulo 3 Estudo de Caso: Gerenciador de Smart Grid Este capítulo apresenta o Smart Grid Autonomic Management System – SGAMS, um gerenciador que visa apresentar aspectos do ambiente de Smart Grid. Na seção 3.1 é apresenta a visão geral do SGAMS e o modelo empregado para o seu desenvolvimento. Já na seção 3.2 é detalhada a sua arquitetura e funcionamento. 3.1. Smart Grid O conceito de Smart Grid se difere entre as diversas entidades reguladoras e fundações no mundo. No entanto existe um consenso quando é afirmado que Smart Grid proporcionará um aumento do percentual de fontes renováveis para a geração de energia, consequentemente reduzindo assim a emissão de CO² na atmosfera [26]. Outro ponto em comum é na ideia de reduzir o consumo de energia por meio da conscientização do cliente, devido às informações que serão disponibilizadas para ele em tempo real do valor da energia naquele determinado momento, tornado possível assim à escolha de um melhor momento para a utilização ou não de equipamento elétrico. O gerenciamento eficiente da energia será possível devido à substituição da infraestrutura existente atualmente, proporcionando assim a redução da taxa de perdas, principalmente na transmissão da fonte de geração de energia até o consumidor final [19]. Caso o consumidor possua em sua residência alguma fonte produtora de energia, painel fotovoltaico ou gerador, este poderá vender a energia excedente produzida para a rede tornando-se assim um produtor [62]. Figura 7 – Modelo conceitual de Smart Grid [8] 40 A arquitetura da infraestrutura de Smart Grid (Figura 7), tanto da rede de transmissão de energia quanto de comunicação para fornecer os dados se difere da rede atual devido aos objetivos de cada uma. A rede existente almeja apenas a disponibilização da energia elétrica para o cliente, sem a existência do fornecimento de informações. Já em Smart Grid, prover informação oriunda da rede elétrica é de suma importância, pois é por meio destas que o consumidor poderá tomar decisões de qual o melhor momento para utilizar algum equipamento elétrico. No entanto prover tais informações utilizando computação em nuvem apresenta diversos desafios como[26]: O custo-benefício para disponibilizar de forma incremental as novas funcionalidades desenvolvidas para atender as necessidades sem a substituição de sistemas legados. Prove a integração de sistemas internos com externos aos seus clientes/usuários de forma segura. Fornecer um framework para integrar recursos de terceiros e parceiros de forma fácil. Permitir que novos recursos sejam implementados em paralelo às aplicações em execução sem que haja impacto nas aplicações. Utilizar SaaS com intuito de reduzir custo de desenvolvimento e implantação. Para prover as informações para o consumidor final são utilizados os medidores inteligentes (smart meter), estando esses presentes não somente na casa dos clientes, mas também no meio de distribuição e transmissão. É por meio deles que será possível adicionar à rede a capacidade de se auto proteger de determinadas falhas, e até mesmo se auto recuperar. Através da troca de dados entre os diversos medidores a rede terá informações suficientes para realizar a tomada de decisão até um determinado nível sem que seja necessária a intervenção de um técnico especialista. A implantação das redes de energia elétrica inteligentes está orçada na quantia de bilhões, porém tal investimento apresenta viabilidade devido à economia nos segmentos apresentados acima [8]. Além de viabilizar a ampla utilização dos Plug-in Hybrid Electric Vehicles (PHEV), pois estes reduzem a dependência de combustíveis fosseis e ainda permite a possibilidade deste venderem energia quando a tarifa for atrativa aos consumidores. No entanto com a atual infraestrutura não seria possível suprir a necessidade de uma grande quantidade desses veículos [26]. 41 3.2. Visão Geral do Gerenciador de Smart Grid Os desafios existentes em Tecnologias da Informação e Comunicação (TIC) na implantação de Smart Grid levam à proposta de utilização da infraestrutura computacional da nuvem. Os requisitos referentes à autonomia, configuração, tolerância à falha e gerenciamento do sistema foram atendidos empregando os conceitos de computação autonômica. Com intuito avaliar de a viabilidade de utilização da infraestrutura de computação em nuvem para atender as necessidades do Smart Grid foi criado o Smart Grid Autonomic Management System – SGAMS, sendo este executado em um ambiente de nuvem privada na UFABC - Figura 8. Figura 8 – Modelo do SGAMS Para obter a arquitetura mais próxima da realidade, o gerenciador possui três módulos, responsáveis por tarefas distintas, mas que se completam para compor o ambiente de redes inteligentes de energia elétrica. A disposição desses módulos e a interação entre eles podem ser observadas na Figura 8. O módulo de geração simula a quantidade de carga elétrica a ser produzida para a rede pelas concessionárias e pelos consumidores, sendo este último apenas para aqueles que possuem meios para gerar tal carga. Além de determinar se um novo consumidor possui ou não a capacidade de gerar eletricidade para a rede e se caso tenha, é necessário determinar a quantidade e por quanto tempo. O módulo de distribuição possui maior complexidade em comparação com o módulo de geração, pois este é responsável por alocar e liberar automaticamente as máquinas virtuais diante do aumento e redução do número de requisições dos consumidores. Tais requisições são necessárias para informar os consumidores do valor atual da tarifa de energia. O último módulo da aplicação é o de clientes, que tem como responsabilidade gerar demanda para a oferta de energia. Este módulo efetua requisições constantes para o módulo de distribuição com intuito de se manter atualizado do valor da tarifa. 42 3.3. Arquitetura Com base no modelo proposto para o SGAMS foi desenvolvida a arquitetura do mesmo. O módulo de geração foi implementado utilizando a infraestrutura da nuvem privada da UFABC com a linguagem Java. Assim como o módulo anterior o módulo de distribuição foi implantado na infraestrutura de nuvem da UFABC usando o controlador de nuvem OpenNebula. Para prover os recursos autonômicos necessários para o módulo de distribuição, como: elasticidade integrada com balanceamento de carga e o monitoramento tanto das máquinas virtuais existentes quanto das aplicações sendo executadas nestas máquinas. Foram utilizados recursos do próprio sistema operacional Debian, para evitar que o Tomcat [6], servidor de aplicação que é responsável por disponibilizar os web services, fique indisponível. Para tal tarefa foi implementado um script que verifica se o mesmo está executando. No entanto para executar este script é utilizado cron job, este possui como funcionalidade que o agendamento de tarefas seja para uma determinada data ou repetido a cada determinado período. Por último será utilizado o PlanetLab (2.1.3.4) como um exemplo similar a nuvem comunitária para o módulo cliente, onde cada máquina representa um conjunto de consumidores de energia. Figura 9 – Estrutura do XML de controle do módulo de distribuição e geração Para prover a comunicação entre cada módulo será utilizado o conceito de Web Service utilizando o protocolo SOAP [17]. Os dados transmitidos entre os módulos empregam a estrutura de XML onde contém informações de controle (Figura 9). Tal XML possui o período de duração da simulação, além dos dados necessário sobre as fontes utilizadas e o mínimo e 43 máximo de carga a ser gerada em cada uma delas. O módulo cliente por meio do Apache ODE [5] realizou as requisições para a VM controle e esta tem como responsabilidade efetuar o balanceamento de carga entre as diversas VMs existentes para a elasticidade. Todo o ambiente proposto é virtualizado, desde os clientes no PlanetLab às máquinas virtuais na nuvem privada da UFABC. Para tanto a Tabela 2 apresenta as configurações de hardware das máquinas do ambiente utilizado nos experimentos. Tabela 2 – Lista dos recursos computacionais das máquinas utilizadas no ambiente Identificação CPU Memória Disco Rígido Quantidade Servidor Intel E1230 3.20 12 GB 1 TB 2 2 GB 10 GB 1 256 MB 2 GB Depende do GHz Máquina virtual 1 core virtual de controle processamento Máquina virtual 1 core virtual de módulo processamento limiar para a distribuição elasticidade Máquina virtual 1 core virtual de 1 GB 10 GB 1 módulo geração processamento Cliente Varia de acordo Varia de acordo Varia de acordo 100 PlanetLab com o host com o host com o host 44 Capítulo 4 Metodologia Neste capítulo, é descrita a metodologia utilizada na pesquisa, visando a uma melhor apresentação de seu desenvolvimento, tem suas seções subdivididas de maneira evolutiva, assim, demarcando as fases do trabalho. Na seção 4.1 discutimos como foi realizada a coleta nos módulos clientes e distribuição do SGAMS. Na seção 4.2 detalha-se o cenário utilizado nos experimentos com e sem cloudburst. Na seção 4.3 são mostrados os fatores e níveis variados nos experimentos. Na seção 4.4 são fixadas as métricas utilizadas para avaliação dos resultados obtidos. E por fim, na seção 4.5 são citadas as ferramentas que auxiliaram o desenvolvimento do projeto. 4.1. Processo de coleta nos módulos cliente e distribuição do SGAMS A identificação dos limiares para efetuar a elasticidade positiva e negativa é de suma importância para o ambiente de Smart Grid. Tendo em vista que a escolha errada desses parâmetros ocasionará a criação de uma nova VM antes do necessário, consequentemente o custo com ambiente computacional irá aumentar. O contrário irá resultar em aumento no tempo de resposta das requisições, sendo assim geraria queda na qualidade do serviço prestado. Com intuito de definir os melhores parâmetros para serem utilizados na realização da elasticidade, são coletados diversos dados em diferentes máquinas virtuais visando elucidar o comportamento do tempo de resposta durante os experimentos. Entre os dados coletados os que apresentam maior relevância são - Tabela 3: os tempos de respostas das requisições oriundas dos clientes do PlanetLab, quantidade de requisições por segundo que chegam na máquina virtual controle para serem redirecionados às VMs com o módulo de distribuição e a quantidade de clientes do PlanetLab alocados para o experimento a cada 10 segundos, o intervalo de alocação foi definido com o intuito de reduzir o tempo total do experimento sem comprometer o comportamento de tempo de resposta das requisições. Pois, somente os tempos de respostas das requisições não gerariam todas as informações necessárias para explicar o comportamento dos tempos de respostas no decorrer do experimento. 45 Tabela 3 – Dados gerados para interpretação dos tempos de respostas Log Máquina Virtual Descrição Tempo de resposta da Cliente PlanetLab Tempo necessário para a requisição requisição SOAP ser atendida pelo módulo Distribuição Quantidade de requisições Balanceador de carga e Quantidade de requisições monitorador simultâneas existentes a cada segundo Quantidade de VMs Balanceador de carga e Quantidade de VMs monitor alocadas na infraestrutura da UFABC para elasticidade Número de clientes Amazon WS Número de nós do PlanetLab alocados para geração de carga Utilização de CPU Utilização de Memória Máquinas virtuais para Uso da CPU durante todo o elasticidade experimento VMs para a elasticidade Uso de memória durante todo o experimento Para garantir a integridade dos dados gerados no decorrer do experimento, se faz necessária a sincronização de todas as máquinas virtuais utilizadas no experimento. Pois, cada dado armazenado está vinculado a uma timestamp, número referente ao momento em que o dado foi gerado, tendo em vista que devemos analisar as informações provenientes dos dados estando no mesmo período de tempo. No entanto, sincronizar todos os clientes do PlanetLab apresentou-se como uma tarefa muito dispendiosa. Tendo em vista que cada cliente pode possuir uma distribuição do OpenSuse diferente, isso implica em repositórios de aplicativos diferentes. E nem todos os repositórios possuíam o pacote necessário e suas dependências para a sincronização dos clientes, no caso o ntp-date, e os que possuíam poderiam apresentar problemas no momento da instalação, impossibilitando assim a sincronização dos clientes com as VMs nos servidores da UFABC e com a máquina virtual na Amazon WS. Para contornar tal problema foi implementado um aplicativo em Java que a partir das timestamp armazenadas de cada um dos clientes do PlanetLab comparado com a timestamp na máquina virtual controle é 46 feito uma diferença de tempo, assim garantindo a integridade de todos os dados gerados nos experimentos. Para analisar o tempo de resposta de cada cliente do PlanetLab após cada experimento, é feito o download de cada arquivo de log que contém o tempo de resposta vinculado ao momento em que a requisição foi gerada. Desta forma ao final do download de todos os arquivos de cada um dos clientes, os tempos de respostas juntamente com os demais logs gerados tanto na própria máquina virtual controle, quanto com log oriundo da alocação dos clientes gerado na VM criada na Amazon WS, são processados com intuito de serem sincronizados. Em seguida todos os tempos de resposta são ordenados pelo momento em que os dados foram gerados, sendo assim possível calcular a média, mediana e o percentil 90 do acumulado de 10 segundos. Ao final do processamento de todos os logs torna-se possível analisar as informações provenientes de cada experimento. 4.1.1. Cenário Com o objetivo de identificar os melhores valores para os limiares positivos e negativos para alocar e liberar, respectivamente, as VMs para disponibilizar o módulo de distribuição com um tempo de resposta adequado. Foram realizados experimentos preliminares com intuito de definir qual seria o tempo de resposta mínimo – TRm, além de determinar qual seria a quantidade máxima de requisições simultâneas que uma VM criada para a elasticidade suportaria antes que o tempo de resposta ultrapasse o limite de 10 segundos. Para responder tais questões dois experimentos distintos foram executados. O primeiro tinha como foco determinar o TRm, sendo assim foram alocados 100 clientes do PlanetLab um após o outro sem que houvesse mais que um cliente gerando requisições simultaneamente. Este experimento foi utilizado também para identificar quais clientes do PlanetLab apresentavam tempos de resposta inferiores a 10 segundo. Pois, alguns clientes demonstravam possuir recursos de rede insuficientes para a realização dos experimentos, resultando assim em outliers, alguns como TRms acima de 400 segundos. O segundo experimento tinha como foco determinar a quantidade máxima de requisições uma VM conseguiria atender antes do TR superar o limite de 10 segundos. Para isso 100 clientes do PlanetLab foram alocados a cada 10 segundos gerando requisições simultâneas. 47 4.1.1.2. Arquitetura utilizando a nuvem privada sem cloudburst Como é observado na Figura 10, serão utilizados diferentes ambientes de nuvem para executar o SGAMS. Com intuito de avaliar o uso do conceito de elasticidade na nuvem privada, foi realizado um estudo de caso empregando o SGAMS na qual o módulo de distribuição está implantado na infraestrutura da UFABC. Esta avaliação elucidará a relevância dos limiares e uso da histerese para proporcionar estabilidade do tempo de resposta das requisições. Além de apresentar a importância do uso da computação autonômica para prover autogerenciamento em um ambiente de nuvem computacional. Tais resultados poderão ser utilizados para outras aplicações que visam identificar métricas e parâmetros para a realização e liberação da elasticidade. Figura 10 – Arquitetura do SGAMS sem cloudburst Com o intuito de descrever a: classificação, nível, tecnologia e a qual módulo estes recursos estão alocados, a Tabela 4 foi criada com tais informações. Tabela 4 – Estrutura da nuvem sem utilização da técnica de cloudburst Classificação Nível Tecnologia Módulo Privada IaaS Xen Hipervisor Geração Privada IaaS OpenNebula Distribuição Comunitária IaaS PlanetLab Cliente 48 4.1.2. Arquitetura utilizando a nuvem privada com cloudburst Para analisar o comportamento do tempo de resposta utilizando a técnica de cloudburst, foi usado o SGAMS com a arquitetura que emprega o uso da nuvem pública da Amazon WS quando os recursos da nuvem privada exauriram (Figura 11). Tal experimento proporciona elucidar a viabilidade de uso de diferentes tipos de nuvem para compor um ambiente híbrido para atender as requisições existentes em Smart Grid. Nesta avaliação foram utilizados diferentes tipos de instâncias na Amazon a fim de identificar qual apresenta melhor custo benefício. Tendo em vista que o uso de recursos da nuvem pública reflete no aumento do investimento na infraestrutura computacional para atender as requisições. Figura 11 – Arquitetura do SGAMS com cloudburst Para descrever o ambiente apresentado em Figura 11 é observado Tabela 5, onde são detalhadas quais classificações de nuvem, nível de utilização, tecnologia empregada e a qual módulo está vinculado o ambiente usado para implantar o SGAMS. Tabela 5 – Estrutura da nuvem com utilização da técnica de cloudburst Classificação Nível Tecnologia Módulo Privada IaaS Xen Hipervisor Geração Privada IaaS OpenNebula Distribuição Comunitária IaaS PlanetLab Cliente Pública IaaS Amazon WS Distribuição 49 4.2. Fatores e níveis O objetivo de determinar os melhores limiares para efetuar a elasticidade é o de reduzir o custo com a infraestrutura de nuvem, seja ela pública ou privada, sem comprometer a qualidade de experiência do usuário com o serviço provido. Para tanto foram realizados experimentos que consistiam em alocar 100 clientes configurados no PlanetLab para gerar requisições seguindo a distribuição de Poisson, esta distribuição define o intervalo entre as chegadas das requisições, para uma máquina virtual com o Apache, doravante referenciada como VM controle. Está máquina virtual controle situada na nuvem privada da UFABC tem como responsabilidade o redirecionamento das requisições para as VMs com o módulo de distribuição, na nuvem privada da UFABC ou na nuvem pública da Amazon WS, e efetuar o monitoramento dessas VMs. Tal função se faz necessária para identificar o momento que deverá ser realizada à elasticidade positiva ou negativa. O conceito de histerese empregado nos experimentos foi o de fazer com que os limiares tanto positivo quanto negativo fossem superados ao menos duas vezes seguidas, para que fosse realizada a elasticidade. Quando o valor para histerese for zero, os limiares só precisavam ser superados uma vez e após isso já era efetuada a elasticidade. Tal conceito foi utilizado como um fator devido à realização desnecessária da elasticidade para atender a um pico de consumo. Sendo assim após o pico seria efetuada a elasticidade negativa, no entanto o custo de se fazer a elasticidade pode ser muito alto para atender a apenas um pico. Neste cenário a histerese se enquadra para evitar tal fato. 4.2.1. Limiares utilizados nos experimentos sem cloudburst Para os experimentos que utilizaram apenas a nuvem privada da UFABC foram definidos os limiares positivo e negativos para efetuar a elasticidade (Tabela 6), além do emprego de histerese. Tais limiares foram escolhidos com o intuito de apresentar o impacto de sua variação para a realização da elasticidade. Tabela 6 – Lista de fatores e níveis utilizados nos experimentos sem cloudburst Fatores Níveis Limiar positivo 250 300 350 Limiar negativo 100 125 150 Histerese Não Sim 50 Outros experimentos adicionais foram realizados a fim de elucidar questões que surgiram após análise dos resultados provenientes dos limiares da (Tabela 6). Os limiares para elasticidade positiva e negativa usando a quantidade de requisições para os experimentos adicionais estão Tabela 7. Estes não foram combinados com os demais limiares, sendo assim são experimentos únicos que visam apresentar diferenças entre os demais resultados obtidos. Tabela 7 – Lista de fatores e níveis dos experimentos adicionais sem cloudburst Fatores Níveis Limiar positivo 400 600 Limiar negativo 125 150 4.2.2. Limiares utilizados nos experimentos com cloudburst Para os experimentos que empregavam a técnica de cloudburst foi usado o limiar positivo e negativo de 350 e 150 respectivamente, pois estes limiares apresentaram resultados satisfatórios para a elasticidade utilizando apenas a nuvem privada, sendo assim ao empregarmos estes mesmos limiares para os experimentos com cloudburst as variações nos tempos de respostas seriam causadas apenas pelo tipo de VM escolhida na Amazon WS. No entanto a variação se deu no tipo de instância na Amazon WS, foram escolhidos três tipos distintos de máquinas virtuais: large, medium e small, os recursos computacionais de cada um dos tipos supracitados podem ser visto na Tabela 1. 4.3. Métricas Para análise do comportamento dos tempos de resposta dos clientes que geram carga a partir do PlanetLab, foram definidas métricas a serem utilizadas. Tempo de resposta: intervalo de tempo entre o cliente emitir uma requisição e receber a resposta do servidor. São calculadas três estatísticas (média, mediana e percentil 90) de todos os tempos de resposta a cada intervalo de 10 segundos. Recursos computacionais: comprometimento de recursos computacionais pelo provedor de nuvem, medido através do número de máquinas virtuais alocadas para o usuário. Carga de trabalho: número de requisições simultâneas existente na VM controladora. Nós do PlanetLab: número de nós do PlanetLab alocados para gerar a carga de trabalho, onde cada nó no PlanetLab é usado para modelar o comportamento de um determinado 51 número de clientes (residências) do Smart Grid (o valor exato depende de cada ambiente). Por exemplo, cada nó envia uma requisição ao servidor a cada 3 segundos. Se considerarmos um ambiente de Smart Grid onde cada cliente envia uma requisição a cada 2 minutos, então temos uma relação de 1:40, ou seja, um nó PlanetLab representa 40 clientes Smart Grid. Utilização de CPU: média de utilização de CPU de todas as máquinas virtuais alocadas, calculada a cada 30 segundos. Utilização da memória: média de utilização de memória de todas as máquinas virtuais alocadas, calculada a cada 30 segundos. Tais métricas juntas viabilizam uma análise minuciosa do comportamento dos TRs no decorrer do experimento. O cálculo da média, mediana e percentil 90, proporciona a identificação de outliers. Sendo assim ocorrendo alguma instabilidade nos clientes alocados para a realização do experimento, esta será facilmente identificada. A partir da quantidade de clientes juntamente com a quantidade de requisições simultâneas existentes para a geração de carga podemos comprovar a necessidade ou não da realização da elasticidade. O número de VMs criadas para a elasticidade é o reflexo das duas métricas citadas anteriormente. A métrica escolhida para efetuar a elasticidade, positiva e negativa, foi a quantidade de requisições simultâneas. Sendo esta dividida pelo número de máquinas virtuais existentes para elasticidade, desta forma obtemos a quantidade de requisições por VM. Tal métrica foi escolhida diante da comparação com a utilização de CPU e memória. O uso de CPU mostrouse ser uma métrica muito sensível a menor oscilação na quantidade de requisições. Já utilização de memória apresentou diversos problemas decorrentes da quantidade limitada de memória alocada a cada VM para elasticidade, exatamente de 256 MB. Outra motivação para ser utilizada a quantidade de requisições como parâmetro para a elasticidade é que por essa ser uma métrica mais direta que as supracitadas apresenta maior precisão para esta finalidade. 4.4. Ferramentas utilizadas Para a realização dos experimentos foram utilizadas diversas ferramentas com finalidades distintas, para tanto pode ser observado na Tabela 8. Tabela 8 – Lista de ferramentas com funcionalidades e emprego Nome Funcionalidade Localização 52 Xen OpenNebula Monitor Scripts Java Hipervisor para o gerenciamento das máquinas virtuais Controlador de nuvem utilizado para prover o gerenciamento de alto nível das VMs Aplicativo escrito em Java para executar scripts de monitoramento Diversos scripts foram implementados utilizando a linguagem Shell Script para efetuar desde a verificação da necessidade de realizar elasticidade à alocação dos clientes do PlanetLab para a geração de carga Desenvolvimento do ambiente de Smart Grid Nuvem privada da UFABC Nuvem privada da UFABC Nuvem privada da UFABC Nuvem privada da UFABC, nuvem pública da Amazon WS, clientes do PlanetLab Nuvem privada da UFABC, Amazon WS 4.5. Experimentos Para a realização dos experimentos foi definido um intervalo fixo de 60 segundos entre o início de cada ciclo de monitoramento. Cada experimento apresenta um tempo médio de aproximadamente 45 minutos, no entanto são necessários mais 15 minutos para fazer download dos logs em todos os nós do PlanetLab, ao todo foram executadas 230 horas de experimentos. Diversos problemas ocorreram ao utilizar a nuvem comunitária do PlanetLab, o principal motivo para esses problemas é a heterogeneidade dos servidores que compõem esta nuvem. Cada nó possui como distribuição base o OpenSuse, no entanto não é possível dizer qual versão da distribuição instada em cada nó até que seja criada uma máquina virtual e a partir desta seja verificada a versão usada. A variação das versões do sistema operacional resulta na mudança dos repositórios a serem utilizados para a instalação dos aplicativos. Para cada programa que fosse necessário instalar nos nós para a realização dos experimentos foi preciso a transferência do binário deste aplicativo e a instalação a partir do binário. Outro problema existente no PlanetLab é a variação dos recursos computacionais de cada nó na nuvem. Ao realizar experimentos preliminares para determinar o TRm foi possível constatar que 10% dos nós criados não possuíam recursos suficientes para executar os experimentos. Estes outliers foram responsáveis por prejudicar algumas amostras resultando em mais tempo de execução dos experimentos. 53 Capítulo 5 Resultados Os resultados a seguir são provenientes dos experimentos detalhados na seção anterior. Foram escolhidos alguns limiares dentre os utilizados nos experimentos, para mostrar o impacto dos mesmos no tempo de resposta das requisições. Todos os resultados são apresentados em oito grupos de gráficos distintos, alguns visam apresentar os resultados de uma única amostra de experimento e outros a média das amostras. Os gráficos do tipo (a) de uma única amostra representa o comportamento dos tempos de respostas em segundos durante todo o experimento, já (b) representam a carga de trabalho gerada pelos nós no PlanetLab. Em (c) é apresentado o número de máquinas virtuais existentes para a elasticidade, no (d) é mostrado o número de nós no PlanetLab alocados para gerar as requisições. Tanto em (e) quanto em (f) são mostradas as médias da porcentagem de utilização de memória e CPU, respectivamente, das máquinas virtuais para elasticidade. Esses gráficos são específicos para representar apenas uma iteração de cada experimento. No entanto, foram realizadas dez iterações com intuito de verificar a sua relevância, pois uma única amostra não é representativa. Para tanto os últimos dois gráficos são das médias dos tempos de respostas e dos recursos computacionais alocados para elasticidade. Ambos os gráficos utilizam o intervalo de confiança de 99%. Os gráficos de médias do tipo (a) representam a média dos tempos de respostas. Enquanto em (b) a média do número de máquinas virtuais criadas nos experimentos. Já em (c) é observada a frequência dos tempos de respostas de todas as amostras para o determinado experimento. 5. Experimentos sem histerese Para mostrar o menor tempo de resposta possível foram escolhidos os limiares com menor valor – ver Tabela 6, pois com estes a elasticidade será realizada antes, garantido assim mais estabilidade durante todo o experimento. Para comprovar esta afirmação pode ser observada na Figura 12(a), onde é constatado que durante todo o experimento a média dos TRs não ultrapassou 3 segundos mesmo quando a quantidade de requisições chegou perto das 4.000 requisições simultâneas (Figura 12 (b)). Foram necessárias ao todo 12 máquinas virtuais na nuvem privada da UFABC (Figura 12(c)) para manter os tempos de resposta dentro do limite aceitável de 10 segundos. 54 Como esperado a quantidade de requisições Figura 12 (b) seguiu o mesmo padrão de alocação dos nós do PlanetLab Figura 12(d). A média de utilização de memória Figura 12(e) permanece entre 60% e 70% durante grande parte do experimento. Este comportamento ocorre devido a diversos fatores, dentre eles podemos citar: para disponibilizar o serviço é utilizado o Tomcat, um servidor web Java mais precisamente um container de servlets. Este container aloca a memória necessária para atender as requisições, no entanto mesmo após o termino da requisição este não libera toda a memória alocada. Sendo assim a única forma de saber precisamente quanto de memória está realmente ocupada seria necessário o restart do Tomcat. Outro fator impactante é a quantidade de memória alocada as máquinas virtuais exatamente 256 MB. Tal valor foi definido propositalmente com o intuito de ser necessária a realização da elasticidade para manter os tempos de resposta dentro do limite estabelecido. Já o uso de CPU Figura 12(f) varia durante todo o experimento, mostrando assim não ser um bom parâmento para a realização da elasticidade. Pois a ocorrência de qualquer pico de utilização pode gerar a criação de uma nova VM sem a sua real necessidade, a utilização de histerese neste caso pode 7 Média 6 Mediana Percentil 90 Segundos 5 4 3 2 Número de requisições ser benéfica. 1 0 Minutos Minutos (a) Tempo de Resposta 100 12 75 Número de nós Número de máquinas virtuais 15 (b) Carga de trabalho 9 6 50 25 3 0 0 Minutos Minutos 55 (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 90 80 70 60 50 40 30 20 10 0 (%) (%) 100 90 80 70 60 50 40 30 20 10 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 12 – Experimento com limiares positivo e negativo 250 e 100 respectivamente e sem histerese. Com intuito de elucidar os limiares mais adequados para obter os tempos de respostas dentro do limite de 10 segundos, mas sem a necessidade de criar tantas máquinas virtuais como no experimento anterior, foi definida a utilização dos limiares positivos e negativos 400 e 125 respectivamente. Observando a Figura 13(a) fica evidente que com esses limiares existe instabilidade, porém somente no início do experimento. Tal comportamento é consequência no atraso para realizar a elasticidade, como no início só existe apenas uma máquina virtual para disponibilizar o serviço, esta fica sobrecarregada de requisições. Porém à medida que outras máquinas virtuais são criadas o atraso na criação de mais uma VM não apresenta reflexo nos tempos de resposta. Com esses limiares a média dos TRs assim como no experimento anterior ficou abaixo dos 3 segundos. O número de requisições se aproximou também das 4.000 requisições simultâneas (Figura 13(b)). No entanto o número de VMs para a elasticidade foi menor alcançando 10 máquinas simultâneas (Figura 13(c)). Tal resultado mostra que caso uma instabilidade inicial for admissível para o ambiente é mais viável a utilização desses limiares aos do primeiro experimento. A alocação dos nós do PlanetLab (Figura 13(d)) se dá de forma linear, no entanto para liberar o nó da geração da carga existe um atraso. Este é devido à necessidade de matar o processo do script responsável pela geração da carga. Alguns nós podem requerer mais tempo que outros clientes ocasionando assim a diferença da duração de cada experimento. A instabilidade existente no início do gráfico do tempo de resposta é observada também na média de utilização de memória (Figura 13(e)), após a média se estabilizar os TRs seguem 56 o mesmo comportamento. No entanto a média de utilização de CPU Figura 13(f) não seguiu o mesmo desempenho, mostrando ser bastante sensível consequentemente instável. 70 Média 60 Segundos Percentil 90 40 30 20 Número de requisições Mediana 50 10 0 Minutos Minutos (a) Tempo de Resposta (b) Carga de trabalho 100 8 Número de nós Número de máquinas virtuais 10 6 4 75 50 25 2 0 0 Minutos Minutos (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 100 90 90 80 80 70 60 60 (%) (%) 70 50 50 40 40 30 30 20 20 10 10 0 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 13 – Experimento com limiares positivo e negativo 400 e 125 respectivamente e sem histerese. 57 Os últimos limiares escolhidos para mostrar instabilidade durante a maior parte do experimento foram 600 e 150 para elasticidade positiva e negativa respectivamente. Ao utilizar esses limiares os tempos de resposta ficaram acima dos trinta segundos (Figura 14(a)). No entanto, próximo aos 30 minutos de experimento o tempo de resposta cai para um nível aceitável, abaixo de 10 segundos. Tal fato acorre devido ao número de VMs já existentes para atender as requisições e a quantidade de requisições Figura 14(b) neste momento também já estava reduzindo. Observa-se que ao final do experimento foram criadas apenas nove máquinas virtuais Figura 14(c) para atender todas as requisições, fato este que comprometeu o tempo de resposta das requisições durante a alocação dos nós do PlanetLab Figura 14(d). Tais clientes foram alocados sem a ocorrência de atrasos, porém a liberação não teve o mesmo êxito, pois é possível observar ao menos um ponto onde o cliente apresentou atraso para a sua liberação. Este fato reflete diretamente no tempo de duração do experimento, comparando com os dois antecessores este foi o que apresentou maior duração cerca de 45 minutos. A instabilidade do experimento não ficou apenas nos tempos de respostas, este comportamento também pode ser visto nos gráficos de utilização de CPU Figura 14(f) e memória Figura 14(e). Sendo este último 120 Média Mediana Percentil 90 100 Segundos 80 60 40 Número de requisições interessante devido à estabilidade que o mesmo mostrou nos experimentos anteriores. 20 0 Minutos Minutos (a) Tempo de Resposta (b) Carga de trabalho 58 100 9 75 7 Número de nós Número de máquinas virtuais 8 6 5 4 3 50 25 2 1 0 0 Minutos Minutos (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 100 90 80 70 60 50 40 30 20 10 0 90 80 70 (%) (%) 60 50 40 30 20 10 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 14 – Experimento com limiares positivo e negativo 600 e 150 respectivamente e sem histerese. Como pode ser observada na Figura 15(a) a instabilidade é presente no terceiro e último experimento. Sendo com o limiar de 600 para elasticidade positiva é explicado com a oscilação dos tempos de resposta no início do experimento que chegam a 100 segundos e ao final do experimento não passam de 10 segundos. Já para o gráfico de tempos de respostas Figura 15(b), apesar de o primeiro experimento apresentar o tempo de respostas mais baixo, foi o que demonstrou maior oscilação no número de máquinas virtuais criadas para a elasticidade refletindo no aumento do intervalo de confiança. Os experimentos com limiares positivos iguais apresentam comportamento parecido em se tratando de alocação de recursos computacionais. Ao observar Figura 15(c) é possível constatar que mais de 90% dos tempos de resposta de todas as amostras dos experimentos utilizando a nuvem privada da UFABC foram menores que 4 segundos. Este resultado implica dizer que mesmo utilizando limiares ruins esta abordagem apresentou-se ser viável para ser utilizada. 59 14 Número de máquinas virtuais 25 12 20 Segundos 10 15 10 5 0 8 6 4 2 0 Experimentos Experimentos Histograma e CDF (a) Média dos tempos de resposta (b) Média dos recursos computacionais 90 1 80 0,9 70 0,8 0,7 60 0,6 50 0,5 40 0,4 30 0,3 20 0,2 10 0,1 0 0 2 4 7 9 12 14 17 20 22 25 Mais Tempos de Resposta (c) Histograma e CDF dos tempos de resposta Figura 15 – Médias dos tempos de resposta e do número de máquinas virtuais existentes para os experimentos sem histerese. 5.2. Experimentos com histerese Os experimentos com histerese visavam controlar a criação e liberação de máquinas virtuais diante de um pico ou vale de requisições. No entanto, como pode ser observada na Figura 16(a), tal técnica não demonstrou o resultado esperado. A adição de um ciclo de monitoramento no atraso na criação da VM resultou em instabilidade do tempo de resposta das requisições. O número de requisições (Figura 16(b)) geradas neste experimento foi próximo dos experimentos anteriores, logo este não foi o motivo da oscilação nos tempos de resposta. O número de máquinas virtuais (Figura 16(c)) criadas para a elasticidade foi idêntica ao experimento com limiares 400 e 125, positivo e negativo respectivamente. Porém no experimento anterior os resultados foram satisfatórios. A utilização de memória (Figura 16(e)) apresentou maior oscilação no mesmo momento em que os tempos de resposta tiveram o mesmo comportamento. Já a utilização de CPU, Figura 16(f), esteve próxima ao máximo até 60 os 20 primeiros minutos do experimento, momento este em que os TRs estavam acima do limite de 10 segundos. 120 Média 100 Segundos Percentil 90 60 40 20 Número de requisições Mediana 80 0 Minutos Minutos (a) Tempo de Resposta (b) Carga de trabalho 100 8 75 Número de nós Número de máquinas virtuais 10 6 4 50 25 2 0 0 Minutos Minutos (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 100 90 90 80 80 70 (%) (%) 70 60 50 60 50 40 40 30 30 20 20 10 10 0 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 16 – Experimento com limiares positivo e negativo 300, 125 respectivamente e com histerese. 61 Este experimento tem como objetivo verificar a diferença que a histerese causa no tempo de resposta da requisição. Comparando a Figura 17(a) com a Figura 16(a) podemos observar que o primeiro apresenta instabilidade apenas no começo. Já no segundo os tempos de resposta ficam acima dos 10 segundos em grande parte do experimento. Com esses limiares a utilização de histerese afetou negativamente os TRs em comparação com o mesmo experimento sem a histerese. O número de requisições Figura 17(b) foi ligeiramente menor devido à aleatoriedade entre o intervalo das requisições. No entanto esta métrica não foi fator determinante para a diferença entre os tempos de resposta durante todo o experimento. O número de máquinas virtuais Figura 17(c) é notoriamente menor, tendo em vista que três VMs a menos para fazer a elasticidade irá causar sobrecarga no ambiente. A alocação dos nós do PlanetLab Figura 17(d) não influenciou nos resultados, pois foram utilizados 100 clientes em todos os experimentos. Mesmo existindo alguns clientes que vieram a causar problemas na geração de carga, estes não poderiam prejudicar severamente os tempos de resposta. Ao comparar os gráficos de utilização de memória Figura 17(e) com o do experimento anterior, podemos identificar um padrão de estabilidade no experimento sem histerese. No entanto a CPU Figura 17(f) oscilou em ambos os experimentos, mas na iteração com histerese a variação de utilização foi notoriamente maior. 70 Mediana Segundos 50 Percentil 90 40 30 20 Número de requisições Média 60 10 0 Minutos (a) Tempo de Resposta Minutos (b) Carga de trabalho 62 100 Número de máquinas virtuais 12 10 Número de nós 75 8 50 6 4 25 2 0 0 Minutos Minutos (c) Recursos Computacionais 100 90 80 70 60 50 40 30 20 10 0 (d) Número de clientes (%) (%) 100 90 80 70 60 50 40 30 20 10 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 17 – Experimento com limiares positivo e negativo 300, 125 respectivamente e sem histerese. Como pode ser observado na Figura 18(a), todos os experimentos independentemente dos limiares diferentes com histerese apresentaram tempos de resposta insatisfatórios. Outro fator impactante é a oscilação no intervalo de confiança, tal fato comprova a instabilidade que a histerese adiciona ao ambiente analisado. A quantidade de máquinas virtuais criadas Figura 18(b) é próxima para todos os limiares, ao contrário do comportamento dos experimentos sem histerese Figura 15(a). Ao analisarmos Figura 18(c) fica evidente que menos de 1% dos tempos de resposta utilizando histerese se aproxima do limite de 10 segundos. Desta forma é inviabilizado o uso da técnica de histerese para os limiares utilizados nestes experimentos. 63 45 12 40 10 Número de máquinas virtuais 35 30 Segundos 25 20 15 10 5 0 (a) Média dos tempos de resposta 8 6 4 2 0 (b) Média dos recursos computacionais 35 1 0,9 30 Histograma e CDF 0,8 25 0,7 0,6 20 0,5 15 0,4 0,3 10 0,2 5 0,1 0 0 11 16 21 26 30 35 40 45 50 Mais Tempo de Resposta (c) Histograma e CDF dos tempos de resposta Figura 18 – Média do tempo de resposta e número de máquinas virtuais com histerese. 5.3. Experimentos com Cloudburst Os experimentos com cloudburst visam elucidar não somente o comportamento do tempo de resposta utilizando um ambiente de nuvem híbrida, mas como também a influência que os diferentes tipos de instâncias provocam no comportamento dos TRs. Para tanto, parte das máquinas virtuais criadas para elasticidade utilizou a infraestrutura da nuvem privada da UFABC e após o limite de oito VMs passaram a ser criadas na nuvem pública da Amazon WS utilizando o serviço EC2. Como já foi descrito em Tabela 1 variam os recursos computacionais de cada tipo de instância, sendo assim escolhemos as que seriam relevantes para serem analisadas. Como pode ser observado na Figura 19(a) fica evidente que os tempos de respostas ficam instáveis no momento em que as novas máquinas virtuais são criadas na Amazon. Tal 64 comportamento permanece até o momento em que estas VMs são enfim liberadas. Sendo assim podemos afirmar que realizar cloudburst com instâncias do tipo small não será satisfatório, pois este irá causar instabilidade para atender as requisições. Tanto o número de requisições (Figura 19(b)) como a alocação e liberação dos nós do PlanetLab Figura 19(d) não foram responsáveis para instabilidade existente no experimento, tendo em vista que ambos foram similares aos experimentos já apresentados. Ao observamos a Figura 19(c) e compararmos com a Figura 17(d) podemos afirmar que o número de máquinas virtuais criadas para elasticidade também não foi o motivo pela qual gerou a instabilidade. Desta forma é perceptível a razão pela qual ocorreu tal oscilação no tempo de resposta, os recursos computacionais das instâncias da Amazon WS não foram suficientes para suportar a carga gerada. Analisando os resultados de utilização de memória Figura 19(e) é visível o momento em que as VMs começam a ficar sobrecarregadas, pois esta situação encontra-se refletida principalmente entre os primeiros 20 e 30 minutos de experimento. No caso da CPU (Figura 19(f)) a instabilidade está presente em todos os momentos, mostrando que esta métrica é muito sensível a picos de utilização. 60 Média Mediana Percentil 90 Número de requisições 70 Segundos 50 40 30 20 10 0 Minutos Minutos (a) Tempo de Resposta (b) Carga de trabalho Amazon WS Número de máquinas virtuais 12 100 Nuvem Privada 10 Número de nós 75 8 50 6 4 25 2 0 0 Minutos Minutos 65 (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 90 90 80 80 70 70 60 60 (%) (%) 100 50 50 40 40 30 30 20 20 10 10 0 0 Minutos Minutos (e) Utilização de Memória (f) Utilização de CPU Figura 19 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo small. Neste experimento podemos observar uma notável diferença no comportamento dos tempos de resposta da Figura 20(a) em comparação com a Figura 19(b). Fica evidente que o incremento de recursos computacionais para cloudburst reflete diretamente na média dos TRs. Utilizando instâncias do tipo medium ao invés de small o custo com a infraestrutura de nuvem para disponibilizar os serviços dobram de valor, no entanto o resultado é notoriamente melhor. Durante todo o tempo de duração do experimento os tempos de respostas permaneceram estáveis e na média não ultrapassaram o tempo de 4 segundos independentemente da quantidade de requisições existentes Figura 20(b). Ao observar Figura 20(c) em comparação com Figura 19(c) fica evidente que a grande diferença entre os recursos computacionais de cada um dos tipos de instâncias influenciaram no tempo de resposta. Pois no experimento anterior foram criadas três VMs na Amazon WS e mesmo assim houve grande oscilação na nuvem pública. Enquanto que no experimento utilizando instâncias do tipo medium foram criadas apenas duas VMs e os tempos de resposta permaneceram dentro do limite estabelecido como ideal. Os resultados de utilização tanto de CPU Figura 20(f) quanto de memória Figura 20(e) ficaram mais estáveis com este tipo de instância. Sendo este último reduzindo a carga em aproximadamente 20% quando novas máquinas virtuais começaram a ser criadas na Amazon WS. Este comportamento ocorreu pela quantidade de memória alocada às novas VMs em comparação com as que foram criadas na nuvem privada, na nuvem pública as máquinas virtuais possuíam 3,75 GB (Tabela 1) enquanto que na infraestrutura da UFABC apenas 256 MB. 66 Média Mediana Percentil 90 Número de requisições 6 Segundos 4 2 0 Minutos Minutos (a) Tempo de Resposta Amazon AWS Nuvem Privada 12 100 75 10 Número de nós Número de máquinas virtuais (b) Carga de trabalho 8 6 4 50 25 2 0 0 Minutos Minutos (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 90 90 80 80 70 70 60 60 (%) (%) 100 50 50 40 40 30 30 20 20 10 10 0 0 Minutos (e) Utilização de Memória Minutos (f) Utilização de CPU Figura 20 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo medium. Ao observarmos a Figura 21(a) em relação à Figura 20(a) fica evidente que o ganho com desempenho dos tempos de resposta é pequeno, em torno de 0,047 segundos na média. Tal 67 ganho não justifica dobrar o investimento em recursos computacionais de nuvem pública, fica claro que qualquer instância mais robusta que a medium apresentará um desempenho melhor. No entanto, algo que deve ser levado em consideração é a relação custo benefício, no caso, investimento em recurso computacional e diminuição/estabilidade dos tempos de resposta. Verificando o número de máquinas virtuais criadas para a elasticidade Figura 21(c) é possível constatar que não houve oscilação em relação ao experimento anterior. Assim como não houve uma brusca mudança no número de requisições geradas para o experimento Figura 21(b). Alguns nós no PlanetLab apresentaram a necessidade de mais tempo para liberar a geração de carga (Figura 21(d)), porém não influenciou no resultado. É possível identificar no resultado da média de memória Figura 21(e) em que momento começa e termina o cloudburst, o impacto do mesmo no experimento é notório. O mesmo comportamento ocorre com a CPU (Figura 21(f)), no entanto a estabilidade da memória não se repete nesta métrica. Média Mediana Percentil 90 Segundos 8 6 4 2 Número de requisição 10 0 Minutos Minutos (a) Tempo de Resposta Amazon AWS Nuvem Privada 12 Número de máquinas virtuais (b) Carga de trabalho 100 Número de nós 10 8 6 4 75 50 25 2 0 0 Minutos (c) Recursos Computacionais Minutos (d) Número de nós do PlanetLab 68 100 90 90 80 80 70 70 60 60 (%) (%) 100 50 50 40 40 30 30 20 20 10 10 0 0 Minutos (e) Utilização de Memória Minutos (f) Utilização de CPU Figura 21 – Experimento com limiares positivo e negativo 350, 150 respectivamente e com cloudburst utilizando VMs do tipo large. Com o intuito de verificar a diferença entre utilizar ou não a técnica de cloudburst para suprir a necessidade de recursos computacionais oriundas dos picos de consumo, foi realizado um experimento com os mesmos limiares, porém sem cloudburst usando somente a infraestrutura da nuvem privada da UFABC. Observando Figura 22(a) podemos constatar que o resultado obtido neste experimento é similar aos atingidos quando utilizamos a nuvem pública com as máquinas virtuais do tipo medium e large. Sendo assim podemos afirmar que a infraestrutura da Amazon WS pode fornecer um ambiente estável, contudo para que tal objetivo seja alcançado é necessário investir em máquinas virtuais com maior poder computacional. Analisando a métrica de número de VMs (Figura 22(b)), podemos observar que foram criadas menos máquinas virtuais que nos experimentos anteriores. Esse fato ocorre devido à quantidade de requisições (Figura 22(c)) neste experimento ser ligeiramente menor que os experimentos anteriores, em torno de 200 requisições a menos no ápice. A utilização de memória (Figura 22(e)) apresenta instabilidade no início do experimento devido a pouca quantidade de VMs para a elasticidade. Quando a carga começa a ser distribuída entre as diversas máquinas virtuais esta métrica tende a se estabilizar até o final do experimento. Assim como a utilização de memória a CPU Figura 22(f) inicia com alta porcentagem de uso e reduzindo à medida que novas VMs são criadas. No entanto, ao final do experimento volta a existir instabilidade devido à sensibilidade desta métrica. 69 Média Mediana Percentil 90 Número de requisições 9 Segundos 6 3 0 Minutos Minutos (a) Tempo de Resposta 100 12 75 9 Número de nós Número de máquinas virtuais (b) Carga de trabalho 6 50 3 25 0 0 Minutos Minutos (c) Recursos Computacionais (d) Número de nós do PlanetLab 100 100 90 80 70 60 50 40 30 20 10 0 90 80 70 (%) (%) 60 50 40 30 20 10 0 Minutos (e) Utilização de Memória Minutos (f) Utilização de CPU Figura 22 – Experimento com limiares positivo e negativo 350, 150 respectivamente e sem cloudburst. Como pode ser observado na Figura 23(a) comparando o comportamento do tempo de resposta em um ambiente controlado da infraestrutura da UFABC com o da nuvem pública da 70 Amazon WS, os resultados utilizando máquinas virtuais mais robustas são similares aos de sem cloudburst. No entanto, ao usar a infraestrutura da Amazon houve oscilação nos TRs refletindo no aumento do intervalo de confiança. Contudo as VMs com maior poder computacional demonstram ser mais estáveis que as demais. Comparando Figura 23(b) com Figura 15(a) podemos constatar que mesmo sem utilizar a técnica de cloudburst o número de máquinas virtuais criadas para os experimentos com limiar positivo de 350 requisições simultâneas é próximo com os resultados usando a nuvem pública da Amazon. Ao observarmos a Figura 23(c) é possível constatar a viabilidade do uso da técnica de cloudburst para os limiares adotados nos experimentos. Mais de 86% dos tempos de resposta ficaram abaixo de 4,4 segundos e 93% dentro do limite de 10 segundos. Número de máquinas virtuais 12 10 Segundos 8 6 4 2 0 13 12 11 10 9 8 (a) Média dos tempos de resposta (b) Média dos recursos computacionais 16 1 14 0,9 0,8 Histograma e CDF 12 0,7 10 0,6 8 0,5 6 0,4 0,3 4 0,2 2 0,1 0 0 2 5 8 11 14 Mais Tempo de Resposta (c) Histograma e CDF dos tempos de resposta Figura 23 – Média do tempo de resposta e número de máquinas virtuais sem histerese e com cloudburst. 71 5.4. Custo vs. Benefício Com intuito de identificar o melhor custo/benefício entre os diversos limiares utilizados nos experimentos, foi multiplicada a média do número de máquinas virtuais de cada experimento pela média do tempo de resposta do mesmo experimento (Figura 24). Desta forma, é obtido o valor que representa o custo/benefício dos limiares. Os resultados obtidos indicam que quanto menor o valor resultante desta multiplicação melhor são os limiares (Figura 24(a)). Sendo assim, dentre todos os limiares utilizados nos experimentos os melhores são: 125 e 350 para elasticidade negativa e positiva respectivamente. O que apresentou o resultado menos insatisfatório no experimento com histerese foi com os limiares, 150 e 250 para elasticidade negativa e positiva respectivamente (Figura 24(b)). No entanto mesmo assim estes limiares apresentaram resultados inviáveis. Pois ao compararmos os valores do custo benefício dos experimentos com os melhores resultados, temos com histerese 183 e o sem histerese 14. Fica evidente a discrepância entre os valores, sendo assim usar histerese não resultaria em bons tempos de respostas. Já para os experimentos com cloudburst a relação de custo benefício demonstra ser satisfatória, utilizando as instâncias do tipo medium e large (Figura 24(c)). No entanto, ao levarmos em consideração o preço de cada um dos tipos (Tabela 1), podemos afirmar que um ambiente usando apenas instâncias do tipo medium o valor a ser investido será 250 250 Tempo de resposta vezes número de máquinas vituais Tempo de resposta vezes número de máquinas vituais a metade do investimento caso o tipo de instância fosse a large. 200 200 150 150 100 100 50 0 Experimento (a) Experimentos sem histerese 50 0 Experimentos (b) Experimento com histerese 72 Tempo de resposta vezes número de máquinas vituais 250 200 150 100 50 0 Experimentos (c) Experimento com cloudburst Figura 24 – Relação de custo benefício baseado no número de máquinas virtuais e tempo de resposta 73 Capítulo 6 Conclusão e Trabalhos Futuros O conceito de computação em nuvem ganhou força no ambiente empresarial nos últimos anos devido às funcionalidades que o ambiente apresenta possui. Devido às suas características o ambiente de nuvem pareceu ser compatível com as necessidades de TIC em Smart Grid. Este trabalho avaliou a sua real capacidade de prover tal serviço, e principalmente a viabilidade do emprego da técnica de elasticidade. Foi constatado que a infraestrutura de nuvem, seja pública, privada ou híbrida, é capaz de atender as necessidades de Smart Grid para o cenário em que foi realizada a avaliação. O cálculo para identificar o melhor custo/benefício é um artifício importante para reduzir os investimentos no ambiente de nuvem. A utilização desta técnica representa que será utilizada a menor quantidade de máquinas virtuais para prover o serviço, sem comprometer a qualidade de experiência do usuário. A escolha das métricas corretas para a realização da elasticidade deve ser uma preocupação. Tendo em vista que ao considerar a utilização de CPU para este fim pode ocorrer instabilidade na criação e liberação das máquinas virtuais. Pois esta métrica em específico apresentou ser bastante sensível às oscilações, tal comportamento resultaria na execução da elasticidade de forma desnecessária. Para utilizar a nuvem pública para atender as requisições é necessário elucidar qual tipo de instância consegue atender as necessidades do negócio. Esta escolha resultará diretamente no investimento necessário no ambiente de nuvem pública. Não se deve escolher um tipo menos robusto apenas observando o quanto será investido. Pois esta pode não possuir os recursos computacionais necessários para disponibilizar os serviços resultando assim em degradação do serviço prestado. Ao analisar os controladores de nuvens privadas é possível identificar a necessidade de melhorarias para o desenvolvimento de todas as suas funcionalidades de um ambiente de nuvem. Até mesmo o OpenStack que é amparado por organizações como NASA e Rackspace necessita de severas melhorias. Outro fator a ser mencionado em uma infraestrutura de nuvem privada é a sua alta complexidade de configuração. Sendo assim resulta no aumento do investimento em profissionais para a sua manutenção. Ao comparamos os preços da utilização dos serviços das nuvens públicas existentes hoje com as necessidades de Smart Grid, podemos constatar que será preciso um alto investimento 74 para manter toda a infraestrutura na nuvem pública. Desta forma torna-se vantajoso utilizar o conceito de cloudburst para minimizar o uso da nuvem pública. A composição de nuvem privada com nuvem pública formando as nuvens híbridas demonstra ser capaz de obter o melhor custo/benefício. Pois estas possuem toda disponibilidade de recursos computacionais existentes na nuvem pública para atender apenas aos picos de consumo. Quanto o controle da infraestrutura da nuvem privada para a execução da carga média existente durante o dia. Foi possível constatar com os experimentos realizados, que no cenário avaliado a utilização da técnica de histerese para controlar a elasticidade resulta em instabilidade no ambiente, independentemente dos limiares usados para adicionar novas máquinas virtuais. Foi identificada que as instâncias do tipo medium apresentam o melhor custo benefício para a realização de cloudburst. Tendo em vista o tempo de resposta e o investimento em infraestrutura de nuvem pública. Ao analisar os resultados que utilizaram somente a nuvem privada da UFABC constatou-se que adotando os limiares 125, 400 para elasticidade negativa e positiva respectivamente, é possível obter, na média, tempos de resposta dentro do limite estabelecido de 10 segundos sem a necessidade de criar mais máquinas virtuais do que o necessário. Comparando os tempos de resposta obtidos nos experimentos da seção 5.1 com os da 5.3, é constatado que apesar do cliente não possuir o controle sobre a infraestrutura na nuvem pública, esta proporciona estabilidade suficiente para manter a qualidade de experiência do usuário. 6.1 Principais resultados Este trabalho apresentou o impacto da elasticidade no tempo de resposta em um ambiente de Smart Grid utilizando diferentes infraestruturas de nuvem. As variações dos valores de limiares de elasticidade bem como a escolha do tipo de instância na nuvem pública refletem diretamente tanto na qualidade de experiência do usuário quanto no valor investido em infraestrutura de nuvem. Determinar o melhor custo benefício entre investimento e qualidade de experiência é primordial para reduzir gastos sem impactar na qualidade do serviço prestado. Dentre os principais resultados pode-se destacar: A diferença entre as métricas para a realização da elasticidade, ao utilizarmos o número de requisições simultâneas foi possível controlar de forma mais estável a elasticidade. Evidenciamos que a métrica de utilização de CPU como parâmetro para a elasticidade pode causar instabilidade no ambiente devido a sua sensibilidade a oscilações. 75 A utilização de cloudburst para atender a picos de consumo apresenta resultado satisfatório diante da estabilidade que este demonstra ter quando escolhido tipos de instâncias mais robustas. Os controladores de nuvem privada ainda não possuem as funcionalidades necessárias para atender os requisitos de nuvem, em específico a elasticidade. Sendo essa necessária à implementação por parte do usuário para cada controlador. Proposta e avaliação de um ambiente de nuvem híbrida para o gerenciamento de Smart Grid, juntamente com as características da computação autonômica. Foi identificado o cálculo para definir o custo benefício entre investimento em recursos computacionais e qualidade de experiência do usuário. 6.2. Trabalhos Futuros Durante o desenvolvimento do trabalho foi observado a possibilidade de expansão do mesmo para diferentes vertentes. Com a análise dos resultados foi identificada a necessidade da execução de diferentes experimentos utilizando vários ambientes de nuvem. No entanto, estes não estavam presentes no escopo deste trabalho. Realizar a modelagem matemática do problema com intuito de identificar o ponto ótimo, onde apresenta o melhor custo benefício para a utilização da infraestrutura de nuvem. Executar os experimentos com diferentes configurações de máquinas virtuais na nuvem privada da UFABC. Verificar o impacto ao usar diferentes controladores de nuvem como: OpenStack, este atualmente em acessão. Efetuar experimentos utilizando a nuvem privada já sobrecarregada, com intuito de identificar comportamento anômalo neste cenário. Utilizar outro hipervisor para constatar a diferença de desempenho entre as diferentes tecnologias existentes. 76 Referências Bibliográficas [1] A. Kivity, Y. Kamay, D. Laor, U. Lublin and A. Liguori, kvm: the Linux Virtual Machine Monitor. In Linux Symposium, pages 225-230, 2007. [2] Amazon Elastic Compute Cloud. Disponível em: aws.amazon.com/ec2, acessado em: Junho de 2013. [3] Amazon Web Service. Disponível em: aws.amazon.com, acessado em: Junho de 2013. [4] Amazon CloudWatch. Disponível em: aws.amazon.com/pt/cloudwatch, acessado em: Junho de 2013. [5] Apache ODE. Disponível em: www.ode.apache.org, acessado em: Junho de 2013. [6] Apache Tomcat. Disponível em: www.tomcat.apache.org, acessado em: Junho de 2013. [7] Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R., Konwinski, A., Lee, G., Patterson, D., Rabkin, A., Stoica, I., Zaharia, M., “A View of Cloud Computing”, Communications of the ACM, 53(4), p. 50-58, Abril de 2010. [8] Arnold, G. W., “Challenges and Opportunities in Smart Grid: A Position Article”, Proceedings of the IEEE, 99(6), Junho de 2011. [9] Azevedo, E., Dias, C., Simões, R., Dantas, R. Sadok, D., Fernandes, S., Kamienski, C., “Nuvem Pública versus Privada: Variações no Desempenho de Infraestrutura para Elasticidade” Brazilian Symposium on Computer Networks and Distributed Systems, Maio de 2012. [10] Baker, J., Bond, C., Corbett, J., Furman, J., Khorlin, A., Larson, J., Leon, J-M., Li, Y., Lloyd, A., Yushprakh, V.. Megastore: Providing Scalable, Highly Available Storage for Interactive Services. In CIDR, pages 223–234, 2011. [11] Barcomb, K.E.; Humphries, J.W.; Mills, R.F.; , "A case for DoD application of public cloud computing services," MILITARY COMMUNICATIONS CONFERENCE, 2011 MILCOM 2011 , vol., no., pp.1888-1893, 7-10, Novembro de 2011. [12] Barham P., Dragovic B., Fraser K., Hand S., Harris T., Ho A., Neugubauer R., Pratt I., Warfiled A., “Xen and the art of virtualization”, SOSP '03 19th ACM symposium on Operating systems principles, Dezembro de 2003. [13] Birman, K. P., Ganesh, L., van Renesse, R., “Running Smart Grid Control Software on Cloud Computing Architectures”, Workshop on Computational Needs for the Next Generation Electric Grid, Cornell University, Abril de 2011. [14] Chaudhary, V.; Minsuk Cha; Walters, J.P.; Guercio, S.; Gallo, S.; , "A Comparison of Virtualization Technologies for HPC," Advanced Information Networking and 77 Applications, 2008. AINA 2008. 22nd International Conference on , vol., no., pp.861-868, 25-28, Março de 2008. [15] Chowdhury, N. M. K., Boutaba, R.. “Network Virtualization: State of the art and research challenges”. IEEE Communication Magazine, Julho de 2009. [16] F. Chang, J. Dean, S. Ghemawat, W. Hsieh, D. Wallach, M. Burrows, T. Chandra, A. Fikes, and R. Gruber. Bigtable: A Distributed Storage System for Structured Data. Proceedings of 7th Symposium on Operating System Design and Implementation (OSDI), page 205218, 2006. [17] F. Curbera et al., “Unraveling the Web Services Web,” IEEE Internet Computing, vol. 6, no. 2, pp. 86–93, 2002. [18] F. Leymann, “Cloud Computing: The Next Revolution in IT,” in Proc. 52th Photogrammetric Week. W. Verlag, , pp. 3–12 Setembro de 2009 [19] Fangxing Li; Wei Qiao; Hongbin Sun; Hui Wan; Jianhui Wang; Yan Xia; Zhao Xu; Pei Zhang; , "Smart Transmission Grid: Vision and Framework," Smart Grid, IEEE Transactions on , vol.1, no.2, pp.168-177, Setembro de 2010. [20] Force.com. Disponível em: www.force.com, acessado em: Junho de 2013. [21] Foster, I.; Yong Zhao; Raicu, I.; Shiyong Lu, "Cloud Computing and Grid Computing 360Degree Compared," Grid Computing Environments Workshop, 2008. GCE '08 , vol., no., pp.1,10, 12-16 Novembro de. 2008 [22] Galante, G.; de Bona, L.C.E., "A Survey on Cloud Computing Elasticity," Utility and Cloud Computing (UCC), 2012 IEEE Fifth International Conference on , vol., no., pp.263,270, 5-8 Novembro de 2012. [23] GoGrid. Disponível em: www.gogrid.com, acessado em: Junho de 2013. [24] Google App Engine. Disponível em: developers.google.com/appengine, acessado em: Junho de 2013. [25] Hassan, S.; Al-Jumeily, D.; Hussain, A.J., "Autonomic Computing Paradigm to Support System's Development," Developments in eSystems Engineering (DESE), 2009 Second International Conference on , vol., no., pp.273,278, 14-16 Dezembro de 2009. [26] Ipakchi, A., Albuyeh, F., “Grid of the Future: Are We Ready to Transition to a Smart Grid?”, IEEE Power & Energy Magazine, 7(2), p. 52 – 62, Março-Abril de 2009. [27] Jianfeng Yang; Zhibin Chen, "Cloud Computing Research and Security Issues," Computational Intelligence and Software Engineering (CiSE), 2010 International Conference on , vol., no., pp.1,3, 10-12 Dezembro de 2010. [28] Jianhua Che; Yong Yu; Congcong Shi; Weimin Lin, "A Synthetical Performance Evaluation of OpenVZ, Xen and KVM," Services Computing Conference (APSCC), 2010 IEEE Asia-Pacific , vol., no., pp.587,594, 6-10 Dezembro de. 2010. 78 [29] Keahey, K. “Nimbus: Open Source Infrastructure-as-a-Service Cloud Computing Software”, Workshop on adapting applications and computing services to multi-core and virtualization, CERN, Switzerland 2009. [30] Kephart, J. & Chess, D., “The Vision of Autonomic Computing”, IEEE Computer Magazine, 36(1), p. 41-50, Janeiro de 2003. [31] Khalidi, Y., "Building a Cloud Computing Platform for New Possibilities," Computer , vol.44, no.3, pp.29-34. Março de 2011. [32] Kim, H.; Parashar, M.; Foran, D.; Yang, L., “Investigating the Use of Autonomic Cloudbursts for High-Throughput Medical Image Registration”, 10th IEEE/ACM International Conference on Grid Computing, Outubro de 2009. [33] KVM. Disponível em: linux-kvm.org, acessado em: Junho de 2013. [34] L. Yu and et al., “Harnessing parallelism in multicore clusters with the all-pairs, wavefront, and makeflow abstractions,” Journal of Cluster Computing, vol. 13, no. 3, pp. 243–256, 2010. [35] Mahjoub, M.; Mdhaffar, A.; Halima, R.B.; Jmaiel, M., "A Comparative Study of the Current Cloud Computing Technologies and Offers," Network Cloud Computing and Applications (NCCA), 2011 First International Symposium on , vol., no., pp.131,134, 2123 Novembro de 2011. [36] Mahjoub, M.; Mdhaffar, A.; Halima, R.B.; Jmaiel, M.; , "A Comparative Study of the Current Cloud Computing Technologies and Offers," Network Cloud Computing and Applications (NCCA), 2011 First International Symposium on , vol., no., pp.131-134, 2123, Novembro de 2011. [37] Mathew, R.; Spraetz, R., "Test Automation on a SaaS Platform," Software Testing Verification and Validation, 2009. ICST '09. International Conference on , vol., no., pp.317-325, 1-4. Abril de 2009. [38] Microsoft Azure. Disponível em: www.windowsazure.com, acessado em: Junho de 2013. [39] Minqi Zhou; Rong Zhang; Dadan Zeng; Weining Qian; , "Services in the Cloud Computing era: A survey," Universal Communication Symposium (IUCS), 2010 4th International , vol., no., pp.40-46, 18-19, Outubro de 2010. [40] Moghe, U.; Lakkadwala, P.; Mishra, D.K., "Cloud computing: Survey of different utilization techniques," Software Engineering (CONSEG), 2012 CSI Sixth International Conference on , vol., no., pp.1,4, 5-7 Setembro de 2012. [41] Nance, K.; Bishop, M.; Hay, Brian, "Virtual Machine Introspection: Observation or Interference?," Security & Privacy, IEEE , vol.6, no.5, pp.32,37, Setembro.- Outubro de 2008. [42] Nimbus. Disponível em: www.nimbusproject.org, acessado em: Junho de 2013. [43] Nurmi, D.; Wolski, R.; Grzegorczyk, C.; Obertelli, G.; Soman, S.; Youseff, L.; Zagorodnov, D.; , "The Eucalyptus Open-Source Cloud-Computing System," Cluster 79 Computing and the Grid, 2009. CCGRID '09. 9th IEEE/ACM International Symposium on , vol., no., pp.124-131, 18-21, Maio de 2009. [44] OCCI. Disponível em: occi-wg.org, acessado em: Junho de 2013. [45] Ogrizović, D.; Sviličić, B.; Tijan, E., "Open source science clouds," MIPRO, 2010 Proceedings of the 33rd International Convention , vol., no., pp.1189,1192, 24-28 Maio de 2010. [46] OpenNebula Project (2012). “The Open Source Toolkit for Cloud Computing”, http://opennebula.org/. [47] OpenStack. Disponível em: www.openstack.org, acessado em: Junho de 2013. [48] P. Mell and T. Grance, “The NIST Definition of Cloud Computing,” US Nat’l Inst. of Science and Technology, 2011; http://csrc.nist.gov/publications/nistpubs/800-145/SP800145.pdf [49] P. Mell and T. Grance. NIST definition of cloud computing. National Institute of Standards and Technology, Setembro de 2011. [50] P. T. Endo, G. E. Gon¸calves, J. Kelner, and D. Sadok. A Survey on Open-source Cloud Computing Solutions. Brazilian Symposium on Computer Networks and Distributed Systems, Maio de 2010. [51] Patidar, S.; Rane, D.; Jain, P.; , "A Survey Paper on Cloud Computing," Advanced Computing & Communication Technologies (ACCT), 2012 Second International Conference on , vol., no., pp.394-398, 7-8, Janeiro de 2012. [52] Peng, J.; Zhang, X.; Lei, Z.; Zhang, B.; Zhang, W.; Li, Q.; , "Comparison of Several Cloud Computing Platforms," Information Science and Engineering (ISISE), 2009 Second International Symposium on , vol., no., pp.23-27, 26-28, Dezembro de 2009. [53] PlanetLab. Disponível em: www.planet-lab.org, acessado em: Junho de 2013. [54] Rackspace. Disponível em: www.rackspace.com, acessado em: Junho de 2013. [55] Rajan, D.; Canino, A.; Izaguirre, Jesus A.; Thain, D., "Converting a High Performance Application to an Elastic Cloud Application," Cloud Computing Technology and Science (CloudCom), 2011 IEEE Third International Conference on , vol., no., pp.383,390, Novembro de 2011-Dezembro de. 2011 [56] Rappa, M.A., "The utility business model and the future of computing services," IBM Systems Journal , vol.43, no.1, pp.32,42, 2004 [57] Raveendran, A.; Bicer, T.; Agrawal, G., "A Framework for Elastic Execution of Existing MPI Programs," Parallel and Distributed Processing Workshops and Phd Forum (IPDPSW), 2011 IEEE International Symposium on , vol., no., pp.940,947, 16-20 Maio de 2011 [58] Regola, N.; Ducom, J.-C.; , "Recommendations for Virtualization Technologies in High Performance Computing," Cloud Computing Technology and Science (CloudCom), 2010 80 IEEE Second International Conference on , vol., no., pp.409-416, Nov. 30 2010-Dec. 3 2010 [59] Rimal, B.P.; Eunmi Choi; Lumb, I., "A Taxonomy and Survey of Cloud Computing Systems," INC, IMS and IDC, 2009. NCM '09. Fifth International Joint Conference on , vol., no., pp.44,51, 25-27 Agosto de 2009. [60] Rusitschka, S., Eger, K., Gerdes, C., “Smart Grid Data Cloud: A Model for Utilizing Cloud Computing in the Smart Grid Domain”, IEEE First International Conference on Smart Grid Communications (SmartGridComm), p. 483 – 488, Outubro de 2010. [61] Salesforce. Disponível em: www.salesforce.com, acessado em: Junho de 2013. [62] Santacana, E.; Rackliffe, G.; Le Tang; Xiaoming Feng; , "Getting Smart," Power and Energy Magazine, IEEE , vol.8, no.2, pp.41-48, Março-Abril de 2010. [63] Sempolinski, P.; Thain, D., "A Comparison and Critique of Eucalyptus, OpenNebula and Nimbus," Cloud Computing Technology and Science (CloudCom), 2010 IEEE Second International Conference on , vol., no., pp.417,426, Nov. 30 2010-Dezembro de 2010. [64] Sotomayor, B.; Montero, R.S.; Llorente, I.M.; Foster, I.; , "Virtual Infrastructure Management in Private and Hybrid Clouds," Internet Computing, IEEE , vol.13, no.5, pp.14-22, Outubro de 2009. [65] Wind, S., "Open source cloud computing management platforms: Introduction, comparison, and recommendations for implementation," Open Systems (ICOS), 2011 IEEE Conference on , vol., no., pp.175,179, 25-28 Setembro de 2011. [66] Xen Hipervisor. Disponível em: xen.org/products/xenhyp.html, acessado em: Junho de 2013. [67] Xiaolong Wen; Genqiang Gu; Qingchun Li; Yun Gao; Xuejie Zhang, "Comparison of open-source cloud management platforms: OpenStack and OpenNebula," Fuzzy Systems and Knowledge Discovery (FSKD), 2012 9th International Conference on , vol., no., pp.2457,2461, 29-31 Maio de 2012. [68] Xiaolong Wen; Genqiang Gu; Qingchun Li; Yun Gao; Xuejie Zhang, "Comparison of open-source cloud management platforms: OpenStack and OpenNebula," Fuzzy Systems and Knowledge Discovery (FSKD), 2012 9th International Conference on , vol., no., pp.2457,2461, 29-31 Maio de 2012. [69] Yan Wen; Jinjing Zhao; Gang Zhao; Hua Chen; Dongxia Wang, "A Survey of Virtualization Technologies Focusing on Untrusted Code Execution," Innovative Mobile and Internet Services in Ubiquitous Computing (IMIS), 2012 Sixth International Conference on , vol., no., pp.378,383, 4-6 Julho de 2012. [70] Zhenxing Zhao; Congying Gao; Fu Duan, "A survey on autonomic computing research," Computational Intelligence and Industrial Applications, 2009. PACIIA 2009. Asia-Pacific Conference on , vol.2, no., pp.288,291, 28-29 Novembro de 2009.