You are on page 1of 25

Captulo

7
Computao em Nuvem: Conceitos, Tecnologias,
Aplicaes e Desafios
Flvio R. C. Sousa, Leonardo O. Moreira e Javam C. Machado

Abstract
Platforms and softwares are available as services, both being used in Cloud Computing
environments. This has improved flexibility, reducing total business cost and providing ondemand services. Several companies already use cloud computing to distribute its softwares, and it is believed that a constant migration to these environments will take place in
the upcoming years. This course will introduce the main cloud computing concepts and
technologies, its architecture, service and deployment models, as well as applications that
can be executed in such environments. Finally, challenges and opportunities in the cloud
computing field will be presented.
Resumo
Plataformas e softwares esto disponibilizados como servios, sendo estes utilizados em
ambientes de Computao em Nuvem. Isso tem melhorado a flexibilidade, reduzindo o
custo total dos negcios e provendo servios sob demanda. Muitas empresas j utilizam
computao em nuvem para distribuir seus softwares e acredita-se que ocorrer uma
migrao constante para estes ambientes. Esse curso tem como objetivo apresentar os
principais conceitos e tecnologias de computao em nuvem, a arquitetura e modelos
de servios e implantao, bem como, aplicaes executadas nestes ambientes. Por fim,
desafios e oportunidades em computao em nuvem so apresentados.

7.1. Introduo
Com o avano da sociedade humana moderna, servios bsicos e essenciais so quase
todos entregues de uma forma completamente transparente. Servios de utilidade pblica
como gua, gs, eletricidade e telefone tornaram-se fundamentais para nossa vida diria e
so explorados atravs de um modelo de pagamento baseado no uso [Vecchiola et al. 2009].
As infra-estruturas existentes permitem entregar tais servios em qualquer lugar e a qualquer hora, de forma que possamos simplesmente acender a luz, abrir a torneira ou usar
o fogo. O uso desses servios , ento, cobrado de acordo com as diferentes polticas
para o usurio final. Recentemente, a mesma ideia de utilidade tem sido aplicada no
contexto da informtica e uma mudana consistente neste sentido tem sido feita com a
disseminao de Cloud Computing ou Computao em Nuvem.
Computao em nuvem uma tendncia recente de tecnologia cujo objetivo
proporcionar servios de Tecnologia da Informao (TI) sob demanda com pagamento
baseado no uso. Tendncias anteriores computao em nuvem foram limitadas a uma
determinada classe de usurios ou focadas em tornar disponvel uma demanda especfica
de recursos de TI, principalmente de informtica [Buyya et al. 2009b]. Computao em
nuvem pretende ser global e prover servios para as massas que vo desde o usurio final
que hospeda seus documentos pessoais na Internet at empresas que terceirizaro toda a
parte de TI para outras empresas. Nunca uma abordagem para a utilizao real foi to
global e completa: no apenas recursos de computao e armazenamento so entregues
sob demanda, mas toda a pilha de computao pode ser aproveitada na nuvem. A Figura
7.1 mostra uma viso geral de uma nuvem computacional.

Figura 7.1. Viso geral de uma nuvem computacional

Com isso, os usurios esto movendo seus dados e aplicaes para a nuvem e
assim acess-los de forma simples e de qualquer local. Isso novamente um caso de utilizao de processamento centralizado. Cenrio semelhante ocorreu h aproximadamente
50 anos: um servidor de tempo compartilhado acessado por vrios usurios. Contudo, nas
ltimas dcadas, quando os computadores pessoais surgiram, os dados e as aplicaes comearam a serem utilizados localmente.

Certamente o paradigma de computao em nuvem no uma repetio da histria. H 50 anos os servidores de tempo compartilhado foram adaptados por questes de
limitao de recursos. J a computao em nuvem surge da necessidade de construir infraestruturas de TI complexas, onde os usurios tm que realizar instalao, configurao e
atualizao de softwares. Alm disso, recursos de computao e hardware so propensos
a ficarem obsoletos rapidamente. Assim, a utilizao de plataformas computacionais de
terceiros uma soluo inteligente para os usurios lidarem com infra-estrutura de TI.
Na computao em nuvem os recursos de TI so fornecidos como um servio,
permitindo aos usurios acessarem os servios sem a necessidade de conhecimento sobre
a tecnologia utilizada. Assim, os usurios e empresas passaram a acessar os servios
sob demanda e independente de localizao, o que aumentou a quantidade de servios
disponveis.
Este trabalho trata de diversos aspectos da computao em nuvem e est organizado da seguinte forma: a seo 2 apresenta os principais conceitos de computao em
nuvem. A seo 3 apresenta as tecnologias atuais de computao em nuvem. A seo
4 apresenta algumas aplicaes para computao em nuvem. A seo 5 apresenta os
principais desafios em computao em nuvem e finalmente a seo 6 apresenta algumas
concluses.

7.2. Conceitos de Computao em Nuvem


A computao em nuvem est se tornando uma das palavras chaves da indstria de TI. A
nuvem uma metfora para a Internet ou infra-estrutura de comunicao entre os componentes arquiteturais, baseada em uma abstrao que oculta a complexidade de infraestrutura. Cada parte desta infra-estrutura provida como um servio e, estes servios so
normalmente alocados em data-centers, utilizando hardware compartilhado para computao e armazenamento.
Para utilizarem os servios, os usurios necessitam apenas ter em suas mquinas
um sistema operacional, um navegador e acesso a Internet. Todos os recursos e processamentos computacionais esto disponveis na Internet. Assim, as mquinas dos usurios
no necessitam ter altos recursos computacionais, diminuindo assim o custo na aquisio de mquinas por parte destes usurios. Todo hardware pode ser utilizado para realizar
alguma tarefa que seja adequada ao seu poder de processamento. Novos recursos de hardware podem ser adicionados a fim de aumentar o poder de processamento e cooperar com
os recursos existentes.
O modelo de computao em nuvem foi desenvolvido com o objetivo de fornecer servios de fcil acesso e de baixo custo e garantir caractersticas tais como disponibilidade e escalabilidade. Este modelo visa fornecer, basicamente, trs benefcios. O
primeiro benefcio reduzir o custo na aquisio e composio de toda infra-estrutura
requerida para atender as necessidades das empresas, podendo essa infra-estrutura ser
composta sob demanda e com recursos heterogneos e de menor custo. O segundo a
flexibilidade que esse modelo oferece no que diz respeito adio e troca de recursos
computacionais, podendo assim, escalar tanto em nvel de recursos de hardware quanto
software para atender as necessidades das empresas e usurios. O ltimo benefcio prover uma abstrao e facilidade de acesso aos usurios destes servios. Neste sentido, os

usurios dos servios no precisam conhecer aspectos de localizao fsica e de entrega


dos resultados destes servios.
A computao em nuvem uma evoluo dos servios e produtos de tecnologia
da informao sob demanda, tambm chamada de Utility Computing. O objetivo da Utility Computing fornecer os componentes bsicos como armazenamento, CPUs e largura
de banda de uma rede como uma mercadoria atravs de provedores especializados com
um baixo custo unitrio. Usurios de servios baseados em Utility Computing no precisam se preocupar com escalabilidade, pois a capacidade de armazenamento fornecido
praticamente infinita.
A Utility Computing fornece disponibilidade total, isto , os usurios podem ler
e gravar dados a qualquer tempo, sem nunca serem bloqueados; os tempos de resposta
so quase constantes e no dependem do nmero de usurios simultneos, do tamanho
do banco de dados ou de qualquer parmetro do sistema. Os usurios no precisam se
preocupar com backups. Se os componentes falharem, de responsabilidade do provedor
substitu-los e tornar os dados disponveis em tempo hbil atravs de rplicas.
Outra razo importante para a construo de novos servios baseados em Utility
Computing que provedores de servios que utilizam servios de terceiros pagam apenas
pelos recursos que recebem, ou seja, pagam pelo uso. No so necessrios investimentos
iniciais em TI e o custo cresce de forma linear e previsvel com o uso. Dependendo do
modelo do negcio, possvel que o provedor de servios repasse o custo de armazenagem, computao e de rede para os usurios finais, j que realizado a contabilizao do
uso.
O exemplo abaixo ajuda a compreender melhor a Utility Computing. Suponha que
voc tenha um requisito para operar 100 servidores por trs anos. Uma opo seria alugar
estes servidores por 0.40 dlares por instncia/horas. Isso custaria aproximadamente:
100 servidores * $ 0.40 por instncia/horas * 3 anos
8760 horas/ano = $ 1.051.200
Outra opo seria comprar os servidores e administr-los. Suponha que o custo
para comprar cada servidor seja de 750 dlares e que sejam necessrios dois funcionrios para administrar os servidores pagando 100.000 dlares por ano. Suponha que os
servidores exigem 150 watts cada e o custo da eletricidade de 0.10 por quilowatt-hora.
Assim, o custo anual para operar os 100 servidores de 13.140 dlares. Com isso, temos
que a opo de comprar e administrar custar aproximadamente:
100 servidores * $ 750 + 3 anos * $ 13.140 eletricidade/ano
+ 3 anos * 2 funcionrios * $ 100.000 salrios/ano = $ 714.420
Portanto, se a utilizao dos servidores fosse de 100%, a opo de comprar 100
servidores seria mais barato. Por outro lado, se a utilizao dos servidores fosse de 68%
ou menos, a opo de usar um servio de nuvem seria mais interessante. Mesmo considerando que os nmeros apresentados acima so apenas estimativas, e que nem todos os
custos foram considerados, pode-se verificar que modelo de Utility Computing prefervel em muitos casos.
O NIST (National Institute of Standards and Technology) [NIST 2009] define

computao em nuvem como um paradigma em evoluo. Suas definies, casos de uso,


tecnologias, problemas, riscos e benefcios sero redefinidos em debates entre os setores
pblico e privado e essas definies, atributos e caractersticas evoluiro com o tempo.
Tratando-se especificamente da definio, ainda no se tem uma definio amplamente aceita. O NIST apresenta a seguinte definio para computao em nuvem:
Computao em nuvem um modelo que possibilita acesso, de modo conveniente e sob
demanda, a um conjunto de recursos computacionais configurveis (por exemplo, redes,
servidores, armazenamento, aplicaes e servios) que podem ser rapidamente adquiridos e liberados com mnimo esforo gerencial ou interao com o provedor de servios.
J [Armbrust et al. 2009] propem a seguinte definio: A computao em nuvem um conjunto de servios de rede ativados, proporcionando escalabilidade, qualidade de servio, infra-estrutura barata de computao sob demanda e que pode ser
acessada de uma forma simples e pervasiva. Um levantamento com algumas propostas
de definio para computao em nuvem pode ser encontrado em [Vaquero et al. 2009].
Para este trabalho, considerou-se a viso do NIST, que descreve que o modelo de
computao em nuvem composto por cinco caractersticas essenciais, trs modelos de
servio e quatro modelos de implantao. Essas caractersticas e modelos de computao
em nuvem so detalhados a seguir.
7.2.1. Caractersticas Essenciais
As caractersticas essenciais so vantagens que as solues de computao em nuvem
oferecem. Algumas destas caractersticas, em conjunto, definem exclusivamente a computao em nuvem e faz a distino com outros paradigmas. Por exemplo, a elasticidade
rpida de recursos, amplo acesso e medio de servio so caractersticas bsicas para
compor uma soluo de computao em nuvem.

7.2.1.1. Self-service sob demanda


O usurio pode adquirir unilateralmente recurso computacional, como tempo de processamento no servidor ou armazenamento na rede na medida em que necessite e sem precisar
de interao humana com os provedores de cada servio. O hardware e o software dentro
de uma nuvem podem ser automaticamente reconfigurados, orquestrados e estas modificaes so apresentadas de forma transparente para os usurios, que possuem perfis
diferentes e assim podem personalizar os seus ambientes computacionais, por exemplo,
instalao de software e configurao de rede para a definio de determinados privilgios.

7.2.1.2. Amplo acesso


Recursos so disponibilizados por meio da rede e acessados atravs de mecanismos padronizados que possibilitam o uso por plataformas thin ou thin client, tais como celulares,
laptops e PDAs. A interface de acesso a nuvem no obriga os usurios a mudar suas
condies e ambientes de trabalho, como por exemplo, linguagens de programao e sis-

tema operacional. J os softwares clientes instalados localmente para o acesso nuvem


so leves, como um navegador de Internet.

7.2.1.3. Pooling de recursos


Os recursos computacionais do provedor so organizados em um pool para servir mltiplos usurios usando um modelo multi-tenant, com diferentes recursos fsicos e virtuais,
dinamicamente atribudos e ajustados de acordo com a demanda dos usurios. Estes usurios no precisam ter conhecimento da localizao fsica dos recursos computacionais,
podendo somente especificar a localizao em um nvel mais alto de abstrao, tais como
o pas, estado ou datacenter.

7.2.1.4. Elasticidade rpida


Recursos podem ser adquiridos de forma rpida e elstica, em alguns casos automaticamente, caso haja a necessidade de escalar com o aumento da demanda, e liberados, na
retrao dessa demanda. Para os usurios, os recursos disponveis para uso parecem ser
ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento.
A virtualizao ajuda na caracterstica de elasticidade rpida na computao nuvem, criando vrias instncias de recursos requisitados utilizando um nico recurso real
[Aboulnaga et al. 2009]. Alm disso, a virtualizao uma maneira de abstrair caractersticas fsicas de uma plataforma computacional dos usurios, exibindo outro hardware
virtual e emulando um ou mais ambientes que podem ser independentes ou no.

7.2.1.5. Servio medido


Sistemas em nuvem automaticamente controlam e otimizam o uso de recursos por meio
de uma capacidade de medio. A automao realizada em algum nvel de abstrao
apropriado para o tipo de servio, tais como armazenamento, processamento, largura de
banda e contas de usurio ativas. O uso de recursos pode ser monitorado e controlado,
possibilitando transparncia para o provedor e o usurio do servio utilizado. Para garantir
o QoS (Quality of Service), pode-se utilizar a abordagem baseada em nveis de acordo de
servio SLA (Services Level Agreement). O SLA fornece informaes sobre os nveis
de disponibilidade, funcionalidade, desempenho ou outros atributos do servio como o
faturamento e at mesmo penalidades em caso de violao destes nveis.
7.2.2. Modelos de Servios
Em ambientes de computao em nuvem podem-se ter trs modelos de servios. Estes
modelos so importantes, pois eles definem um padro arquitetural para solues de computao em nuvem. A Figura 7.2 exibe estes modelos de servios [Armbrust et al. 2009].

Figura 7.2. Modelos de Servios

7.2.2.1. Software como Servio (SaaS)


O modelo de SaaS proporciona softwares com propsitos especficos que so disponveis
para os usurios atravs da Internet. Os softwares so acessveis a partir de vrios dispositivos do usurio por meio de uma interface thin client como um navegador Web. No SaaS,
o usurio no administra ou controla a infra-estrutura subjacente, incluindo rede, servidores, sistemas operacionais, armazenamento, ou mesmo as caractersticas individuais da
aplicao, exceto configuraes especficas. Com isso, os desenvolvedores se concentram
em inovao e no na infra-estrutura, levando ao desenvolvimento rpido de softwares.
Como o software est na Web, ele pode ser acessado pelos usurios de qualquer
lugar e a qualquer momento, permitindo mais integrao entre unidades de uma mesma
empresa ou outros servios de software. Assim, novos recursos podem ser incorporados
automaticamente aos softwares sem que os usurios percebam estas aes, tornando a
evoluo e atualizao transparente dos sistemas. O SaaS reduz os custos, pois dispensada a aquisio de licenas de softwares. Como exemplos de SaaS podemos destacar os servios de CRM (Customer Relationship Management) on-line da Salesforce
[Salesforce 2009] e o Google Docs [Ciurana 2009].

7.2.2.2. Plataforma como Servio (PaaS)


A PaaS oferece uma infra-estrutura de alto nvel de integrao para implementar e testar
aplicaes na nuvem. O usurio no administra ou controla a infra-estrutura subjacente,
incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle
sobre as aplicaes implantadas e, possivelmente, as configuraes de aplicaes hospedadas nesta infra-estrutura. A PaaS fornece um sistema operacional, linguagens de
programao e ambientes de desenvolvimento para as aplicaes, auxiliando a implementao de softwares, j que contm ferramentas de desenvolvimento e colaborao
entre desenvolvedores.
Em geral, os desenvolvedores dispem de ambientes escalveis, mas eles tm que
aceitar algumas restries sobre o tipo de software que se pode desenvolver, desde limi-

taes que o ambiente impe na concepo das aplicaes at a utilizao de banco de


dados do tipo chave-valor, ao invs de banco de dados relacionais. Do ponto de vista
do negcio, a PaaS permitir aos usurios utilizarem servios de terceiros, aumentando
o uso do modelo de suporte no qual os usurios se inscrevem para solicitaes de servios de TI ou de resolues de problemas pela Web. Com isso, pode-se descentralizar
uma certa carga de trabalho e responsabilidades nas equipes de TI das empresas. Como
exemplos de SaaS podemos destacar as PaaS Google App Engine [Ciurana 2009] e Aneka
[Vecchiola et al. 2009].

7.2.2.3. Infra-estrutura como Servio (IaaS)


O IaaS parte responsvel por prover toda a infra-estrutura necessria para a PaaS e
o SaaS. O principal objetivo do IaaS tornar mais fcil e acessvel o fornecimento de
recursos, tais como servidores, rede, armazenamento e outros recursos de computao
fundamentais para construir um ambiente de aplicao sob demanda, que podem incluir
sistemas operacionais e aplicativos. A IaaS possui algumas caractersticas, tais como uma
interface nica para administrao da infra-estrutura, API (Application Programming Interface) para interao com hosts, switches, balanceadores, roteadores e o suporte para
a adio de novos equipamentos de forma simples e transparente. Em geral, o usurio
no administra ou controla a infra-estrutura da nuvem, mas tem controle sobre os sistemas operacionais, armazenamento e aplicativos implantados, e, eventualmente, seleciona
componentes de rede, tais como firewalls.
O termo IaaS se refere a uma infra-estrutura computacional baseada em tcnicas
de virtualizao de recursos de computao. Esta infra-estrutura pode escalar dinamicamente, aumentando ou diminuindo os recursos de acordo com as necessidades das aplicaes. Do ponto de vista de economia e aproveitamento do legado, ao invs de comprar novos servidores e equipamentos de rede para a ampliao de servios, pode-se aproveitar os
recursos ociosos disponveis e adicionar novos servidores virtuais infra-estrutura existente de forma dinmica. O Amazon EC2 (Elastic Cloud Computing) [Robinson 2008] e
o Eucalyptus (Elastic Utility Computing Architecture Linking Your Programs To Useful
Systems) [Liu et al. 2007] so exemplos de IaaS.
7.2.3. Modelo de Implantao
Tratando-se do acesso e disponibilidade de ambientes de computao em nuvem, tem-se
diferentes tipos de modelos de implantao. A restrio ou abertura de acesso depende
do processo de negcios, do tipo de informao e do nvel de viso desejado. Pode-se
perceber que certas empresas no desejam que todos os usurios possam acessar e utilizar
determinados recursos no seu ambiente de computao em nuvem. Neste sentido, surge a
necessidade de ambientes mais restritos, onde somente alguns usurios devidamente autorizados possam utilizar os servios providos. Os modelos de implantao da computao
em nuvem podem ser divididos em: pblico, privado, hbrido e comunidade [NIST 2009].

7.2.3.1. Privado
No modelo de implantao privado, a infra-estrutura de nuvem utilizada exclusivamente
para uma organizao, sendo esta nuvem local ou remota e administrada pela prpria empresa ou por terceiros. Neste modelo de implantao so empregados polticas de acesso
aos servios. As tcnicas utilizadas para prover tais caractersticas podem ser em nvel
de gerenciamento de redes, configuraes dos provedores de servios e a utilizao de
tecnologias de autenticao e autorizao. Um exemplo deste modelo seria o cenrio de
uma universidade e seus departamentos. A universidade pode estar interessada em disponibilizar servios para seus departamentos e outros rgos desta instituio no devem ter
acesso a esses servios.

7.2.3.2. Pblico
No modelo de implantao pblico, a infra-estrutura de nuvens disponibilizada para o
pblico em geral, sendo acessado por qualquer usurio que conhea a localizao do servio. Neste modelo de implantao no podem ser aplicadas restries de acesso quanto
ao gerenciamento de redes, e menos ainda, aplicar tcnicas de autenticao e autorizao.

7.2.3.3. Comunidade
No modelo de implantao comunidade ocorre o compartilhamento por diversas empresas
de uma nuvem, sendo esta suportada por uma comunidade especfica que partilhou seus
interesses, tais como a misso, os requisitos de segurana, poltica e consideraes sobre
flexibilidade. Este tipo modelo de implantao pode existir localmente ou remotamente e
pode ser administrado por alguma empresa da comunidade ou por terceiros.

7.2.3.4. Hbrido
No modelo de implantao hbrido, existe uma composio de duas ou mais nuvens, que
podem ser privadas, comunidade ou pblica e que permanecem como entidades nicas
e ligadas por uma tecnologia padronizada ou proprietria que permite a portabilidade de
dados e aplicaes.
7.2.4. Papis e Escalabilidade de Nuvens
Os papis so importantes para definir responsabilidades, acesso e perfil para os diferentes
usurios que fazem parte e esto envolvidos em uma soluo de computao em nuvem.
J a escalabilidade de nuvem importante para transparecer para o usurio a iluso de
recursos computacionais infinitos. Alm disso, a escalabilidade aumenta o desempenho
dos recursos utilizados pelos usurios da soluo em nuvem. Essa escalabilidade pode
acontecer como composio de servios ou na adio de recursos fsicos computacionais.

7.2.4.1. Papis na Computao em Nuvem


Para entender melhor a computao em nuvem, pode-se classificar os atores dos modelos de acordo com os papis desempenhados [Marinos and Briscoe 2009]. A Figura 7.3
destaca estes papis.

Figura 7.3. Papis na computao em nuvem

O provedor responsvel por disponibilizar, gerencia e monitora toda a estrutura


para a soluo de computao em nuvem, deixando os desenvolvedores e usurios finais
sem esses tipos de responsabilidades. Para isso, o provedor fornece servios nos trs
modelos de servios. Os desenvolvedores utilizam os recursos fornecidos e provem
servios para os usurios finais. Esta organizao em papis ajuda a definir os atores e
os seus diferentes interesses. Os atores podem assumir vrios papis ao mesmo tempo
de acordo com os interesses, sendo que apenas o provedor fornece suporte a todos os
modelos de servios.
Do ponto de vista de interao entre os trs modelos de servios, a IaaS fornece
recursos computacionais, seja de hardware ou software, para a PaaS, que por sua vez fornece recursos, tecnologias e ferramentas para o desenvolvimento e execuo dos servios
implementados, a serem disponibilizados na viso de SaaS.
7.2.4.2. Escalabilidade de Nuvens
A computao em nuvem composta por uma enorme rede de ns que necessita ser escalvel. A escalabilidade deve ser transparente para os usurios, podendo estes armazenar
seus dados na nuvem sem a necessidade de saber onde os dados esto armazenados ou
como so acessados. Pode-se identificar pelo menos duas dimenses de escalabilidade: a
horizontal e a vertical [Mei et al. 2008].
Uma nuvem escalvel horizontalmente possui a capacidade de conectar e integrar
mltiplas nuvens para o trabalho como uma nuvem lgica. Por exemplo, uma nuvem
fornecendo servios de clculo pode acessar uma outra nuvem fornecendo servios de
armazenamento com o objetivo de manter resultados intermedirios ou dois servios de
processamento podem ser integrados em uma grande nuvem de clculo.

Uma nuvem escalvel verticalmente pode melhorar a prpria capacidade, incrementando individualmente seus ns existentes, como por exemplo, atravs da disponibilizao de um servidor com mais memria fsica ou melhorar a largura de banda que
conecta dois ns.
7.2.5. Arquitetura de Computao em Nuvem
A arquitetura de computao em nuvem baseada em camadas, sendo que cada uma
destas trata de uma particularidade na disponibilizao de recursos para as aplicaes
[Buyya et al. 2009b]. Uma camada uma diviso lgica de componentes de hardware
e software. Alguns destes recursos computacionais podem ser agrupados e organizados
para realizar uma determinada tarefa do sistema como um todo. Cada camada pode ter
seu gerenciamento ou monitoramento de forma independente das outras camadas, melhorando a flexibilidade, reusabilidade e escalabilidade no tocante a substituio ou adio de
recursos computacionais sem afetar as outras camadas. A Figura 7.4 exibe essas camadas
e suas respectivas associaes.

Figura 7.4. Arquitetura da computao em nuvem [Vecchiola et al. 2009]

A camada de mais baixo nvel a de infra-estrutura fsica, que contem datacenters, clusters, desktops e outros recursos de hardware, podendo ter recursos heterogneos.
Com isso, fornece certa flexibilidade e facilidade de agregao de novos recursos a medida que se tornem necessrios.
Uma camada de middleware responsvel por gerenciar a infra-estrutura fsica
e tem por objetivo fornecer um ncleo lgico de uma nuvem. Estes servios contm
negociaes de QoS, gerenciamento dos SLA, servios de cobrana, servios para verificar aceitao de requisies baseado no QoS e preo, servios para clculo, servios de
gerenciamento de virtualizao, entre outros.
No nvel acima da camada de middleware, encontra-se a camada responsvel por
prover suporte para a construo de aplicaes e que contem ferramentas ou ambientes
de desenvolvimento. Estes ambientes possuem interfaces Web 2.0, marshups, componentes, recursos de programao concorrente e distribuda, suporte a workflows, bibliotecas de programao e linguagens de programao. Esta camada de desenvolvimento

no utilizada pelos usurios finais, e sim, pelos usurios mais experientes, aqueles que
desenvolvem as solues para computao em nuvem.
Por fim, encontra-se a camada das aplicaes de computao em nuvem. Esta camada de interesse do usurio, pois por meio dela que eles utilizam os aplicativos. As
camadas abaixo desta so responsveis pelas caractersticas de escalabilidade, disponibilidade, iluso de recursos infinitos e alto desempenho. Algumas solues de arquitetura
podem incluir uma camada de gerenciamento de adaptaes sendo esta responsvel por
fornecer adaptao a estas solues. Essas adaptaes ocorrem de forma automtica ou
semi-automtica e com isso, diminui os esforos humanos para gerenciar arquiteturas de
computao em nuvem.

7.3. Tecnologias de Computao em Nuvem


A computao em nuvem envolve uma grande quantidade de conceitos e tecnologias.
Empresas e corporaes como a Amazon, Google e Microsoft esto publicando servios
computacionais seguindo a lgica da infra-estrutura de computao em nuvem, sendo a
Amazon a pioneira em disponibilizar e comercializar infra-estrutura deste tipo.
A comunidade acadmica tambm tem apresentado interesse em computao em
nuvem, sendo que alguns trabalhos tem sido direcionados para melhorias de aspectos de
desempenho, segurana, usabilidade, implementao e confiabilidade do sistema como
um todo [Armbrust et al. 2009]. Outros trabalhos tm desenvolvido novas tcnicas para
compor infra-estruturas adequadas a cada contexto dos ambientes de computao em nuvem, dentre os quais podemos destacar o projeto Eucalyptus [Liu et al. 2007], desenvolvido pela Universidade da Califrnia. A seguir apresentamos algumas tecnologias, destacando um modelo de programao, infra-estruturas e plataformas para computao em
nuvem.
7.3.1. MapReduce/Hadoop
O MapReduce [Dean and Ghemawat 2004] um modelo de programao que visa o processamento de grandes volumes de dados, onde o usurio especifica sua aplicao atravs
da seqncia de operaes MapReduce. As tarefas de paralelismo, tolerncia a falhas,
distribuio dos dados e balanceamento de carga so deixadas a cargo do sistema MapReduce, simplificando o processo de desenvolvimento. Do ponto de vista de sistemas
distribudos, o MapReduce oferece transparncia de replicao, distribuio e sincronizao.
No modelo MapReduce cada operao composta por duas funes. A primeira
chamada de funo de Mapeamento recebe uma poro do arquivo de entrada e de acordo
com a especificao do usurio emite um conjunto de tuplas intermedirias no formato
chave-valor. A segunda funo, chamada Reduo, recebe um conjunto de valores associados a cada chave, chamados de blocos. O processamento, definido pelo usurio,
realizado sobre cada bloco. Por fim, cada funo de reduo emite um conjunto de tuplas
que so armazenadas em arquivos de sada. A Figura 7.5 ilustra as fases do MapReduce.
O sistema MapReduce gerencia o processamento atravs de um processo master,
cuja funo de orquestrar o processamento e gerenciar o processo de agrupamento de

Figura 7.5. Fases do MapReduce

registros e distribuir os blocos de forma equilibrada. O MapReduce foi implementado


utilizando C++ com interfaces para Java e Python.
O MapReduce foi desenvolvido pelo Google mas existem algumas implementaes de cdigo livre, dentre as quais destaca-se o Hadoop [Hadoop 2009]. O Hadoop
um framework de cdigo livre desenvolvido em Java para rodar aplicaes que manipulem
uma grande quantidade de dados em ambientes distribudos. O Hadoop composto pelo
sistema de arquivos HDFS (Hadoop Distributed File System) e um ambiente de execuo
paralela. Dentro deste ambiente, ou melhor, do Hadoop framework, podemos encontrar
vrios subprojetos como, por exemplo, a implementao do MapReduce, o HBase como
um banco de dados distribudo e o Pig como linguagem de fluxo de dados e estrutura de
execuo para computao paralela.
O Hadoop possui como principais caractersticas: sistemas de armazenamento
distribudo, arquivos particionados em grandes blocos e distribudos nos ns do sistema,
blocos replicados para lidar com falha de hardware e um local para dados temporrios.
Diferentemente de outras abordagens de sistemas de arquivos distribudos, o armazenamento e processamento do HDFS feito em cada n do sistema. Dessa forma, usando o
MapReduce ou o Hadoop, relativamente fcil para um projeto de computao trabalhar
com 10 TB de dados e com mais de 1000 ns. At recentemente, isso no seria possvel
na maioria dos projetos.
7.3.2. Amazon EC2
O Amazon EC2 um ambiente de computao em nuvem disponvel atravs de servios
Web e com caractersticas de escalabilidade, disponibilidade, elasticidade e desempenho
para aplicaes executadas neste ambiente. O EC2 disponibiliza uma infra-estrutura completa para computao em diversos nveis de processamento, desde tarefas simples at de
alto desempenho e possui uma gerencia eficaz dos recursos. Do ponto de vista de economia, o EC2 reduz os custos, atravs da computao sob demanda, otimizando os recursos
computacionais alm de fornecer aos desenvolvedores ferramentas para construir aplicaes escalveis.
O EC2 permite um controle completo de suas instncias, sendo possvel acessar

e interagir com cada umas destas, de forma similar a mquinas convencionais. Tambm
possvel escolher as caractersticas de cada instncia, tais como sistema operacional,
pacotes de softwares e as configuraes das mquinas, como CPU, memria e armazenamento. Para garantir a segurana, o EC2 utiliza firewall para controlar o acesso s
instncias, criando ambientes virtuais privados. Para utilizar o EC2, primeiro necessrio criar uma imagem de mquina para executar as aplicaes, chamada de AMI (Amazon
Machine Image), que contem os aplicativos, bibliotecas, dados e configuraes associadas. Esta imagem armazenada em um repositrio seguro, rpido e confivel.
O EC2 fornece um ambiente altamente confivel, visto que a substituio de instncias pode ser realizada de forma rpida, garantindo o QoS. Alm disso, o EC2 trabalha
em conjunto com o Amazon S3 (Amazon Simple Storage Service), Amazon SimpleDB e o
Amazon SQS (Amazon Simple Queue Service) para fornecer uma soluo completa para
computao, processamento de consultas e armazenamento. A Figura 7.6 ilustra esses
componentes que descrevem a arquitetura do Amazon EC2.

Figura 7.6. Arquitetura do Amazon EC2 [Robinson 2008]

O Amazon SQS fornece confiabilidade e escalabilidade ao enfileirar e armazenar


mensagens que esto sendo trocadas entre os recursos computacionais. Os desenvolvedores podem, de maneira simples, mover dados entre os recursos distribudos das aplicaes entre diferentes domnios com garantia de entrega. O SQS fornece automao de
workflows trabalhando em conjunto com o EC2.
O SimpleDB um servio Web que fornece as funcionalidades de um banco de dados como armazemanento, indexao e consultas em ambientes de nuvem. A arquitetura
do SimpleDB utilizada para o armazenamento e recuperao dos estados do sistema. A
vantagem dessa abordagem que em caso de falhas, um novo n pode ser iniciado quase
que imediatamente baseada nas mensagens contidas na fila do Amazon SQS e seu estado
pelo SimpleDB.

O S3 um sistema de armazenamento pela Internet. Diferentemente do SimpleDB


que um banco de dados, o S3 um sistema de arquivos distribudo, utilizado para
recuperar e armazenar dados. O S3 fornece um repositrio seguro, confivel e rpido para
armazenar as imagens AMI. E ainda armazena e recupera os resultados intermedirios
durante a execuo das tarefas de processamento. Durante a execuo, cada tarefa busca
o arquivo no S3 e faz o devido processamento. As solues EC2 armazenam arquivos
como objetos no S3 e todos os metadados relacionados ao objeto no SimpleDB.
O EC2 Controller o responsvel por executar o processamento sob demanda
utilizando em cooperao os componentes descritos anteriormente e faz toda a lgica de
orquestrao entre os componentes a fim de realizar o processamento distribudo e utiliza
o Hadoop como abordagem de paralelismo entre tarefas, ou seja, subdivide o processamento entre tarefas, coordena as execues e rene os resultados.

7.4. Eucalyptus
O projeto Eucalyptus [Liu et al. 2007] uma infra-estrutura de cdigo aberto que fornece
uma interface compatvel com o Amazon EC2, S3, EBS (Elastic Block Store) e permite
aos usurios criarem uma infra-estrutura e experimentar a computao em nuvem. A
arquitetura do Eucalyptus simples, flexvel e modular e contm uma concepo hierrquica que reflete os recursos comuns do ambiente.
O Eucalyptus tem como objetivo auxiliar a pesquisa e o desenvolvimento de tecnologias para computao em nuvem e o possui as seguintes caractersticas: interface
compatvel com o EC2, instalao e implantao simples usando ferramentas de gerenciamento de clusters, apresenta um conjunto de polticas de alocao extensvel de nuvem, sobreposio de funcionalidade que no requer nenhuma modificao em ambiente
Linux, ferramentas para administrar e auxiliar a gesto do sistema e dos usurios e capacidade de configurar vrios clusters, cada um com endereos privado de rede interna em
uma nica nuvem.
Esse sistema permite aos usurios iniciar, controlar o acesso e gerenciar todas as
mquinas virtuais utilizando uma emulao do protocolo SOAP (Simple Object Access
Protocol) do Amazon EC2 e interfaces de consulta. Neste sentido, os usurios interagem
com o Eucalyptus utilizando as ferramentas e interfaces exatamente do mesmo modo que
eles interagiriam com o Amazon EC2.
7.4.1. Microsoft Azure
O Microsoft Azure [Azure 2009] uma plataforma para a implementao de computao
em nuvem que oferece um conjunto especfico de servios para desenvolvedores. Esta
plataforma pode ser usada por aplicaes em execuo em nuvem ou fora desta. A plataforma Azure formada pelo sistema operacional Windows Azure e um conjunto de
servios: Live Services, .NET Services, SQL Services, SharePoint Services e Dynamics
CRM Services. A Figura 7.7 mostra a plataforma Azure.
O Windows Azure o sistema operacional para servios na nuvem que utilizado
para o desenvolvimento, hospedagem e gerenciamento dos servios dentro do ambiente
Azure. Microsoft .NET Services um conjunto de servios escalveis, orientados ao

Figura 7.7. Arquitetura do Microsoft Azure [Azure 2009]

desenvolvedor e que oferecem componentes necessrios para a maioria das aplicaes


baseadas em nuvem. O Microsoft .NET Services possibilita o desenvolvimento focado na
lgica da aplicao ao invs de ter a necessidade de construir e fazer a disponibilizao do
prprio servio de infra-estrutura na nuvem. Portanto, oferece servios de infra-estrutura
distribudos para aplicaes baseados em nuvem ou locais.
O Live Services um conjunto de componentes dentro do Azure para o tratamento
de dados do usurio e recursos da aplicao. Live Services possibilita aos desenvolvedores
construrem aplicaes ricas que podem conectar com usurios do Windows Live. O Live
Services inclui as tecnologias do Live Mesh para sincronizao de dados dos usurios e
possibilita a extenso de aplicaes Web entre mltiplos dispositivos.
O SQL Services um servio de armazenamento de dados e de processamento
de consultas escalvel, sendo construdo com base na tecnologia do SQL Server. O SQL
Services possui suporte a interfaces SOAP e REST (Representational state transfer), permitindo que seus dados sejam acessados de vrias formas. Para garantir a escalabilidade,
o SQL Services implementa apenas partes do modelo relacional e no possui suporte
completo para a linguagem SQL. O componente SharePoint Services permite colaborar e
criar aplicaes Intranet e o Dynamics CRM Services um sistema totalmente integrado
de CRM.
7.4.2. Google App Engine
Google App Engine [Ciurana 2009] uma plataforma para o desenvolvimento de aplicaes Web escalveis que so executados na infra-estrutura do Google. Ele fornece um
conjunto de APIs e um modelo de aplicao que permite aos desenvolvedores utilizarem
servios adicionais fornecidos pelo Google, como o e-mail, armazenamento, entre outros.
Os servios disponibilizados proporcionam um ambiente seguro e eficaz para aplicaes
que apresentam grandes demandas, fornecendo solues para empresas e desenvolvedores
que necessitam superar os desafios de escalabilidade em seus projetos.
De acordo com modelo de aplicao previsto, os desenvolvedores podem criar
aplicaes Java e Python e podem utilizar diversos recursos tais como: armazenamento,
transaes, ajuste e balanceamento de carga automticos, ambiente de desenvolvimento

local e tarefas programadas.


O armazenamento de dados no Google App Engine no um banco de dados
relacional. O servio de armazenamento de dados do Google App Engine baseado
no BigTable [Chang et al. 2006], um sistema distribudo de armazenamento de dados em
larga escala. O BigTable funciona como um banco de dados orientado a colunas e utiliza o
GFS (Google File System) para gerenciar informaes, podendo ser utilizado juntamente
como o MapReduce para distribuir o processamento dos dados.
As aplicaes desenvolvidas para o App Engine sero executadas no Google, que
realiza, caso necessrio, o dimensionamento automaticamente. O Google oferece um
servio gratuito limitado e utiliza critrios de uso dirio e contas por minuto para calcular
o preo para aplicaes que exigem um servio profissional.
7.4.3. Aneka
O Aneka [Vecchiola et al. 2009] uma plataforma para a implementao de aplicaes
em computao em nuvem baseada em .NET. O Aneka fornece servios de persistncia,
segurana (autorizao, autenticao e auditoria), comunicao e manipulao de mensagens, incluindo alguns servios opcionais: indexao, programao e execuo. Com
isso, o Aneka proporciona flexibilidade e extensibilidade para orquestrar vrios servios.
O objetivo central do Aneka fornecer um ambiente que implantado em uma infraestrutura fsicas e virtuais e que permite a execuo de aplicativos desenvolvidos com
modelos de aplicaes diferentes.
O Aneka fornece aos desenvolvedores um rico conjunto de APIs para explorar esses recursos de forma transparente e expressar a lgica de negcio das aplicaes
usando as abstraes de programao. Os administradores de sistema podem utilizar uma
coleo de ferramentas para monitorar e controlar a infra-estrutura implantada.
O Aneka possui um SDK (Software Development Kit) que permite aos desenvolvedores criarem aplicaes no contexto de nuvens em qualquer linguagem suportada pelo
.NET runtime e um conjunto de ferramentas para rpida criao de nuvens, estando disponvel para o Windows e sistemas baseados em Linux. Uma caracterstica interessante
do Aneka que ele utiliza os ciclos de CPU ociosos de uma rede heterognea de computadores, servidores ou data centers sob demanda. A Figura 7.8 apresenta a arquitetura do
Aneka.
No nvel de aplicao encontram-se as aplicaes disponibilizadas, ou seja, postas
no ambiente execuo. Neste nvel existem os artefatos de desenvolvimento de aplicaes,
tais como os SDK, APIs, ferramentas, e existe todo o instrumental de gerenciamento que
promove o monitoramento e ajuste das aplicaes e do ambiente.
Cada um dos recursos no Aneka instanciado em um Container que representa o
ambiente onde as aplicaes so executadas. Esse Container fornece gerenciamento bsico de funcionalidades de um n e interface para todos os servios e operaes existentes
nele. O Container composto pelos componentes: Execution Services, Foundation Services, Fabric Services e os Transversal Services. Os Execution Services so responsveis
pelos escalonamentos, tcnicas de processamento como o MapReduce, ou seja, executar
de fato as aplicaes.

Figura 7.8. Arquitetura do Aneka [Vecchiola et al. 2009]

Os Foundation Services so os servios de reservas e alocao de recursos, contabilizao, armazenamento dos aspectos relacionados s tarefas, configuraes, usurios
e recursos. Os Fabric Services fornecem acesso aos sistemas de provisionamento para
recursos da infra-estrutura. Os Transversal Services tratam das camadas de persistncia e
de segurana da infra-estrutura.
No nvel de infra-estrutura tm-se os recursos propriamente, tais como recursos
fsicos de hardware e os recursos virtualizados. No intuito de que a infra-estrutura seja
portvel e interopervel. Neste nvel implementado como uma linguagem comum de
especificao que suporta o .NET framework ou Mono.

7.5. Aplicaes de Computao em Nuvem


Diversos tipos de aplicaes baseadas em computao em nuvem esto disponveis. Servios de webmail, sites, softwares como servios em geral so alguns exemplos. Outras
aplicaes esto relacionadas bioinformtica [Deelman et al. 2008] e processamento de
imagens. Outros exemplos mais recentes e concretos do uso de computao em nuvem
so:
O jornal NY Times usou EC2 e S3 da Amazon para converter 15 milhes de artigos
de notcias para PDF (4 TB), para distribuio online, em uma questo de minutos.
A bolsa de valores eletrnica Nasdaq usa S3 para disponibilizar informaes sobre
o histrico de aes, sem onerar sua prpria infra-estrutura de TI

Financeiras e seguradoras usam a nuvem para executar a avaliao de risco e calcular o custo dos emprstimos.
Neste tpico apresentamos uma aplicao executada em nuvem para deteco de
arquivos maliciosos e indesejados.
7.5.1. CloudAV
As aplicaes antivrus so ferramentas muito utilizadas para detectar e bloquear arquivos
maliciosos e indesejados. No entanto, a eficcia h longo prazo de antivrus tradicionais
questionvel. As aplicaes de antivrus podem falhar para detectar muitas ameaas
modernas e sua crescente complexidade resulta em vulnerabilidades que esto sendo exploradas por certos vrus.
O CloudAV [Oberheide et al. 2008] um novo modelo para deteco de vrus em
mquinas baseado no fornecimento de um antivrus como um servio de computao em
nuvem. Este modelo utiliza uma tcnica chamada de N-version protection, que permite a
identificao de arquivos maliciosos e indesejados por mltiplos mecanismos de deteco
em paralelo. Neste sentido, cada arquivo analisado por diversas aplicaes antivrus, o
que fornece uma melhor identificao de arquivos maliciosos.
A Figura 7.9 ilustra a arquitetura proposta pelo CloudAV. O CloudAV possui dois
componentes arquiteturais: um agente e um servio de rede. O agente hospedado na
mquina dos usurios e tem por funo verificar a existncia de novos arquivos nesta mquina e envi-los para o servio de rede. Estes arquivos podem ser originados por diversos
meios, tecnologias ou aplicaes. Quando um arquivo chega na mquina monitorada, o
agente identifica este arquivo e o envia para o servio de rede.

Figura 7.9. Arquitetura do CloudAV [Oberheide et al. 2008]

O servio de rede composto por outros servios: servio de anlise e servio


baseado em tcnicas forenses. Este servio de rede tem a responsabilidade de receber os
arquivos enviados pelo agente e identificar os arquivos maliciosos ou que sejam dotados
de contedos suspeitos. Para identificar estes arquivos, o servio de rede utiliza o servio
de anlise, sendo este composto por diversos aplicativos antivrus.
Aps a analise dos arquivos, o servio de rede notifica o agente sobre o status dos
arquivos. O servio baseado em tcnicas forenses armazena informaes sobre os arquivos analisados e fornece uma interface de consulta e de alerta para os administradores do
CloudAV. Com base nas informaes armazenadas pode-se eliminar verificaes desnecessrias, organizar procedimentos futuros e efetuar otimizaes em outros processos de

deteco. Para melhorar o desempenho no fluxo de envio de arquivos para deteco, o


CloudAV utiliza tcnicas baseadas em cache.
O CloudAV executado em mquinas virtuais, de forma a garantir a escalabilidade. Atualmente o CloudAV pode ser utilizado em ambientes Windows, Linux,
FreeBSD, Sendmail/postfix e Nokia Maemo, trabalha com dez aplicativos antivrus: Avast,
AVG, BitDefender , ClamAV, F-Prot, F-Secure, Kaspersky, McAfee, Symantec e Trend
Micro e dois softwares para deteco de comportamento: Norman Sandbox e CWSandbox.
Para avaliar o CloudAV, utilizou-se dados reais coletados por um perodo superior
a seis meses e um banco de dados com 7220 amostras de vrus detectados durante o
perodo de um ano. Com base nos resultados, foi possvel observar que o CloudAV 35%
mais eficaz na deteco de ameaas recentes em comparao com um nico aplicativo
antivrus e apresentou uma taxa de 98% de deteco em relao ao conjunto completo de
dados analisados. Outros resultados podem ser encontrados em [Oberheide et al. 2008].
Com base nos resultados, percebeu-se que a utilizao de um aplicativo antivrus
como servio apresenta alguns benefcios, dentre as quais podemos destacar: (a) o cliente
no precisa manter seu antivrus atualizado, pois isso realizado de forma automtica
pelo provedor do servio (b) as mquinas clientes no desperdiam ciclos de CPU, j que
o processo de anlise e deteco efetuado pelo servio (c) pode-se combinar estratgias
para a deteco, melhorando a identificao de arquivos maliciosos.

7.6. Desafios
Computao em nuvem apresenta diversas vantagens, discutidas neste trabalho, mas tambm possui uma srie de desafios a serem superados na utilizao desse tipo de ambiente.
A seguir destacamos alguns destes desafios.
7.6.1. Segurana
A Computao em nuvem um modelo que utiliza a Internet para disponibilizar seus
servios. Assim, deve-se ter formas para impedir o acesso no autorizado a informaes e que os dados sensveis permaneam privados, pois estes sero processados fora
da empresa. Questes de segurana devem ser consideradas para prover a autenticidade,
confidencialidade e integridade. No que diz respeito confiabilidade e responsabilidade,
o provedor deve fornecer recursos confiveis, especialmente se a computao a ser realizada crtica e existindo uma clara delimitao de responsabilidade.
7.6.2. Gerenciamento de Dados
O gerenciamento de dados considerado um ponto crtico no contexto de computao
em nuvem. Os SGBDs relacionais no possuem escalabilidade quando milhares de stios so considerados [Wei et al. 2009]. Assim, aspectos de armazenamento de dados,
processamento de consultas e controle transacional tem sido flexibilizados por algumas
abordagens para garantir a escalabilidade, mas ainda no existem solues que combinem
estes aspectos de forma a melhorar o desempenho sem comprometer a consistncia dos
dados [Abadi 2009]. Existe diversas abordagens para gerenciar dados em nuvens, dentre
as quais podemos citar o Microsoft Azure e HBase [Brantner et al. 2008].

Um aspecto importante o trade-off entre funcionalidades e custos operacionais enfrentados pelos provedores de servios. Os servios em nuvem para dados oferecem APIs mais restrita do que os SGBD relacionais, com uma linguagem minimalista
de consulta e garantia de consistncia limitada [Abouzeid et al. 2009]. Isso exige mais
esforo de programao dos desenvolvedores, mas permite aos provedores construrem
servios mais previsveis e oferecerem SLA. De acordo com [Armbrust et al. 2009], a
criao de um sistema de armazenamento que combina os diversos aspectos de computao em nuvem, de forma a aumentar a escalabilidade, a disponibilidade e consistncia
dos dados um problema de pesquisa em aberto.
7.6.3. Autonomia
A computao em nuvem um sistema autnomo gerenciado de forma transparente para
os usurios. Hardware e software dentro de nuvens podem ser automaticamente reconfigurados, orquestrados e estas modificaes so apresentadas ao usurio como uma imagem nica. Essa autonomia importante, pois reduz o custo de equipe de monitoramento
do sistema tanto no mbito centralizado quanto distribudo [Birman et al. 2009]. Comparados com sistemas tradicionais, possvel identificar trs fatores complexos: interveno
humana limitada, alta alternncia na carga de processamento e uma variedade de infraestruturas compartilhadas.
Na maioria dos casos, no existem administradores de sistemas para ajudar os
desenvolvedores que acessam a nuvem, fazendo com que a plataforma seja automatizada
ao mximo e os usurios podem variar a carga de trabalho habitual, necessitando de uma
infra-estrutura de virtualizao eficaz. A gerncia tambm importante no contexto do
desenvolvimento de tecnologia de auto-sintonia. Assim sendo, tcnicas adaptativas e online devero ser desenvolvidas para tornar estes sistemas viveis [Aboulnaga et al. 2009].
7.6.4. Disponibilidade de Servios
A disponibilidade de servios permite aos usurios acessar e utilizar a nuvem onde e
quando desejarem. Como se trata da Internet podem ocorrer atrasos e sistemas indisponveis. Os ambientes de computao em nuvem devem prover alta disponibilidade.
Para tanto, esses podem utilizar tcnicas de balanceamento de carga dinmico e composio de nuvens de forma a atender as necessidades dos usurios. Por exemplo, podem-se
construir aplicaes altamente disponveis com a implantao de duas ofertas de nuvem
diferentes. Caso uma das nuvens falhe, a outra nuvem continua a apoiar a disponibilidade
das aplicaes.
7.6.5. Escalabilidade e Desempenho
A escalabilidade foi uma das caractersticas fundamentais que conduziram ao surgimento
da computao em nuvem. As nuvens de servios e as plataformas oferecidas podem
ser dimensionadas por vrios fatores, tais como localizaes geogrficas, desempenho ou
configuraes. Apesar das limitaes de rede e segurana, as solues de computao em
nuvem devem fornecer elevado desempenho, alm de ser flexvel para se adaptar diante
de uma determinada quantidade de requisies. Como os ambientes de computao em
nuvem possuem acesso pblico, imprevisvel e varivel a quantidade de requisies
realizadas, tornando mais complexo fazer estimativas e garantias de QoS.

7.6.6. Descrio, Descoberta e Composio de Servios


Na computao em nuvem vrios modelos evoluram rapidamente para aproveitar as tecnologias de software, plataformas de programao, armazenamento de dados e infraestrutura de hardware como servios [Youseff et al. 2008]. Enquanto estes modelos se
referem ao ncleo dos servios de computao em nuvem, suas inter-relaes tm sido
ambguas e a viabilidade de sua interoperabilidade questionvel. Alm disso, cada servio da nuvem tem interfaces e protocolos diferentes. Como os diversos servios esto
dispersos no ambiente e possuem caractersticas diferentes, desenvolver tcnicas eficazes
para descrever, descobrir e compor estes servios torna-se um desafio interessante.
7.6.7. Licenciamento de Software
Embora pesquisas em computao tenham investigado vrios modelos econmicos de
infra-estrutura computacional durante a ltima dcada, a computao em nuvem tem uma
abordagem mais aplicada aos negcios e relacionada ao custo. Assim, a computao em
nuvem apresenta divermos modelos de preo, sendo estes organizados em trs grupos:
preo diferenciado, preos por unidade e assinatura de servios bsicos. Preo diferenciado o modelo adotado pela Amazon, onde os servios so oferecidos em vrios nveis
de especificaes, tais como alocao de memria e tipo de CPU, informaes de SLA e
o valor cobrado um preo especfico por unidade de tempo.
Preo por unidade normalmente aplicado a dados transferidos ou ao uso de
memria. Este modelo mais flexvel do que o de preo diferenciado, j que permite
aos usurios personalizarem a alocao de memria de seus sistemas baseados nas necessidades de aplicaes especficas. O modelo de assinatura de servios bsicos o modelo
de preos mais amplamente utilizado, permitindo aos usurios preverem suas despesas
previamente na utilizao de um servio. Contudo, este modelo no tem a preciso em
cobrar dos usurios o que eles tm realmente utilizado.
7.6.8. Integrao de Servios
A integrao de servios um grande desafio, no sentido de oferecer interoperabilidade
entre recursos heterogneos para prover um processamento de maior porte. Assim, o uso
de tecnologias de integrao de dados, servios e linguagens devem ser empregadas e
adaptadas no contexto da infra-estrutura de computao em nuvem.
7.6.9. Padronizao
Empresas de desenvolvimento de software tm interesse que aplicaes possam ser transferidas para a nuvem de forma simples. Essas empresas tambm esperam que exista
interoperabilidade entre diferentes servios de nuvem, como por exemplo, entre servios de armazenamento. As APIs da Amazon esto se tornando um padro de fato para
servios sob demanda [OpenCloud 2009]. Contudo, a quantidade de tecnologias envolvidas muito grande, tornando-se um desafio padronizar as diversas interfaces e servios
[Brandic 2009].

7.6.10. Avaliao de Nuvem


Existem muitos servios disponveis em nuvem e algumas iniciativas para medir avaliar
servios especficos [Binnig et al. 2009]. Assim, o desenvolvimento de um benchmark de
propsito geral, que permita avaliar diversos tipos de servios um ponto importante. Este
benchmark deve ser composto de uma ferramenta para gerar cargas de trabalho, monitorar
o desempenho e mtricas para calcular o custo por usurio em uma determinada unidade
de tempo [Yigitbasi et al. 2009]. Outra alternativa para a avaliao de nuvem consiste no
desenvolvimento de sistemas de simulao, tais como o CloudSim [Buyya et al. 2009a].

7.7. Concluses
A informtica como um servio est finalmente emergindo. Com isso, as empresas podem
prestar servios diretamente aos usurios atravs da Internet de acordo com as necessidades destes usurios. Neste contexto, a computao em nuvem um paradigma que est
cada vez mais popular. Diversas empresas apresentaram suas iniciativas na promoo
da computao em nuvem. A comunidade cientfica tambm tem apresentado algumas
iniciativas, principalmente com foco em suas necessidades.
Este trabalho apresentou os principais aspectos de computao em nuvem e alguns
conceitos e tecnologias relacionadas com estes ambientes. Foi possvel perceber que a
computao em nuvem ainda no tem uma definio clara e completa na literatura, mas
que existe um grande esforo neste sentido. Aplicaes baseadas em computao em
nuvem tambm foram apresentadas.
Foram discutidos alguns desafios de pesquisa importantes, tais como segurana,
gerenciamento de dados, disponibilidade, padronizao e aspectos da prpria utilizao
da computao em nuvem. importante ressaltar que, vrias solues, existentes em
outros modelos computacionais, que resolvem ou atenuem estes desafios, podem ser aplicadas em ambientes de computao em nuvem. Estes desafios geram oportunidades de
pesquisa que devem ser superados, de forma que computao em nuvem seja amplamente
aceita e utilizada por todos.

Referncias
[Abadi 2009] Abadi, D. J. (2009). Data management in the cloud: Limitations and opportunities. IEEE Data Eng. Bull., 32:312.
[Aboulnaga et al. 2009] Aboulnaga, A., Salem, K., Soror, A. A., Minhas, U. F., Kokosielis, P., and Kamath, S. (2009). Deploying database appliances in the cloud. IEEE Data
Eng. Bull., 32(1):1320.
[Abouzeid et al. 2009] Abouzeid, A., Bajda-Pawlikowski, K., Abadi, D. J., Rasin, A.,
and Silberschatz, A. (2009). Hadoopdb: An architectural hybrid of mapreduce and
dbms technologies for analytical workloads. PVLDB, 2(1):922933.
[Armbrust et al. 2009] Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R. H.,
Konwinski, A., Lee, G., Patterson, D. A., Rabkin, A., Stoica, I., and Zaharia, M.
(2009). Above the clouds: A berkeley view of cloud computing. Technical report,
EECS Department, University of California, Berkeley.

[Azure 2009] Azure (2009). "Microsoft Azure". http://www.microsoft.com/azure/.


[Binnig et al. 2009] Binnig, C., Kossmann, D., Kraska, T., and Loesing, S. (2009). How
is the weather tomorrow?: towards a benchmark for the cloud. In DBTest 09: Proceedings of the Second International Workshop on Testing Database Systems, pages 16,
New York, NY, USA. ACM.
[Birman et al. 2009] Birman, K., Chockler, G., and van Renesse, R. (2009). Toward a
cloud computing research agenda. SIGACT News, 40(2):6880.
[Brandic 2009] Brandic, I. (2009). Towards self-manageable cloud services. Computer
Software and Applications Conference, Annual International, 2:128133.
[Brantner et al. 2008] Brantner, M., Florescu, D., Graf, D., Kossmann, D., and Kraska,
T. (2008). Building a database on s3. In Proceedings of the 2008 ACM SIGMOD
international conference on Management of data - SIGMOD 08, page 251, New York.
ACM Press.
[Buyya et al. 2009a] Buyya, R., Ranjan, R., and Calheiros, R. N. (2009a). Modeling
and simulation of scalable cloud computing environments and the cloudsim toolkit:
Challenges and opportunities. CoRR, abs/0907.4878.
[Buyya et al. 2009b] Buyya, R., Yeo, C. S., Venugopal, S., Broberg, J., and Brandic, I.
(2009b). Cloud computing and emerging it platforms: Vision, hype, and reality for
delivering computing as the 5th utility. Future Gener. Comput. Syst., 25(6):599616.
[Chang et al. 2006] Chang, F., Dean, J., Ghemawat, S., Hsieh, W. C., Wallach, D. A.,
Burrows, M., Chandra, T., Fikes, A., and Gruber, R. E. (2006). Bigtable: a distributed
storage system for structured data. In OSDI 06: Proceedings of the 7th USENIX
Symposium on Operating Systems Design and Implementation, pages 1515, Berkeley,
CA, USA. USENIX Association.
[Ciurana 2009] Ciurana, E. (2009). Developing with Google App Engine. Apress, Berkely, CA, USA.
[Dean and Ghemawat 2004] Dean, J. and Ghemawat, S. (2004). Mapreduce: simplified
data processing on large clusters. In OSDI04: Proceedings of the 6th conference on
Symposium on Opearting Systems Design & Implementation, pages 1010, Berkeley,
CA, USA. USENIX Association.
[Deelman et al. 2008] Deelman, E., Singh, G., Livny, M., Berriman, B., and Good, J.
(2008). The cost of doing science on the cloud: the montage example. In SC 08:
Proceedings of the 2008 ACM/IEEE conference on Supercomputing, pages 112, Piscataway, NJ, USA. IEEE Press.
[Hadoop 2009] Hadoop (2009). "Apache Hadoop". http://hadoop.apache.org/.
[Liu et al. 2007] Liu, S., Liang, Y., and Brooks, M. (2007). Eucalyptus: a web serviceenabled e-infrastructure. In CASCON 07: Proceedings of the 2007 conference of the
center for advanced studies on Collaborative research, pages 111, New York, NY,
USA. ACM.

[Marinos and Briscoe 2009] Marinos, A. and Briscoe, G. (2009). Community cloud
computing. CoRR, abs/0907.2485.
[Mei et al. 2008] Mei, L., Chan, W. K., and Tse, T. H. (2008). A table of clouds: Paradigm comparisons and some thoughts on research issues. In APSCC 08: Proceedings
of the 2008 IEEE Asia-Pacific Services Computing Conference, pages 464469, Washington, DC, USA. IEEE Computer Society.
[NIST 2009] NIST (2009). "National Institute of Standards and Technology Draft Definition of Cloud Computing". http://csrc.nist.gov/groups/SNS/cloud-computing.
[Oberheide et al. 2008] Oberheide, J., Cooke, E., and Jahanian, F. (2008). Cloudav: Nversion antivirus in the network cloud. In SS08: Proceedings of the 17th conference
on Security symposium, pages 91106, Berkeley, CA, USA. USENIX Association.
[OpenCloud 2009] OpenCloud (2009).
http://www.opencloudmanifesto.org/.

"The

Open

Could

Manifesto".

[Robinson 2008] Robinson, D. (2008). Amazon Web Services Made Simple: Learn how
Amazon EC2, S3, SimpleDB and SQS Web Services enables you to reach business goals
faster. Emereo Pty Ltd, London, UK, UK.
[Salesforce 2009] Salesforce (2009). "Salesforce". http://www.salesforce.com/.
[Vaquero et al. 2009] Vaquero, L. M., Rodero-Merino, L., Caceres, J., and Lindner, M.
(2009). A break in the clouds: towards a cloud definition. SIGCOMM Comput. Commun. Rev., 39(1):5055.
[Vecchiola et al. 2009] Vecchiola, C., Chu, X., and Buyya, R. (2009). Aneka: A software
platform for .net-based cloud computing. CoRR, abs/0907.4622.
[Wei et al. 2009] Wei, Z., Pierre, G., and Chi, C.-H. (2009). Scalable transactions for
web applications in the cloud. In Euro-Par, pages 442453.
[Yigitbasi et al. 2009] Yigitbasi, N., Iosup, A., Epema, D., and Ostermann, S. (2009).
C-meter: A framework for performance analysis of computing clouds. In CCGRID
09: Proceedings of the 2009 9th IEEE/ACM International Symposium on Cluster
Computing and the Grid, pages 472477, Washington, DC, USA. IEEE Computer
Society.
[Youseff et al. 2008] Youseff, L., Butrico, M., and Silva, D. D. (2008). Toward a unified
ontology of cloud computing. In Grid Computing Environments Workshop (GCE08).

You might also like