Relatório 3 Volume Único (2011) Relatório 3: Perspectivas e Desafios da Computação em Nuvem na Internet do Futuro Markus Endler, José Viterbo e Hubert Fonseca 30 de abril de 2011 Perspectivas e Desafios da Computação em Nuvem na Internet do Futuro Markus Endler1 , José Viterbo2 e Hubert Fonseca3 1 [email protected], 2 [email protected], 3 [email protected] Departamento de Informática Pontifı́cia Universidade Católica do Rio de Janeiro (PUC-Rio) Rio de Janeiro, Brasil Empresas e indivı́duos vêm cada vez mais migrando suas aplicações de computadores locais para serviços oferecidos remotamente através da Internet, utilizando o paradigma de computação em nuvem, no qual recursos computacionais são disponibilizados na forma de serviços e usados de acordo com a necessidade especı́fica do usuário. Este relatório visa discutir os novos requisitos de infra-estrutura de rede, middleware, aplicações e protocolos necessários para dar suporte à utilização da computação em nuvem. Com esta finalidade, primeiramente, são apresentados os principais termos e conceitos relativos à computação em nuvem (Cloud Computing). São propostos alguns cenários futuros. Além disso, são discutidos os projetos de pesquisas que abordam tendências promissoras nesta área. Finalmente, são discutidos os novos requisitos de infraestrutura de rede para viabilizar um acesso integrado e ubı́quo a serviços em nuvem e enumerados alguns setores nas quais a computação em nuvem deverá oferecer oportunidades de pesquisa e desenvolvimento no paı́s. 1 Introdução O rápido desenvolvimento das tecnologias de processamento e armazenamento de dados e a crescente disseminação do acesso à Internet vêm tornando os recursos computacionais menos custosos, mais potentes e disponı́veis de forma ubı́qua. Essas tendências tecnológicas viabilizaram o surgimento de um novo paradigma de computação denominado computação em nuvem, no qual recursos, tais como capacidade de processamento, de armazenamento e de comunicação, são disponibilizados na forma de serviços e usados de acordo com a necessidade especı́fica do usuário, que pode contratá-los através da Internet à medida em que se tornem necessários, ou liberá-los, quando deixam de sê-lo [ZCB10]. Este novo paradigma tem o potencial para transformar uma grande parte da indústria de tecnologia da informação e comunicação (TIC), uma vez que os desenvolvedores com idéias inovadoras para novos serviços na Internet já não precisarão realizar elevados investimentos em hardware para implementar seus serviços ou incorrer em grandes despesas com equipes para operá-los. Eles não precisarão se preocupar com provisionamento de recursos em excesso para um serviço cuja popularidade fique aquém de suas espectativas, o que acarretaria o desperdı́cio de recursos valiosos. Também não precisarão se preocupar com o provisionamento de recursos insuficientes para aqueles serviços que eventualmente se tornem muito populares, o que poderia levar à perda de receitas e potenciais clientes. Além disso, empresas com grande carga de traRelatório 3 1 / 27 balho computacional serão capazes de obter resultados tão rapidamente quanto seus programas possam ser escalonados, uma vez que o custo de mil servidores para uma hora não será maior do que usar um servidor por mil horas. Esta elasticidade de recursos, sem pagar um preço especial para grande escala, não tem precedentes na história da indústria de TIC. Como resultado, a computação em nuvem se tornou um tema popular e vem sendo investigado por pesquisadores de diversas áreas [AFG+ 10]. Além disso, grandes empresas como Google, Amazon, Microsoft e outras têm investido pesadamente nos últimos anos para oferecer plataformas em nuvem mais poderosas, confiáveis e com melhor custo-benefı́cio, e muitas outras empresas em diversas áreas estão redesenhando seus modelos de negócios a fim de obter os benefı́cios deste novo paradigma de computação. Mas qual é o impacto da computação em nuvem sobre as tradicionais tecnologias da Internet e o próprio uso da mesma? Por um lado, há um consenso de que um dos grandes entraves para uma adoção ainda mais abrangente desse paradigma está nas atuais limitações da rede internet: a pequena largura de banda de muitas redes de acesso, que inviabilizam a transferência de grandes volumes de dados de, para e entre as nuvens, e a deficiência em mecanismos que garantam a Qualidade de Serviço (QoS), a segurança e a confidencialidade da comunicação entre o usuário e o provedor da nuvem. Por outro lado, a computação em nuvem traz uma série de novos usos (e tipos de tráfego) para as tecnologias de redes que não eram conhecidas ou imaginadas há 10 anos atrás. Por exemplo, quem pensaria que haveria uma empresa em nuvem (o Skype) que ofereceria telefonia usando VoIP em larga escala e de graça ou a baixı́ssimo custo? Ou então, que haveria serviços em nuvem para colaboração e gerenciamento de projetos (Basecamp), gestão de relacionamento com o cliente (Salesforce), compartilhamento de arquivos de graça (Dropbox, Box.net, etc.) ou para divulgação e compartilhamento de vı́deos por qualquer pessoa (YouTube)? Portanto, computação em nuvem ampliou drasticamente os usos da rede Internet, fazendo dela a maior e mais importante infraestrutura de comunicação geral do nosso planeta. Hoje em dia, são poucas as pessoas ou empresas que conseguem sobreviver sem acesso a serviços em nuvem. Todas essas aplicações, no entanto, também fizeram com que os serviços em nuvem fossem cada vez mais identificados com a própria rede. Ou seja, que a própria Internet seja entendida como uma rede de serviços em nuvem, e que o usuário final implicitamente assuma que a rede possui capacidade não só de transmitir dados, como também de armazenar suas fotos, vı́deos, documentos etc., processar informações, identificar a disponibilidade ou atividade de usuários conhecidos (compartilhamento de informação de presença), coletar informações de interação com os serviços, ajudar nas tomadas de decisão do dia-a-dia, e muitas outras funções. O objetivo desse relatório não é nem o de descrever as tecnologias que fundamentam a computação em nuvem e nem o de reapresentar os já bem conhecidos benefı́cios econômicos do uso de serviços em nuvem, que podem ser consultados em [AFG+ 10]. Em vez disso, discutiremos computação em nuvem do ponto de vista de futuros cenários de uso — na perspectiva do usuário —, dos impactos sobre as tecnologias de rede e dos desafios para a interoperabilidade de serviços de nuvem e da criação de federações de nuvens, que nós vislumbramos como uma dos futuros desenvolvimentos nessa área. Relatório 3 2 / 27 1.1 Organização do documento A próxima seção apresenta definições dos principais termos e conceitos relacionados à computação em nuvem. A Seção 3 propõe alguns cenários futuros de utilização deste paradigma. A Seção 4 apresenta projetos de pesquisa que abordam alguns tópicos em evidência relacionados à computação em nuvem. A Seção 5 discute os novos requisitos de infraestrutura de rede para viabilizar um acesso integrado e ubı́quo a serviços em nuvem. Na Seção 6 são enumerados alguns setores nos quais a computação em nuvem deverá ter uma grande importância em nosso paı́s, oferecendo oportunidades de pesquisa e desenvolvimento. Finalmente, a Seção 7 apresenta as considerações finais. Relatório 3 3 / 27 2 Conceitos Básicos Nesta seção são apresentados os conceitos fundamentais relativos à tecnologia de Computação em Nuvem e abordados os principais aspectos dessas plataformas. 2.1 Definição e principais aspectos A computação em nuvem pressupõe o uso de grandes repositórios de recursos virtualizados — hardware, plataformas de desenvolvimento e/ou serviços —, facilmente acessı́veis através da Internet, que são tipicamente explorados utilizando-se um modelo do tipo pagamento-por-uso, no qual os fornecedores de infraestrutura oferecem garantias na forma de SLAs (service level agreements) customizadas. Além disso, os recursos podem ser reconfigurados dinamicamente de modo a se ajustar a cargas variadas, otimizando sua utilização [VRCL08]. Propriedades importantes que ajudam a caracterizar a computação em nuvem são: • A ilusão de recursos computacionais infinitos, disponibilizados sob demanda, eliminando a necessidade do planejamento para a provisão de recursos a longo prazo; • A eliminação da necessidade de se fazer grandes investimentos iniciais em infra-estrutura, permitindo com que negócios sejam iniciados com um parque computacional pequeno e que aumentem sua infra-estrutura a medida em que suas necessidades demandarem; • A possibilidade da contratação de recursos computacionais a curto prazo, por exemplo, processadores por hora, armazenagem por um dia. Uma vez que estes não são mais necessários, capacidade de finalizar os contratos. Geralmente o termo é utilizado tanto para definir aplicações que são acessadas pela Internet como para descrever serviços de datacentros. No primeiro caso, as aplicações já conhecidas por serem utilizadas nos desktops, como editores de texto, planilhas ou, até mesmo, editores de imagens, são acessadas através da internet, e todo o processamento e armazenamento de dados que seriam realizados no próprio computador do usuário, agora ocorrem na nuvem. Já nos serviços de datacentros, o termo se refere ao conjunto de recursos, como servidores, balanceadores de carga, armazenamento, etc, que são comercializados por uso e cobrados de acordo com o tempo de utilização. Este novo modelo de negócios trouxe uma série de benefı́cios técnicos e financeiros para consumidores de seus serviços tais como: rápido provisionamento, escalabilidade, facilidade para lançamento de novos produtos/serviços por empresas de menor tamanho, entre outros. A capacidade de provisionar e liberar rapidamente grandes quantidades de recursos em tempo de execução — a elasticidade — é, talvez, a caracterı́stica mais inovadora de computação na nuvem. Esta propriedade difere sutilmente da escalabilidade, que corresponde à possibilidade de permitir o aumento da capacidade de trabalho pela adição proporcional da quantidade de recursos. Tradicionalmente, a escalabilidade é projetada para garantir que o custo operacional possa crescer linearmente de acordo com a carga de trabalho. Usualmente, não há preocupação com a remoção de recursos nem a preocupação se os recursos são plenamente utilizados [SPC09a]. Relatório 3 4 / 27 2.2 Classificação Provedores de Computação em Nuvem podem oferecer serviços em diferentes nı́veis de abstração de recursos, simulando as funções realizadas por aplicações, sistemas operacionais ou o hardware puro. Assim, a taxonomia mais comum é a que classifica serviços de computação em nuvem em três possı́veis categorias: Software como um Serviço (SaaS): Inspirado em um modelo de aluguel de software oferece aplicações completas que executam em servidores de um datacentro e podem ser acessadas por usuários finais, geralmente através de um cliente fino (thin client), geralmente um browser web ou um aplicativo móvel. Exemplos tı́picos de SaaS são: Yahoo mail, Flickr, Gmail, Google Docs e Google calendar. Nesse caso, o usuário não tem qualquer participação no projeto/criação da aplicação, configuração de servidores, rede ou infra estutura de armazenamento. Plataforma como um Serviço (PaaS): oferece um sistema operacional, runtimes para linguagens de programação e ferramentas para desenvolvimento, teste e deployment de software com os quais usuários podem desenvolver as suas próprias aplicações. O provedor de PaaS efetua updates, realiza patches e outras tarefas rotineiras de manutenção. Exemplos conhecidos são: Microsoft Windows Azure e Google App Engine (GAE). Em PaaS, os usuários controlam o desenho e implementação da aplicação mas não possuem controle sobre a infraestrutura de hardware. Em princı́pio, existem as seguintes variantes básicas de PaaS: plataformas para aplicações sociais (Facebook API), para aplicações Web, e para aplicações empresariais (Force.com), e ferramentas para aplicações de nuvem arbitrárias (Cloud IDEs). Infraestrutura como um Serviço (IaaS): provê aos usuários acesso direto aos recursos de processamento, armazenamento e outros recursos, e permite que que estes configurem os recursos e instalem sistemas operacionais de acordo com as suas necessidades especı́ficas. Geralmente, o IaaS funciona segundo o modelo “pay as you go” , isto é, paga-se apenas pelos recursos efetivamente usados. Exemplos de IaaS incluem Amazon Elastic Compute Cloud (EC2), Rackspace e IBM Computing on Demand. 2.3 Nuvens públicas, privadas e hı́bridas Quando a nuvem é fornecida para o público em geral e sob um contrato onde se paga pelo montante utilizado, chamamos a mesma de nuvem pública. Os serviços comercializados são geralmente chamados de computação utilitária (Utility Computing). Alguns exemplos são as plataformas da Amazon, Google AppEngine e Microsoft Azure. O termo nuvem privada é utilizado para designar um novo estilo de computação disponibilizado pelo provedor interno de TI, que se comporta de forma semelhante a um ambiente de computação na nuvem externo. Neste modelo, capacidades de TI elásticas e escaláveis são oferecidas como serviços para usuários internos. A grande diferença entre a computação na nuvem pública e privada reside nos serviços de acesso e nos serviços de controle. São muitos os requisitos tecnológicos necessários para que o modelo privado funcione de forma adequada. Entre Relatório 3 5 / 27 eles estão tecnologias de virtualização, automação, padrões e interfaces, que permitam o acesso compartilhado a servidores virtuais. Na literatura encontramos, além dos modelos de nuvem publica e privada, outros modelos que combinam os dois conceitos [SPC09b]. O modelo de computação hı́brida prevê uma utilização mista, porém integrada, dos dois paradigmas, i.e., a combinação de serviços de computação na nuvem externos com recursos internos. Esta colaboração deve ser realizada de forma coordenada, de forma a garantir integração no nı́vel dos dados, processos e camadas de segurança [HSH09]. Outra alternativa para tratar as limitações tanto das nuvens públicas quanto das nuvens provadas é a chamada nuvem privada virtual (Virtual Private Cloud - VPC). Este tipo de nuvem consiste em uma plataforma em execução sobre uma nuvem privada pública, mas empregando tecnologias de redes privadas virtuais (VPN), que permitem que os provedores do serviço projetem seus próprios mecanismos e topologia de segurança, como, por exemplo, as regras de firewall [ZCB10]. As VPC são essencialmente um projeto mais holı́stico, uma vez que não apenas virtualizam servidores e aplicações, mas também a camada subjacente da rede. Para a maioria das empresas, a tecnologia de VPC provê uma transição suave e integrada de uma infraestrutura de serviços proprietária para uma infraestrutura de nuvem, graças a camada de rede virtualizada. 2.4 Tecnologias de Virtualização Em ambientes de computação em nuvem, diversos provedores de recusos compartilham infraestrutura, distribuı́dos em diversos datacentros. Atualmente, diversas formas de virtualização dos recursos computacionais são utilizadas. A virtualização de memória, por exemplo, permite a um processo utilizar muito mais memória do que a máquina fı́sica oferece, além de dividir o recurso com outras centenas de processos. A execução de múltiplas tarefas é outro exemplo, pois um mesmo processador tem seu tempo de processamento dividido entre várias atividades, e cada um dos processos não interfere nem percebe a presença dos demais. Ou ainda diversos processadores podem formar um cluster e serem utilizados como somente um processador com uma velocidade muito maior. Virtualização é uma técnica que combina ou divide recursos computacionais para simular um ou mais diferentes ambientes operacionais. A virtualização pode ser usada com diversas finalidades, entre elas: • Consolidação de servidores. É possı́vel consolidar a capacidade de processamento ociosa de máquinas, assim utilizando menos máquinas para executar tarefas computacionais. • Consolidação de aplicações. Pode ser necessário simular ambientes oepracionais antigos em hardwares recentes para executar aplicações legadas sobre a infraestrutura disponı́vel. • Sandboxing. Máquinas virtuais são ambientes isolados e seguros (sandboxes) para execução de sistemas não confiáveis. • Múltiplos ambientes de execução. É possı́vel controlar o QoS de múltiplos ambientes de execução simultâneos, provendo os recursos necessários a cada um. • Hardware virtual. A virtualização pode simular hardwares que não existem fı́sicamente, como adaptadores ethernet, roteadores, entre outros. Relatório 3 6 / 27 • Múltiplos sistemas operacionais simultâneos. Múltiplos ambientes podem ser necessários para executar diferentes aplicações em um mesmo contexto. • Debugging. Pode ser útil para debugar mais facilmente sistemas complexos como sistemas operacionais ou drivers. • Migração de software. É simples transferir sistemas entre máquinas virtuais. • Appliances. Permite o empacotamento de aplicações junto aos sistemas operacionais relacionados. • Testes e QA. Pode ajudar a produzir cenários que são dificilmente criados em máquinas reais, facilitando assim testes e controle de qualidade. Algumas ferramentas comuns de virtualização atualmente são VMWare, Xen, OpenVZ e Virtual Box. 2.5 Virtualizacão de Rede Virtualização é um conceito que não se limita a desktops e servidores, mas pode ser estendida também para elementos de rede. A Infra-estrutura de rede é composta de equipamentos que podem ser vistos como máquinas com um sistema operacional especı́fico (runtime) dedicado à execução de uma tarefa, como por exemplo, roteamento, encaminhamento de pacotes (switches) ou firewalls. A virtualização de equipamentos de interconexão de redes começa no suporte para multiplexação que as próprias máquinas virtuais oferecem para as interfaces de rede. As interfaces de redes virtuais se comportam exatamente como interfaces fı́sicas, com endereços MAC distintos, e suporte para unicast, multicast, broadcast e VLANs. Além disso, cada máquina virtual tem seu próprio endereço IP. Portanto, máquinas virtuais se comportam, sob o ponto de vista de interconexão à rede, como sistemas reais, podendo ser interligadas a switches e roteadores como se fossem máquinas fı́sicas distintas. Tipicamente, a placa de rede fı́sica é programada para operar em modo promı́scuo e o driver de rede é modificado para fazer a multiplexão e demultiplexação de seu uso pelas diferentes interfaces virtuais. Dispositivo virtuais de rede (TUN/TAP) emulam, respectivamente, o comportamento da camada de rede e de enlace. O TAP permite a criação de bridges enquanto o TUN executa roteamento. Assim, com o uso dos drivers TUN/TAP, qualquer par de aplicações pode enviar e receber dados como se estivessem tratando com um disposito externo. Essa é a base usada para prover uma comunição em rede virtual. Os equipamentos de interconexão de rede, como switches e roteadores, não são máquinas virtuais propriamente ditas, mas podem ser emulados de forma similar. Atualmente existem três formas de prover essa emulação: a) oferecer, como parte da máquina virtual, suporte para equipamentos de interconexão de rede virtuais (e.g. soluções adotadas pela VMware, Microsoft e Citrix), b) prover máquinas dedicadas compatÌveis com os hypervisors mais comuns no mercado (e.g. Vyatta), e c) construir um hardware especı́fico com suporte a virtualização de equipamentos de interconexão (e.g. produtos da linha Catalyst da Cisco). Relatório 3 7 / 27 Portanto, é possı́vel construir uma infra-estrutura de rede completa totalmente virtualizada. A arquitetura exata e as opções de projeto, como em uma rede real, dependem, caso a caso, em função de requisitos especı́ficos. Relatório 3 8 / 27 3 Cenários A seguir, são apresentados cenários futuros que ilustram nossa visão de como se desenvolverá o emprego da tecnologia de computação em nuvem. 3.1 Uma visão de serviços providos transparentemente por federações de nuvens A infraestrutura de nuvens em breve se confundirá com a própria rede. Ou seja, por um lado os componentes, serviços e protocolos da Internet servirão de backbone para interação entre as diferentes instâncias e tipos de nuvem, mas por outro lado, as nuvens se tornarão parte integrante da internet, oferecendo serviços de dados, de processamento, de comunicação e de sensoriamento. Essa infraestrutura emergente será composta de federações de nuvens de várias naturezas e interclouds (veja Seção 4.1) e terá como principal caracterı́stica a seleção e interoperabilidade transparentes entre as nuvens. Da perspectiva do usuário, as nuvens serão meramente os provedores de diferentes serviços na rede, e não haverá mais a necessidade do usuário acessar diretamente um determinado tipo, ou provedor, de nuvem. Em vez disso, seus aplicativos irão transparentemente interagir com uma ou mais dessas nuvens. Assim sendo, o usuário vislumbrará a rede (e suas nuvens) como provedores de: • Serviços de armazenamento e compartilhamento de dados; • Serviços para processamento de dados; • Serviços para matchmaking e manutenção de contatos sociais; • Serviços para comunicação multi-modal; • Repositório de aplicativos; • Serviços para monitoramento e controle de máquinas, veı́culos e imóveis privados e coletivos/públicos; • Serviços para monitoramento e diagnóstico automatizado de pessoas e do meio ambiente. • Meta-serviços para a descoberta de serviços de provedores de nuvem, negociação automatizada do SLA; • Meta-serviços para a criação de workflows de serviços em nuvem heterogêneos. Para tal, diferentes tipos de nuvens (privadas, públicas e hı́bridas) serão criadas e interconectadas, e as principais fontes de dados e informações serão os próprios usuários (seus perfis, parâmetros de QoS, aplicativos e conteúdos, em diversas mı́dias), e sensores em seres vivos, embutidos em aparelhos, veı́culos ou robôs, provenientes de radares e satélites, e/ou espalhados no meio ambiente. Já outras nuvens terão funções especı́ficas de replicação (de dados ou processamento), de roteamento de fluxos de dados , ou de transformação e processamento de agregações de dados. Relatório 3 9 / 27 3.2 Um cenário corporativo Pedro é Engenheiro de Petróleo da Petrobrás e está viajando para uma reunião da diretoria em Brası́lia onde irá apresentar um novo método algorı́tmico para estimar os custos da operação nas camadas pré-sal, que desenvolveu nos últimos seis meses. Mas após chegar ao aeroporto, já pronto para embarcar para Brası́lia, é informado por um colega do CENPES que alguns dos parâmetros geológicos possuem um comportamento diferente do que havia sido assumido. Assim, sabe que precisa ajustar o seu programa e refazer as simulações sobre a base de dados geofı́sicos que estão na nuvem privada da empresa, a fim de poder apresentar estimativas corretas na reunião que terá em algumas horas. Felizmente, o seu smartphone executa um aplicativo móvel que permite modificar, parametrizar e executar o seu sistema de qualquer lugar. Através desse aplicativo Pedro não só consegue parar a simulação na nuvem da empresa que havia iniciado antes de sair de casa, como também modificar os parâmetros do algoritmo, recompilar e iniciar a simulação novamente. O aplicativo móvel também permite visualizar, em tempo real, os gráficos que estão sendo gerados na simulação remota. Para ter certeza que a nova versão do seu sistema está correta, resolve também executar a simulação em uma outra base de dados geofı́sicos de um projeto com a universidade, para os quais conhece a estimativa de custo. Esta base de dados está armazenada em outra nuvem pública e codificada em outro formato, diferente daquele esperado pelo seu programa de simulação. Felizmente, Pedro sabe que existem serviços de nuvem públicos para a transformação de formatos de dados geofı́sicos. Assim, em seu aplicativo apenas insere o nome da base de dados geofı́sicos da universidade, indica o formato desejado dos dados, e direciona o volume de dados transformados para o seu repositório na nuvem privada da empresa. Depois agenda o inı́cio da simulação sobre esses dados para quando todos os dados tiverem chegado em seu repositório. Como agora é a hora de embarcar para Brası́lia, desativa o acompanhamento on-line da primeira simulação, e configura o sistema simulador para que envie os relatórios finais (com os gráficos) das simulações para seu endereço GMail, e a transferência dos resultados numéricos para o seu notebook, assim que este se reconectar a alguma rede 3G ou Wifi. Após aterrisar em Brası́lia e ligar o seu smartphone, durante a viagem de táxi confere os relatórios em seu e-mail, e satisfeito com os resultados, sabe que poderá mostrar os dados detalhados sobre as simulações durante a reunião , e assim convencer a Diretoria de que o seu método de estimativa é confiável. Ao final da tarde, após a longa reunião, Pedro é convidado pelo Diretor de Exploração para um jantar na Brasserie Alice, onde é informado de sua promoção na empresa. 3.3 Um cenário de monitoramento do meio ambiente Após a tragédia do deslizamento de encostas ocorrido na Região Serrana do Rio de Janeiro em 2011, várias áreas devastadas pelas chuvas foram transformadas em áreas de preservação ambiental e parcialmente reflorestadas. A fim de acompanhar a recuperação desses ecossistemas, engenheiros florestais, biólogos e ambientalistas desenvolveram — juntamente com engenheiros elétricos e de telecomunicação — um sistema de redes de sensores, com tecnologia de comunicação 3G, para coleta continuada de dados pluviométricos, do solo, da flora e fauna destas áreas de recuperação. Os dados brutos coletados pela rede de sensores de cada região é continuamente armazenada uma nuvem gerenciada pela Secretaria do Meio ambiente da prefeitura local. Relatório 3 10 / 27 Porém, todos os dados também são acessı́veis para o público, e em especial para a Defesa Civil e especialistas em Meio Ambiente. Estes, em uma parceria com pesquisadores em Departamentos de Matemática Aplicada e de Ciência da Computação de diversas Universidades, desenvolveram uma série de aplicativos em nuvem, para o processamento desse grande volume de dados, incluindo simulações e predições de desenvolvimento, todas disponı́veis em repositórios públicos de aplicativos. Assim, agora é possı́vel monitorar e analisar em detalhe o desenvolvimento da fauna e flora de cada área, recomendar medidas de proteção adicionais, estimar melhor os riscos devido a mudanças climáticas e fazer análises comparativas entre áreas em regiões similares, mas em diferentes estágios de recuperação. Como tanto os dados como os aplicativos são públicos, eles passaram a ser usados não só pelo poder público, como também pela iniciativa privada e por pessoas fı́sicas para conhecer melhor uma região e por exemplo, estimar o valor de terrenos na vizinhança das áreas em recuperação. Uma dessas aplicações inclusive é utilizável a partir de smartphones: ela e indica o grau de risco a qual uma pessoa próxima a área está sujeita dependendo de sua localização geográfica, e da umidade relativa do ar e da pressão atmosférica na região. 3.4 Um cenário de saúde Em várias cidades brasileiras a população vem sendo acometida por uma nova epidemia, com alto ı́ndice de contágio entre humanos. A virose apresenta sintomas um pouco diferentes e requer tratamentos diferentes para as pessoas contagiadas, em função de suas infecções anteriores. Felizmente, há alguns anos, a maioria dos hospitais do paı́s, as secretarias de saúde pública e os seguros de saúde optaram por usar formatos de dados abertos e disponibilizar serviços de consulta e atualização de dados de pacientes na forma de serviços em nuvem. Assim, sempre que um novo paciente é internado com suspeita de estar infectado, o hospital é capaz de realizar uma consulta abrangente em todos os registros de dados de saúde do paı́s — gerenciados em vários serviços em nuvem —, para rapidamente obter o histórico completo de infecções e tratamentos prévios daquele paciente e assim ajudar na decisão sobre o tratamento mais adequado. Como primeiro passo dessa consulta, é feita uma busca por todos os serviços de dados de saúde em nuvem que tenham registros referentes aquele paciente. A seguir, é executado um protocolo de autenticação e troca de credenciais mútua, bem como a configuração do grau de segurança, privacidade e direitos de armazenamento dos dados consultados. Em seguida, os dados consultados são transformados para o formato desejado pelo hospital requisitante através de outro serviço de transformação de dados. Assim que os médicos do hospital identificam a variante do vı́rus no paciente — e decidem sobre o melhor tratamento —, o serviço em nuvem do hospital manda automaticamente uma notificação sobre o novo caso para a nuvem da secretaria de saúde local, informando alguns dados, como o bairro de residência e de trabalho do paciente, sua idade, etc, mas omitindo outros dados, como o nome, que não são relevantes do ponto de vista estatı́stico. Isso permite que esses dados sejem publicados como dados governamentais abertos, ficando disponı́veis para consulta pública, de tal forma que, por exemplo, um portal jornalı́stico é capaz de acessar essas informações e divulgar para seus leitores o estado atual da epidemia. Além disso, de tempos em tempos as secretarias de saúde publica dos estados então agregam os seus dados de pacientes da epidemia e acionam serviços de processamento em nuvem para tentar identificar correlações estatı́sticas entre os casos detectados e condições climáticas, Relatório 3 11 / 27 condições sócio-econômicas do local e do paciente, históricos de doenças pré-existentes, etc. Essas estatı́sticas também são usadas para direcionar melhor toda a estratégia de saúde pública dos governos federal, estaduais e municipais, orientando o planejamento e a aquisição os recursos de medicamentos e vacinas para os diferentes órgãos envolvidos. Relatório 3 12 / 27 4 Pesquisas Relacionadas Nessa seção são discutidas as abordagens dos principais projetos de pesquisa recentes envolvendo aspectos relacionados à computação em nuvem. 4.1 Padrões de Interoperabilidade de nuvens. Permitir a interoperabilidade entre sistemas é hoje um dos principais desafios para a computação em nuvem. Um cenário de interoperabilidade pode ocorrer, por exemplo, quando um provedor de computação em nuvem está executando com pouca capacidade de armazenamento ou quer oferecer armazenamento para um cliente em uma região geográfica especı́fica na qual esse provedor não dispõe de um datacentro. Em qualquer dessas situações, o provedor de nuvem teria que realizar a subcontratação de armazenamento de outro prestador de serviço, e, para isso, precisaria encontrar outra nuvem pronta, disposta e capaz de aceitar uma transação de subcontratação de armazenamento. Em geral, os sistemas teriam que ser capazes de estabelecer uma comunicação confiável, com a prévia troca de assinaturas e/ou informações necessárias relacionadas ao cliente, e, finalmente, realizar o transferência dos dados armazenados. Entretanto, os numerosos fornecedores de computação em nuvem existentes introduziram seus próprios modelos e serviços, tornando o cenário dos sistemas de nuvem diferenciado. Por exemplo, provedores de nuvem oferecem diferentes serviços de armazenamento de dados com seus padrões especı́ficos, como é o caso do S3 da Amazon [Ama08] e o GFS da Google [GGL03]. Assim como nos primórdios da indústria de hardware de computador, quando cada fornecedor fabricava e comercializava a sua própria versão (incompatı́vel) de equipamentos, as nuvens são diversas e dependentes do fornecedor. Embora grandes esforços estejam sendo feitos para padronizar aspectos técnicos importantes das nuvens — particularmente pelo Instituto Americano de Padrões e Tecnologia (NIST) —, a consolidação e padronização ainda estão longe da realidade. A seguir são discutidas duas abordagens distintas para essa questão, a federação de nuvens e o intercloud. 4.1.1 Federação de nuvens computacionais Com a finalidade de oferecer suporte a um grande número de consumidores de serviços em todo o mundo, os provedores de infraestrutura de computacção em nuvem vem instalando datacentros em diversas localizações geográficas para prover redundância e garantir a segurança dos dados em caso de falhas de alguma instalação. No entanto, ao mesmo tempo em que os clientes de computação em nuvem não são capazes de expressar sua preferência sobre o local onde querem que seus serviços sejam hospedados, os provedores do serviço são incapazes de prever a distribuição geográfica dos usuários que consumirão seus serviços. Dessa forma, os provedores de computação em nuvem podem não ser capazes de atender às expectativas de QoS dos consumidores de seus serviços provenientes de várias localizações geográficas. Para superar esse problema, alguns projetos propõem a criação de uma federação de ambientes de computação em nuvem para facilitar o provisionamento de serviços à medida em que são necessários, de forma oportunista e escalável, atendendo os compromissos de QoS de forma consistente, sob condições de carga de trabalho e de rede variáveis [BRC10] [RBL+ 09]. O obRelatório 3 13 / 27 jetivo geral é criar um ambiente que permita aos prestadores de serviços de computação nuvem: (i) expandir ou redimensionar dinamicamente a sua capacidade de provisionamento com base em picos repentinos na demanda de carga de trabalho alocando recursos computacionais e de armazenamento disponı́veis em outros prestadores de serviços; (ii) funcionar como peças de uma federação para fornecimento de recursos com base no mercado, onde os fornecedores de serviços possam hospedar seus serviços com base em padrões e acordos (Service Level Agreements) regidos por preços do mercado competitivo; e (iii) prover os serviços solicitados de forma confiável, com base em tecnologias de virtualização, assegurando elevados padrões de QoS e minimizar os custos do serviço. A Figura 1 ilustra a arquitetura proposta por [BRC10] para estabelecer a interoperabilidade entre nuvens. Os principais serviços que compõem essa arquitetura são os coordenadores de nuvens (cloud coordinators) e os negociadores de nuvens (cloud brokers). Um coordenador de nuvem é responsável pelo gerenciamento da nuvem de um provedor em um domı́nio especı́fico, e pela filiação desta nuvem à federação global, que deve ser norteada pelas regras de mercado e seguir protocolos de negociação. Ele oferece um ambiente de programação, gerenciamento e implementação para aplicações em uma federação de nuvens. Um negociador de nuvem age em nome dos usuários para identificar os prestadores de serviços de nuvem adequados e negocia com os coordenadores dessas nuvens para realizar uma alocação de recursos que atenda aos requisitos de QoS dos usuários. Figure 1: Seleção e coordenação de utilização integrada de diferentes serviços em nuvem. 4.1.2 Intercloud O termo intercloud foi introduzido pela Cisco e se refere a uma malha de nuvens interligadas para oferecer um ambiente universal de computação em nuvem com base em padrões abertos. Como o nome sugere, é similar ao modelo da Internet, onde tudo é federado em uma infraestrutura ubı́qua de múltiplos provedores. Em [BLS+ 09], os autores discutem as principais questões relacionadas a mecanismos, padrões (de máquinas virtuais e dados) e protocolos para viabilizar a interoperabiliade entre nuvens heterogêneas. Os autores chamam esses mecanismos e protocolos Relatório 3 14 / 27 de “Intercloud Root e Intercloud Protocols”, respectivamente. A principal diferença entre o intercloud e uma federação de nuvens é que o intercloud é baseado em padrões futuros e interfaces abertas, enquanto a federação utiliza mecanismos especı́ficos de cada fornecedor de serviços. Na visão do intercloud, todas as nuvens deverão ter um entendimento comum de como as aplicações devem ser executadas. Futuramente, as solicitações de serviços submetidas a uma nuvem incluirão informações suficientes — sobre recursos, segurança, nı́vel de serviço, localização geográfica, etc — para que a nuvem seja capaz de processar o pedido e colocar em execução as aplicações necessárias. Isso irá criar o verdadeiro modelo de utilidade, no qual todos os requisitos são cumpridos de acordo com a descrição e uma aplicação pode executar em qualquer nuvem como apresentada, recebendo os recursos necessários para suportá-la. É provável que o intercloud se desenvolva naturalmente como resultado da contı́nua inovação em todo o ecossistema da nuvem. Federação é um dos pré-requisitos para esse objetivo, proporcionando melhorias contı́nuas na interoperabilidade de nuvens com o objetivo de dar as empresas muitas novas opções para escolher. A capacidade de federar a migração da identidade, do acesso e do conjunto de dados também é um dos requisitos fundamentais para o intercloud. Esta interoperabilidade a nı́vel de infraestrutura deve funcionar de forma transparente, a fim de lançar aplicações no ambiente de nuvem e gerenciar a integração. Os benefı́cios do intercloud já se tornaram uma realidade prática de várias formas. Uma significativa parte da visão intercloud pode ser conseguida com uma forte tecnologia de federação que ofereça uma interconexão entre diferentes nuvens e os datacentros internos. Usuários e suas empresas podem evitar exclusividade e executar suas tarefas no ambiente que melhor atenda às suas necessidades, com base no custo, desempenho, segurança, conformidade, localização geográfica, latência, etc. Em suma, algumas das metas mais importantes do intercloud podem ser alcançadas usando a tecnologia que já está chegando ao mercado. O intercloud é suportado pelo Open Cloud Standards Incubator (OCSI), criado pelo Distributed Management Task Force (DMTF), cujo conselho inclui representantes de empresas como a VMware, IBM, Microsoft, Citrix e HP, e o Fórum Global de Tecnologia Inter-Cloud (GICTF1 ), que inclui representantes da NTT, KDDI, NEC, Hitachi, Fujitsu, Toshiba, IBM, Sun, Oracle, Cisco, RICOH, CTC, etc. 4.2 Mapeamento Flexı́vel de Serviços em Recursos O aumento dos custos operacionais e da demanda de energia dos sistemas compostos, torna fundamental maximizar a eficiência, rentabilidade e utilização desses sistemas [QKP+ 09]. O processo de mapear serviços em recursos, isto é, alocar os recursos computacionais para a execução dos serviços solicitados, é uma tarefa complexa, pois exige que o sistema determine a melhor configuração de software e hardware — tamanho do sistema e conjunto de recursos — para assegurar que as metas de QoS dos serviços sejam atingidas, ao mesmo tempo em que a eficiência e utilização do sistema são maximizadas. Esse processo é complicado ainda mais pelo comportamento incerto tanto dos recursos quanto dos serviços. Conseqüentemente, há uma necessidade imediata para elaboração de modelos de desempenho e técnicas de mapeamento de serviços baseados no mercado que assegurem a utilização eficiente do sistema, sem causar prejuı́zos às 1 http://www.gictf.jp/index e.html Relatório 3 15 / 27 metas de QoS. O Centro de Computação Autonômica da NSF propôs uma abordagem autônomica fim-afim para provisionamento da carga de trabalho em nuvens. Os pesquisadores identificaram o provisionamento de máquinas virtuais como a parte do problema que apresenta maiores desafios para esses ambientes, devido a uma mistura muito variada e dinâmica de tipos de aplicações e da demanda de carga de trabalho. Para lidar com a subutilização de recursos fı́sicos e o aumento de custo resultante do provisionamento insuficiente de recursos, os pesquisadores propuseram o uso de uma abordagem de agregação de recursos online robusta e descentralizada, para conseguir o provisionamento de máquinas virtuais. Eles empregaram também uma abordagem baseada em modelos para estimar o tempo de serviço a partir de seu provisionamento, para lidar com as exigências de recursos imprecisas fornecidas pelos usuários do serviço. 4.3 Migração de Máquinas Virtuais A virtualização pode proporcionar benefı́cios ainda mais significativos para os sistemas de computação em nuvem, se for possı́vel efetuar a migração de máquinas virtuais para balancear a carga através de um datacentro. Além disso, a migração de máquinas virtuais permite o provisionamento de recursos robusto e altamente responsivo. A migração de máquinas virtuais evoluiu a partir de técnicas de migração de processos. Clark et al. [OSSN02] analisaram os benefı́cios da migração ao vivo de máquinas virtuais e apontaram que a migração de um sistema operacional inteiro e todas as suas aplicações como uma única unidade permite evitar muitas das dificuldades enfrentadas pelas abordagens de migração em nı́vel de processo. O principal benefı́cio da migração de máquinas virtuais é evitar pontos de concentração de carga. No entanto, isso não é simples. Atualmente, as operações de detectar esses pontos de concentração e iniciar a migração não acontecem com a agilidade necessária para responder às mudanças súbitas de carga de trabalho. Além disso, as informações contidas na memória sobre o estado do processamento devem ser transferidas de forma consistente e eficiente, levando em consideração os recursos para aplicativos e servidores fı́sicos de forma integrada. 4.4 Gerenciamento e análise de tráfego Análise de tráfego de dados é importante para os datacentros atuais. Por exemplo, muitas aplicações web dependem de análise de dados de tráfego para otimizar a experiência dos clientes. Os operadores de rede também precisam saber como o tráfego flui através da rede, a fim de tomar diversas decisões relativas ao gerenciamento e planejamento da rede. Entretanto, existem vários desafios para que os métodos de medição e análise de tráfego de redes utilizados nos provedores de serviço de Internet (ISPs) possam ser estendidos para datacentros. Em primeiro lugar, a densidade de links é muito maior do que em ISPs ou redes corporativas. Em segundo lugar, a maioria dos métodos existentes podem calcular as matrizes de tráfego entre algumas centenas de servidores finais, mas mesmo um datacentro modular pode ter milhares de servidores. Finalmente, os métodos existentes geralmente assumem alguns padrões de fluxo que são razoáveis em Internet e redes corporativas, mas os aplicativos implantados em datacentros, tais como o MapReduce, alteram significativamente o padrão de tráfego. Além disso, no uso que as aplicações fazem da rede e dos recursos computacionais e de armazenamento, há maior acoplamento do que é Relatório 3 16 / 27 visto em outras configurações. Atualmente, há poucos trabalhos de pesquisa sobre a medição e análise de dados de tráfego de datacentros. Destaca-se o trabalho de Greenberg et al. [GHJ+ 09], que relata as caracterı́sticas de tráfego do datacentro com relação às dimensões do fluxo e fluxos concorrentes, e usa essas informações para orientar o projeto de infraestrutura de rede. 4.5 Simulação de ambientes de nuvem Para se obter o melhor desempenho de sistemas de computação em nuvem é importante selecionar a polı́tica de provisionamento de recursos mais adequada. Utilizando-se modelos de aplicação de carga de trabalho e modelos de desempenho de recursos, é possı́vel simular polı́ticas de provisionamento e verificar seu comportamento. Entretanto, ao longo da simulação é necessário ser capaz de variar parâmetros relativos às configurações do usuário e aos requisitos do sistema de forma controlada, que possa ser reproduzida, o que é difı́cil de se conseguir. Para superar esse desafio, foi proposto o framework CloudSim [CRB+ 11][BRCB10], que consiste em um kit de ferramentas de simulação extensı́vel que permite a modelagem e simulação de sistemas de computação em nuvem e ambientes de provisionamento de aplicações. O framework suporta tanto a modelagem do comportamento dos componentes de um sistema de computação em nuvem, como datacentros, máquinas virtuais e as polı́ticas de provisionamento de recursos. No nı́vel mais inferior, o CloudSim executa o engine de simulação, responsável pelas operações de criação, gerenciamento e exclusão das entidades simuladas. Acima do engine o framework disponibiliza vários módulos. No módulo de rede, são realizados o mapeamento de enlaces entre datacentros e clientes e o cálculo de atraso das mensagens trocadas entre os mesmos. O módulo de recursos da nuvem realiza a manipulação e coordenação dos eventos da simulação, além de gerenciar os dados relativos à infraestrutura oferecida por meio dos datacenters simulados. O módulo de serviços da nuvem modela as ações de provimento de máquinas virtuais e alocação de recursos como memória de sistema, processamento, armazenamento de dados e largura de banda de comunicação. O framework provê também um módulo de serviços das maquinas virtuais, onde são realizadas a gerência das mesmas e a execução das tarefas enviadas pelos clientes, denominadas cloudlets. Por fim, a comunicação das entidades que compõem a nuvem com os clientes que utilizam seus recursos é feita por meio do módulo de interface, no qual máquinas virtuais e cloudlets podem ser manipuladas. Na camada mais superior está o código que o usuário do framework deve implementar para a criação dos ambientes de simulação, incluindo o módulo da polı́tica de escalonamento, polı́ticas de negociação (para escolha do datacentro mais adequado) e as polı́ticas de alocação de máquinas virtuais em datacentros. 4.6 Dispositivos Móveis como interfaces para acesso à nuvem Dispositivos móveis se tornarão a interface universal para serviços online e aplicações da nuvem. Entretanto, atualmente o uso desses dispositivos está limitado a duas configurações: as aplicações são executadas no smartphone ou são remotamente acessadas pelo telefone. Essas duas opções não permitem uma interação com serviços customizada e flexı́vel, limitando também as possibilidades para otimização da performance. Pesquisadores do grupo de sistemas do Instituto Federal de Tecnologia de Zurique propõem uma plataforma de middleware com a capacidade de distribuir automaticamente as diferentes camadas de uma aplicação entre o smartphone e Relatório 3 17 / 27 os servidores (na nuvem), otimizando uma variedade de funções objetivo (latência, dados transferidos, custo, etc.) [GRJ+ 09]. Essa abordagem é baseada em tecnologias já disponı́veis para o gerenciamento de módulos distribuı́dos, não necessitando de novas infraestruturas. São discutidos tópicos como a modelagem de aplicações como um grafo de consumo, e como processar esses grafos com uma série de novos algoritmos para encontrar a distribuição ótima dos módulos da aplicação, que é então implantada dinamicamente no dispositivo móvel de forma eficiente e transparente. Relatório 3 18 / 27 5 Requisitos sobre a Arquitetura de Redes Apesar de todas as vantagens econômicas de computação em nuvem [Lea09], ela também traz algumas potenciais limitações e demandas especı́ficas relacionadas com a infraestrutura de rede. Estas podem ser separadas, por um lado, em questões relacionadas à rede de acesso — a rede através da qual o usuário acessa os datacentros —, e, por outro lado, em questões que envolvem a rede de interconexão entre os datacentros. 5.1 Redes de Acesso As redes de acesso são o meio através do qual os usuários efetivamente têm acesso aos recursos dos data centros. A proliferação do uso de Computação em nuvem vai impor novos parâmetros de qualidade a tais redes, e a capacidade de satisfazer essas novas exigências é que determinará o grau de usabilidade geral da computação em nuvem. Nos próximos parágrafos, discutiremos os parâmetros de qualidade relacionados às redes de acesso. Largura de banda: clientes com novas aplicações em nuvem precisam ter meios para fazer o envio de seus dados, que em muitos casos têm o volume de vários terabytes, para os datacentros. No entanto, as redes de acesso atuais não dispõem de largura de banda suficiente para tal — a transferência de um terabyte pode demorar vários dias —, fazendo com que os clientes sejam obrigados a copiar os dados para um disco rı́gido e enviar este por correio ao provedor da nuvem. Mas além da transferência inicial dos dados para a nuvem, tipicamente o volume de tráfego na rede de acesso aumenta também após o inı́cio da operação da aplicação na nuvem, devido à transferência dos resultados para o usuário e da transferêcia de novos dados de entrada e parâmetros para o processamento. Portanto, faz-se necessário um aumento significativo da largura de banda nas redes de acesso, sobretudo das redes de acesso sem fio, dado que cada vez mais, usuários precisarão acessar serviços em nuvens de seus dispositivos móveis. Confiabilidade: a medida que dados do usuário e o seu processamento vão sendo transferidos para a nuvem, aumenta a dependência sobre o funcionamento correto das redes de acesso. De nada adianta ter poderoso serviços na nuvem, se o acesso a eles está bloqueado por problemas na rede de acesso. Vários serviços nas nuvens, como o Gmail, o Salesforce.com o Amazon S3 e o Amazon EC2, já tiveram algumas interrupções de serviço com grandes prejuı́zos, devido a falhas nas redes de acesso. É de se esperar que um uso cada vez maior de computação em nuvem faça com que as próprias empresas provedoras aumentem as exigências sobre a qualidade e a disponibilidade dessas redes junto as operadoras. Qualidade de Serviço e Gerência de rede: clientes deverão cada vez mais demandar acordos de nı́vel de serviço, garantindo-lhes determinados nı́veis mı́nimos de QoS. Estas demandas devem ser especı́ficas para cada aplicação. Por exemplo, serviços financeiros provavelmente demandam transações seguras com latências da ordem de microsegundos, enquanto que serviços de redes sociais demandarão um acesso rápido (e sem interrupções) a conteúdos em várias mı́dias. Uma maneira de melhorar a qualidade do serviço é através de múltiplas conexões entre o cliente o datacentro, o que atualmente ainda esbarra nas limitações do Border Gateway Protocol (BGP), Relatório 3 19 / 27 que é incapaz gerenciar e fazer o balanceamento de carga para várias rotas para um mesmo fluxo de pacotes entre dois domı́nios. Portanto, precisa-se de uma nova arquitetura de rede que aumente a performance de rede através da possibilidade de direcionar o tráfego de pacotes através de diferentes caminhos e de se recuperar de forma mais ágil de falhas ou de congestionamentos em alguns pontos da rede. Ubiquidade: a ubiquidade será uma demanda cada vez maior de usuários de serviços em nuvem. Suporte à ubiquidade diz respeito tanto ao acesso às nuvens através de redes sem fio, que naturalmente são mais vulneráveis a desconexões e variações na latência e largura de banda, como também a alcançabilidade do usuário quando ele está em uma rede protegida por Firewall/NAT. Isso é um problema principalmente para uma implementação eficiente de serviços de nuvem do tipo “push”, (i.e., com notificações assı́ncronas para o usuário), como é o caso do Apple Push Notification Service, aplicações “tickers” de notı́cias, da bolsa de valores, ou webchat. Para garantir uma total ubiquidade do acesso aos datacentros, ainda serão necessários desenvolvimentos em tecnologias de redes sem fio de alta disponibilidade, e protocolos com multi-homing. Privacidade e Segurança: computação em nuvem naturalmente requer que os dados crı́ticos/sensı́veis, que tradicionalmente permaneciam nos computadores das empresas ou pessoas, sejam agora transferidos através das redes de acesso até os data centros, aumentando assim a sua vulnerabilidade a ataques de interceptação, cópia ou adulteracão. Portanto, é necessário que redes de acesso dêem aos usuários formas de controlar a maneira com a qual os seus dados serão transferidos para/dos datacentros. Em particular, é necessário projetar arquiteturas e protocolos de rede que permitam determinar rotas exatas para cada fluxo de dados, e que possam ser audı́veis e verificáveis posteriormente pelos clientes. Além disso, serão necessários avanços em virtualização de firewalls e sistemas de detecção de intrusos. 5.2 Interconexão entre os datacentros O advento de Computação em nuvem vai modificar também as demandas sobre a configuração de datacentros, a capacidade para interoperabilidade e as conexões de rede que interconectarão os mesmos. A seguir, discutiremos os principais parâmetros de qualidade dessas interconexões, que serão fundamentais para possibilitar serviços de nuvens agregadas, meta-serviços e federações de nuvens. Largura de banda e linhas dedicadas: a elasticidade na provisão de recursos requer que provedores de computação em nuvem sejam capazes de mover grandes quantidades de dados muito rapidamente de um datacentro para outro, possivelmente localizados em diferentes regiões ou até continentes. Por isso, será necessário que todos os datacentros de uma provedora, ou de provedores federados, estejam interligados através de conexões de alta capacidade, possivelmente através de linhas dedicadas, ou usando tecnologias de rede capazes de garantir nı́veis de qualidade bem superiores a qualidade de melhor esforço garantida pelos protocolos da Internet atual. Por isso, vemos que cada vez mais recursos deverão ser investidos na aquisição de novas conexões dedicadas (por exemplo, a Google já é principal proprietária da maioria dos cabos Relatório 3 20 / 27 sub-oceânicos entre os EUA e a Europa), e no desenvolvimento de tecnologia de virtualização de elementos de rede com garantias de QoS. Confiabilidade: assim como há uma crescente demanda por redundância nas redes de acesso, também haverá grande demanda por alto grau de redundância em termos do encaminhamento e controle de de fluxo nas conexões entre servidores, possibilitando a transferência eficiente de grandes volumes de dados para aplicações paralelas intra- e inter- datacentros. A necessidade de transferência de dados com a altas taxas e baixa latência, escalável e tolerante a falha, farão com que o encaminhamento de fluxos/pacotes (para o próximo hop) nas rotas inter-datacentros não seja mais realizado por roteadores tradicionais, mas sim por roteadores paralelos, possivelmente com centenas de interfaces de rede, processadores de controle e buffers paralelos. Esses roteadores paralelos serão componentes complexos, cuja configuração e atualização poderá demandar novas técnicas de gerenciamento de rede. Segurança e Privacidade: da mesma forma como a virtualização de recursos garante o isolamento de dados e do processamento nos datacentros, as tecnologias de redes de interconexão entre os datacentros também precisarão garantir que fluxos paralelos não interfiram, não possam ser desviados, acessados ou modificados. Além disso, os clientes de datacentros exigirão o cumprimento de seus Service Level Agreements em relação à segurança de seus dados, independente das necessidade ou não de transferência de seus dados entre os datacentros. Ou seja, os provedores de computação em nuvem não poderão transferir a culpa por eventuais vazamentos de dados para operadoras de cabos ou de telefonia de longa distância. Além disso, a própria informação sobre o volume e a natureza de suas transações também deverá ser mantida em sigilo pelas operadoras de computação em nuvem a fim de evitar suspeitas sobre ações estratégicas de uma empresa cliente. Ou seja, deverá haver restrições bem definidas de quais dados sobre operação de dados e processamentos podem ser coletados e como podem ser usados pela operadora de uma nuvem. Politicas de Roteamento: os protocolos da Internet atual não dispõem de mecanismos para identificar diretamente a fonte ou o caminho especı́fico percorrido por um fluxo de pacotes. No entanto, a maioria dos provedores de computação em nuvem precisam ter um maior controle sobre as rotas usadas pelo tráfego de dados entre os seus datacentros. Consequentemente, vários usam o MultiProtocol Label Switching (MPLS) ou outro protocolo equivalente para obter mais controle sobre o caminho especı́fico a ser usado pelo fluxo de dados. Tais mecanismos de controle são essenciais para garantir que os fluxos de dados entre os datacentros mantenham os nı́veis de QoS desejados, de segurança de rede e de privacidade dos dados se seus clientes. Padronização: para diversas futuras aplicações em nuvem é de se esperar que datacentros e serviços em nuvem de várias empresas provedoras precisem interagir para alcançar os resultados ou o desempenho exigidos pela aplicação. Para que isso seja possı́vel, é necessário que a indústria defina padrões para a troca de dados, a seleção de serviços/provedores, a coordenação de tarefas, a alocação de recursos intra-nuvem e a composição de serviços de vários provedores. Relatório 3 21 / 27 Inclusive, pode-se imaginar futuros padrões de protocolos para negociação entre clientes com demandas especı́ficas e provedores de serviços, intermediada por outros serviços em nuvem. Além de aplicações poderem ser viabilizadas através da interação entre serviços de múltiplos provedores, poderá eventualmente ser necessário também integrar e coordenar diversas aplicações (de diferentes provedores). Para permitir tal coordenação inter-aplicações também serão necessários padrões que regulem a interação e a coordenação entre essas aplicações. A interoperabilidade nesses dois nı́veis (inter-serviços e inter-aplicações) portanto demandará uma série de novos protocolos para sinalização e controle exclusivamente relacionados a computação em nuvem, e que certamente tarão como consequência uma sobrecarga (overhead) no tráfego de rede. Relatório 3 22 / 27 6 Situação, Oportunidades e Desafios no Brasil A discussão sobre o cenário futuro para a computação em nuvem e a análise dos projetos relacionados permitiram a identificação de desafios que são apresentados nesta seção. Recente pesquisa do IDC Brasil2 apontou que do total de 400 mil empresas de grande porte e aproximadamente 8 milhões de pequenas empresas, menos de 5% utilizaram, até 2010, algum serviço de computação em nuvem. No entanto, a medida em que cada vez mais empresários e diretores forem percebendo as vantagens dos altos ı́ndices de segurança no armazenamento de dados, da flexibilidade de alocação de recursos computacionais e da economia proporcionado por computação em nuvem, o volume de empresas que o utilizarão no Brasil deverá crescer substancialmente. De fato, cada vez mais empresas estão se reorganizando para um formato baseado em serviços e avaliando o impacto da exposição pública de seus serviços para o consumo externo, ou mesmo da implementação de capacidades básicas como autenticação, autorização, versionamento, monitoração, caching, hosting padronizado, governança, etc. Ao longo dos próximos anos esse processo tende a se acelerar, especialmente como consequência da crescimento econômico nos setores de serviços. Com relação ao desenvolvimento de tecnologias de computação em nuvem, tudo indica que as maiores oportunidades para empresas brasileiras estão no desenvolvimento e customização de ferramentas/serviços para plataformas de nuvem (PaaS) e de aplicativos para computação em nuvem (SaaS), uma vez que esses são os tipos de computação em nuvem que por um lado requerem menos investimentos e inovações em hardware, e por outro, possibilitam a exploração de nichos de mercado e mesmo assim obter bons lucros. É de se esperar também que sejam desenvolvidos modelos de negócio — especı́ficos para provedores de nuvem — inovadores e mais apropriados à cultura social e econômica do Brasil. Além disso, vislumbramos algumas oportunidades especı́ficas, enumeradas a seguir: • Existem poucos serviços em nuvem, por exemplo, para logı́stica, gestão de conhecimento, CRM, gestão de projetos ou finanças corporativas, com interface traduzida para a lı́ngua brasileira. Menos ainda, se vêem ferramentas e aplicações moldadas para o mercado brasileiro com funcionalidades especı́ficas condizentes com as práticas administrativas e as leis do paı́s. • O desenvolvimento de serviços em nuvem para entidades e órgãos governamentais, para serviços de saúde, de fiscaização tributária, governança eletrônica etc. Um exemplo concreto dessa tendência é o software de inteligência Harpia, a ser usado em breve conjuntamente pelas Secretarias da Receita Federal e da Previdência Social para controle integrado de tributos e da contribuições à previdência. Ou então, o Sistema Público de Escrituração Digital SPED)3 , que está concretizando a integração das administrações tributárias nas três esferas governamentas: federal, estadual e municipal, além de parcerias com instituições como CVM, Susep e diversos outros órgãos públicos. 2 IDG NOW! Tecnologia em primeiro lugar, http://idgnow.uol.com.br Implantação da modernização da sistemática atual das obrigações acessórias, transmitidas pelos contribuintes às administrações tributárias e aos órgãos fiscalizadores, utilizando-se da certificação digital para fins de assinatura dos documentos eletrônicos, garantindo a validade jurı́dica dos mesmos apenas na sua forma digital. 3 Relatório 3 23 / 27 • Os megaeventos esportivos que o Brasil vai sediar abrem uma série de oportunidades para as operadoras de telecomunicações e provedores de TI, e em particular, possibilidades de exportação de serviços na nuvem. Segundo especialistas que participaram de um painel na Futurecom 2010, “a Copa do Mundo de 2014 e Olimpı́ada de 2016 vão exigir infraestrutura para processamento em larga escala, que no futuro poderá ser aproveitada para atender o mercado de exportação.” • A possibilidade de empresas brasileiras desenvolverem serviços de nuvem para monitoramento ambiental, em particular participatory sensing (conforme abordado no Relatório 2) • Criação meta-serviços em nuvem que agregam valor aos serviços de nuvem já existentes, que usariam datacentros em qualquer parte do mundo. • Criação de aplicativos de nuvens móveis (mobile cloud), focados na interação, colaboração entre usuários móveis, particularmente através de redes sociais (conforme abordado no Relatório 2). No entanto, para que tecnologias e aplicações de computação em nuvem possam ser desenvolvidas e usadas, o paı́s tem uma série de desafios a vencer, tais como, dispor de uma infraestutura de rede com qualidade de serviço e preços mais baixos, sobretudo por parte das operadoras de celular e custo da mão-de-obra qualificada. Neste último item, o Brasil tem dois problemas graves. O primeiro deles é o número muito baixo de profissionais de TIC que se forma anualmente. Estima-se que a demanda é 10 vezes maior. E o segundo é que o Brasil é um dos mercados que têm o custo hora/trabalhada mais elevado, devido aos encargos trabalhistas. Esses dois fatores são considerados os grandes obstáculos a expansão tencológica do pais em TIC, e em particular, no desenvolvimento de know-how, serviços e aplicações em nuvem. Relatório 3 24 / 27 7 Conclusões A computação em nuvem se apresenta como um novo modelo de fornecimento de recursos computacionais que permite aos consumidores contratarem esses recursos à medida em que se apresenta a necessidade de sua utilização [ZCB10]. Isto implica em grandes vantagens como, por exemplo, a eliminação ou redução dos investimentos necessários para a implantação e manutenção de infraestrutura computacional, que passa a estar disponı́vel sem planejamento prévio e em quantidade suficiente para atender à demanda de consumo. A crescente adesão que a computação em nuvem vem conquistando, fará com que os atuais datacentros trabalhem cada vez mais em conjunto, convergindo para uma arquitetura global de serviços virtuais distribuı́dos — de hardware, armazenamento, processamento, transformação, etc —, de forma que usuários possam acessar e implantar aplicações por demanda, de qualquer lugar do mundo e a um custo proporcional aos parâmetros de QoS contratados [BRC10]. Essa integração de serviços e aplicações em nuvem, por sua vez, também vem demandando novos serviços baseados em nuvem, por exemplo, para prover interoperabilidade, coordenação e balanceamento de carga entre serviços, descoberta de novos serviços, ou a seleção e negociação de SLAs serviços. É possı́vel vislumbrar ainda que em um futuro próximo teremos seviços em nuvem dedicados ao armazenamento, agregação e — em especial — interpretação contı́nua de dados de contexto, sejam eles relativos a dispositivos, objetos ou seres vivos, obtidos diretamente a partir de sensores ou inferidos a partir de outras fontes (por exemplo, mineração de texto de redes sociais). Além disso, computação em nuvem continuará permitindo que desenvolvedores com ideias inovadoras e conhecimento básico em plataformas de nuvem possam facil e rapidamente criar novos serviços na Internet sem ter que fazer grandes investimentos em hardware e na operacão do mesmo [AFG+ 10]. A nosso ver isso representa uma grande oportunidade de crescimento para o setor de TIC do Brasil, uma vez que este será capaz de criar serviços customizados e de nichos de mercado, para atender as demandas especı́ficas da economia e da sociedade brasileira. Relatório 3 25 / 27 Bibliografia [AFG+ 10] M. Armbrust, A. Fox, R. Griffith, A. Joseph, R. Katz, A. Konwinski, G. Lee, D. Patterson, A. Rabkin, I. Stoica, , M. Zaharia. A View of Cloud Computing. Communications ACM 53(4):50–58, Abril 2010. [Ama08] Amazon. Amazon Simple Storage Service (Amazon S3). 2008. Disponı́vel em aws.amazon.com/s3. [BLS+ 09] D. Bernstein, E. Ludvigson, K. Sankar, S. Diamond, M. Morrow. Blueprint for the Intercloud - Protocols and Formats for Cloud Computing Interoperability. Internet and Web Applications and Services, International Conference on 0:328–336, 2009. doi:http://doi.ieeecomputersociety.org/10.1109/ICIW.2009.55 [BRC10] R. Buyya, R. Ranjan, R. N. Calheiros. InterCloud: Utility-Oriented Federation of Cloud Computing Environments for Scaling of Application Services. In Proceedings of the 10th International Conference on Algorithms and Architectures for Parallel Processing (ICA3PP 2010). Pp. 13–31. Springer, Berlin, Germany, 2010. [BRCB10] R. Buyya, R. Ranjan, R. N. Calheiros, A. Beloglazov. Cloudsim: A framework for modeling and simulation of cloud computing infrastructures and services. 2010. Disponı́vel em http://www.cloudbus.org/cloudsim/. [CRB+ 11] R. N. Calheiros, R. Ranjan, A. Beloglazov, C. A. F. D. Rose, R. Buyya. CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms. Software: Practice and Experience 41(1):23– 50, January 2011. [GGL03] S. Ghemawat, H. Gobioff, S. tak Leung. The Google file system. In Symposium on Operating Systems Principles. Pp. 29–43. 2003. doi:10.1145/945445.945450 [GHJ+ 09] A. Greenberg, J. R. Hamilton, N. Jain, S. Kandula, C. Kim, P. Lahiri, D. A. Maltz, P. Patel, S. Sengupta. VL2: a scalable and flexible data center network. In Proceedings of the ACM SIGCOMM 2009 conference on Data communication. SIGCOMM ’09, pp. 51–62. ACM, New York, NY, USA, 2009. doi:http://doi.acm.org/10.1145/1592568.1592576 http://doi.acm.org/10.1145/1592568.1592576 [GRJ+ 09] I. Giurgiu, O. Riva, D. Juric, I. Krivulev, G. Alonso. Calling the cloud: enabling mobile phones as interfaces to cloud applications. In Proceedings of the ACM/IFIP/USENIX 10th international conference on Middleware. Middleware’09, pp. 83–102. Springer-Verlag, Berlin, Heidelberg, 2009. http://portal.acm.org/citation.cfm?id=1813355.1813362 [HSH09] Relatório 3 M. M. Hassan, B. Song, E. Huh. A framework of sensor-cloud integration opportunities and challenges. In Proceedings of the 3rd International Conference on Ubiq26 / 27 uitous Information Management and Communication (ICUIMC ’09). Pp. 618–626. ACM, New York, NY, USA, 2009. [Lea09] N. Leavitt. Is Cloud Computing Really Ready for Prime Time? Computer 42:15–20, January 2009. doi:10.1109/MC.2009.20 http://portal.acm.org/citation.cfm?id=1512136.1512163 [OSSN02] S. Osman, D. Subhraveti, G. Su, J. Nieh. The design and implementation of Zap: a system for migrating computing environments. SIGOPS Oper. Syst. Rev. 36:361– 376, December 2002. doi:http://doi.acm.org/10.1145/844128.844162 http://doi.acm.org/10.1145/844128.844162 [QKP+ 09] A. Quiroz, H. Kim, M. Parashar, N. Gnanasambandam, N. Sharma. Towards Autonomic Workload Provisioning for Enterprise Grids and Clouds. In Proceedings of the 10th IEEE International Conference on Grid Computing (Grid 2009). Pp. 13–15. Outubro 2009. [RBL+ 09] B. Rochwerger, D. Breitgand, E. Levy, A. Galis, K. Nagin, I. M. Llorente, R. Montero, Y. Wolfsthal, E. Elmroth, J. Cáceres, W. Emmerich, F. Galán. The Reservoir model and architecture for open federated cloud computing. IBM Journal of Research and Development 53:1–11, Abril 2009. [SPC09a] D. M. Smith, D. C. Plummer, D. W. Cearley. Pragmatic Programming Techniques: Between Elasticity and Scalability Computing. Junho 2009. Disponı́vel em: http://horicky.blogspot.com/2009/07/between-elasticity-and-scalability.html. [SPC09b] D. M. Smith, D. C. Plummer, D. W. Cearley. The What, Why and When of Cloud Computing. Junho 2009. Relatório da Gartner Research. [VRCL08] L. Vaquero, L. Rodero-Merino, J. Caceres, M. Lindner. A break in the clouds: Towards a cloud definition. SIGCOMM Computing Communications Review 1(39):50– 55, Dezembro 2008. [ZCB10] Relatório 3 Q. Zhang, L. Cheng, R. Boutaba. Cloud computing: State-of-the-art and research challenges. Journal of Internet Services and Applications 1(1):7–18, Maio 2010. 27 / 27