Você está na página 1de 26

Captulo

7
Computao em Nuvem: Conceitos, Tecnologias,
Aplicaes e Desafios 1 2
Flvio R. C. Sousa, Leonardo O. Moreira e Javam C. Machado
Universidade Federal do Cear (UFC)

Abstract
Platforms and software are available as services, both being used in Cloud Computing
environments. This has improved flexibility, reducing total business cost and providing
on-demand services. Several companies already use cloud computing to distribute its
software, and it is believed that a constant migration to these environments will take place
in the upcoming years. This paper 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 software esto disponibilizados como servios, sendo estes disponibilizados por 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 sistemas de software e acreditase que ocorrer uma migrao constante para estes ambientes. Esse artigo tem como
objetivo apresentar os principais conceitos e tecnologias de computao em nuvem, sua
arquitetura e modelos de servios e implantao, bem como, aplicaes executadas nestes
ambientes. Por fim, desafios e oportunidades em computao em nuvem so apresentados.

1 Publicado
2 Verso

no ERCEMAPI 2009. Todos os direitos reservados a EDUFPI.


revisada e estendida em Setembro de 2010.

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, eletricidade, telefone e gs tornaram-se fundamentais para nossa vida diria e
so explorados por meio do modelo de pagamento baseado no uso [Vecchiola et al. 2009].
As infraestruturas 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 de
tarifao 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 terceirizam
toda infraestrutura 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.
A computao em nuvem surge da necessidade de construir infraestruturas de TI
complexas, onde os usurios tm que realizar instalao, configurao e atualizao de
sistemas de software. Em geral, os recursos de computao e hardware so propensos a
ficarem obsoletos rapidamente e a utilizao de plataformas computacionais de terceiros
uma soluo inteligente para os usurios lidarem com a infraestrutura de TI. Na computao em nuvem os recursos de TI so fornecidos como um servio, permitindo que
os usurios o acessem sem a necessidade de conhecimento sobre a tecnologia utilizada.
Assim, os usurios e as empresas passaram a acessar os servios sob demanda e independente de localizao, o que aumentou a quantidade de servios disponveis.
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 aborda a computao em nuvem e est organizado da seguinte
forma: a seo 7.2 apresenta os principais conceitos de computao em nuvem. A seo
7.3 apresenta as tecnologias atuais de computao em nuvem. A seo 7.4 apresenta algumas aplicaes para computao em nuvem. A seo 7.5 apresenta os principais desafios
em computao em nuvem e finalmente a seo 7.6 apresenta algumas concluses.

7.2. 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 infraestrutura de comunicao entre os componentes arquiteturais, baseada em uma abstrao que oculta complexidade de infraestrutura. Cada parte desta infraestrutura provida como um servio e, estes so normalmente
alocados em centros de dados, utilizando hardware compartilhado para computao e armazenamento [Buyya et al. 2009b].
Para utilizarem os servios, os usurios necessitam apenas ter em suas mquinas
um sistema operacional, um navegador e acesso a Internet. Todos os recursos computacionais esto disponveis na nuvem e as mquinas dos usurios no necessitam ter altos
recursos computacionais, diminuindo o custo na aquisio de mquinas. 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.
A infraestrutura do ambiente de computao em nuvem normalmente composta
por um grande nmero, centenas ou milhares de mquinas fsicas ou ns fsicos de baixo
custo, conectadas por meio de uma rede como ilustra a Figura 7.2. Cada mquina fsica
tem as mesmas configuraes de software, mas pode ter variao na capacidade de hardware em termos de CPU, memria e armazenamento em disco [Soror et al. 2010]. Dentro de cada mquina fsica existe um nmero varivel de mquinas virtuais (VM) ou ns
virtuais em execuo, de acordo com a capacidade do hardware disponvel na mquina
fsica.

Figura 7.2. Ambiente de Computao em Nuvem

O modelo de computao em nuvem foi desenvolvido com o objetivo de fornecer


servios de fcil acesso, baixo custo e com garantias de disponibilidade e escalabilidade.
Este modelo visa fornecer, basicamente, trs benefcios. O primeiro benefcio reduzir
o custo na aquisio e composio de toda infraestrutura requerida para atender as necessidades das empresas, podendo essa infraestrutura 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 substituio de recursos computacionais, podendo
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 [Brantner et al. 2008].
O objetivo da Utility Computing fornecer componentes bsicos como armazenamento,
processamento e largura de banda de uma rede como uma mercadoria atravs de provedores especializados com um baixo custo por unidade utilizada. Usurios de servios
baseados em Utility Computing no precisam se preocupar com escalabilidade, pois a
capacidade de armazenamento fornecida praticamente infinita. A Utility Computing
prope fornecer 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,
pois se os componentes falharem, o provedor responsvel por substitu-los e tornar os
dados disponveis em tempo hbil por meio de rplicas [Brantner et al. 2008].
Uma 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 realizada a contabilizao do uso.
Com o objetivo de com auxiliar na compreenso da Utility Computing, considere

o seguinte exemplo. Suponha que voc tenha um requisito para operar 100 servidores por
trs anos. Uma opo seria alugar estes servidores por $ 0.40 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 e que sejam necessrios dois funcionrios para
administra-los pagando $ 100.000 por ano. Suponha ainda que os servidores consomem
150 watts cada e o custo da eletricidade de $ 0.10 por quilowatt-hora. Assim, o custo anual para operar os 100 servidores seria de $ 13.140 e a opo de comprar e administra-los
custaria 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 alugar um servio 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 National Institute of Standards and Technology (NIST) [Mell and Grance 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. [Armbrust et al. 2009] propem a seguinte definio: A computao em nuvem um conjunto de servios de rede ativados, proporcionando escalabilidade, qualidade de servio, infraestrutura 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,
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.


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.
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 nuvem no obriga os usurios a mudar suas condies e
ambientes de trabalho, como por exemplo, linguagens de programao e sistema operacional. J os sistemas de software clientes instalados localmente para o acesso nuvem
so leves, como um navegador de Internet.
Pooling de recursos
Os recursos computacionais do provedor so organizados em um pool para servir mltiplos usurios usando um modelo multi-tenant ou multi-inquilino [Jacobs and Aulbach 2007],
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 centro de dados.
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 auxilia a 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.
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 dos usurios ativas. O uso de recursos pode ser monitorado e controlado,
possibilitando transparncia para o provedor e o usurio do servio utilizado. Para garantir
a qualidade do servio ou Quality of Service (QoS), pode-se utilizar a abordagem baseada
em acordo de nvel de servio ou Services Level Agreement (SLA). 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
O ambiente de computao em nuvem composto de trs modelos de servios. Estes
modelos so importantes, pois eles definem um padro arquitetural para solues de computao em nuvem. A Figura 7.3 exibe estes modelos de servios [Armbrust et al. 2009].

Figura 7.3. Modelos de Servios

Software como um Servio (SaaS)


O modelo de SaaS proporciona sistemas de software com propsitos especficos que esto
disponveis para os usurios atravs da Internet. Os sistemas de software 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 infraestrutura 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 infraestrutura, levando ao desenvolvimento rpido de sistemas de software.
Como o software est na Web, ele pode ser acessado pelos usurios de qualquer
lugar e a qualquer momento, permitindo maior integrao entre unidades de uma mesma
empresa ou outros servios de software. Assim, novos recursos podem ser incorporados
automaticamente aos sistemas de software sem que os usurios percebam estas aes, tornando transparente a evoluo e atualizao dos sistemas. O SaaS reduz os custos, pois
dispensada a aquisio de licenas de sistemas de softwares. Como exemplos de SaaS
podemos destacar os servios de Customer Relationship Management (CRM) da Salesforce [Salesforce 2010] e o Google Docs [Ciurana 2009].

Plataforma como um Servio (PaaS)


A PaaS oferece uma infraestrutura de alto nvel de integrao para implementar e testar aplicaes na nuvem. O usurio no administra ou controla a infraestrutura subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre as aplicaes implantadas e, possivelmente, as configuraes das aplicaes
hospedadas nesta infraestrutura. A PaaS fornece um sistema operacional, linguagens de
programao e ambientes de desenvolvimento para as aplicaes, auxiliando a implementao de sistemas de software, 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 limitaes que o ambiente impe na concepo das aplicaes at a utilizao de sistemas de
gerenciamento de banco de dados (SGBDs) do tipo chave-valor, ao invs de SGBDs 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 para resolues de problemas pela Web. Com isso,
pode-se melhorar o gerenciamento do trabalho e as responsabilidades das equipes de TI
das empresas. Como exemplos de SaaS podemos destacar as PaaS Google App Engine
[Ciurana 2009] e Aneka [Vecchiola et al. 2009].
infraestrutura como um Servio (IaaS)
O IaaS a parte responsvel por prover toda a infraestrutura 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 sob demanda, que podem incluir sistemas operacionais e aplicativos. A IaaS possui algumas caractersticas, tais como uma interface nica para administrao da infraestrutura, Application Programming Interface (API)
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 infraestrutura 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 infraestrutura computacional baseada em tcnicas de
virtualizao de recursos de computao. Esta infraestrutura 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 disponveis e adicionar novos servidores virtuais infraestrutura existente de
forma dinmica. O Amazon Elastic Cloud Computing (EC2) [Robinson 2008] e o Elastic
Utility Computing Architecture Linking Your Programs To Useful Systems (Eucalyptus)
[Liu et al. 2007] so exemplos de IaaS.
Papis na Computao em Nuvem

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. 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.4 destaca estes papis.

Figura 7.4. Papis na Computao em Nuvem

O provedor responsvel por disponibilizar, gerenciar e monitorar toda a estrutura


para a soluo de computao em nuvem, deixando o desenvolvedor e o usurio final
sem esse tipo de responsabilidade e fornecendo servios nos trs modelos de servios.
Os desenvolvedores utilizam os recursos fornecidos e disponibilizam 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.
7.2.3. Modelo de Implantao
Tratando-se do acesso e disponibilidade de ambientes de computao em nuvem, tm-se
diferentes tipos de modelos de implantao. A restrio ou abertura de acesso depende
do processo de negcio, do tipo de informao e do nvel de viso. 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 nuvem pblica, privada, comunidade e hbrida
[Mell and Grance 2009].
Nuvem Privada
No modelo de implantao de nuvem privada, a infraestrutura 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.
Nuvem Pblica
No modelo de implantao de nuvem pblica, a infraestrutura 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, utilizar tcnicas para autenticao e
autorizao.
Nuvem Comunidade
No modelo de implantao de nuvem 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 de modelo de implantao pode existir localmente ou remotamente e geralmente administrado por alguma empresa da comunidade
ou por terceiros.
Nuvem Hbrida
No modelo de implantao de nuvem hbrida, existe uma composio de duas ou mais
nuvens, que podem ser privadas, comunidade ou pblica e que permanecem como entidades nicas, ligadas por uma tecnologia padronizada ou proprietria que permite a
portabilidade de dados e aplicaes.
7.2.4. Arquitetura da 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, reuso e escalabilidade no tocante a substituio ou adio de
recursos computacionais sem afetar as outras camadas. A Figura 7.5 exibe essas camadas
e suas respectivas associaes.
A camada de mais baixo nvel a de infraestrutura fsica, que contem centros de
dados, clusters, desktops e outros recursos de hardware, podendo ter recursos heterogneos. Com isso, fornece certa flexibilidade e facilidade de agregao de novos recursos
medida que se tornem necessrios. Uma camada de middleware responsvel por gerenciar a infraestrutura fsica e tem por objetivo fornecer um ncleo lgico de uma nuvem.
Estes servios contm negociaes de QoS, gerenciamento dos SLAs, servios de cobrana, servios para verificar aceitao de requisies baseado no QoS e preo, servios

Figura 7.5. Arquitetura da Computao em Nuvem [Vecchiola et al. 2009]

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 para 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 infraestrutura de computao em nuvem, sendo a
Amazon a pioneira em disponibilizar e comercializar infraestrutura 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, implementao e confiabilidade do sistema como um todo
[Armbrust et al. 2009]. Outros trabalhos tm desenvolvido novas tcnicas para compor
infraestruturas 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, infraestruturas e plataformas para computao em nuvem.

MapReduce/Hadoop
O MapReduce 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 [Dean and Ghemawat 2004]. 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.6 ilustra as fases do MapReduce.

Figura 7.6. Fases do MapReduce

O sistema MapReduce gerencia o processamento atravs de um processo master, cuja funo orquestrar o processamento, gerenciar o processo de agrupamento de
registros e distribuir os blocos de forma equilibrada. O MapReduce foi implementado
utilizando a linguagem C++ e possui 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 2010].
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 Hadoop Distributed File System (HDFS)
e um ambiente de execuo paralela. Dentro deste ambiente, ou melhor, do Hadoop
framework, pode-se encontrar vrios subprojetos como, por exemplo, a implementao
do MapReduce, o sistema de gerenciamento de dados distribudo denominado HBase e a
linguagem para fluxo de dados e estrutura de execuo para computao paralela denominada Pig [Olston et al. 2008].

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.
Amazon Web Services (AWS)
O Amazon AWS um ambiente de computao em nuvem com caractersticas de escalabilidade, disponibilidade, elasticidade e desempenho para aplicaes executadas neste
ambiente O Amazon AWS disponibiliza uma infraestrutura completa para computao
em diversos nveis de processamento, desde tarefas simples at de alto desempenho e
possui uma gerencia eficaz dos recursos. O Amazon Web Services composto por um
conjunto de sistemas, dentre os quais podemos destacar:
Execuo: Elastic Compute Cloud (EC2).
Armazenamento: Simple Storage Service (S3), SimpleDB e Relational Database
Service (RDS).
Programao: Simple Queue Service (SQS) e Elastic MapReduce.
Monitorizao: Cloudfront.
O EC2 um sistema responsvel pelo gerenciamento da execuo de aplicaes
na infraestrutura da Amazon. O EC2 permite um controle completo das instncias dos
sistemas, 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 software 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 Amazon Machine Image (AMI), que contem os aplicativos, bibliotecas, dados
e configuraes associadas. Esta imagem armazenada em um repositrio seguro, rpido
e confivel.O desempenho de CPU medido em EC2 Compute Unit (ECU), uma unidade
emprica da Amazon que corresponde a aproximadamente entre 1.0 e 1.2 GHz AMD
Opteron. As mquinas virtuais podem no corresponder a mquinas fsicas mas possuem
caractersticas bem definidas, por exemplo:
Small: 32-bit, 1 ECU, 1,7GB RAM, 150 GB HD temporrio.
Large: 64-bit, 4 ECU, 7,5 GB RAM, 840 GB HD temporrio.
XL: 64-bit, 8 ECU, 15 GB RAM, 1680 GB HD temporrio.

O ambiente AWS disponibiliza AMIs pr-configuradas que podem ser alteradas


pelo usurio, assim como a opo de criar uma nova AMI. Em ambos os casos, a AMI
pode ocupar no mximo 10GB. Alguns exemplos de sistemas operacionais disponveis
para exeucuo nas AMI so Red Hat Linux, Windows Server 2003, OpenSolaris, Ubuntu,
Debian. Em relao aos sistemas de software podemos destacar o MySQL, Hadoop, Condor, OpenMPI, Apache e IIS. O EC2 suporta os protocolos Representational State Transfer (REST) e Simple Object Access Protocol (SOAP) e mltiplas interfaces para servios
AWS: Java, C#, Python, extenses do Firefox, ferramentas de linha de comando e o console online Amazon Management Console.
O uso do EC2 requer a criao de pares de chaves pblicas/privadas e sua associao a uma mquina virtual. Com isso, pode-se executar umas destas instncias e depois
verificar o estado de cada instncia e configurar aspectos de rede, tais como DNS. Cada
instncia possui um par endereo IP, nome DNS e outro par privado e os endereos IP so
dinmicos, o que requer um servio de DNS dinmico. Assim, atrasos na atualizao do
DNS podem fazer parecer que h falhas. Em relao segurana, o EC2 utiliza grupos
de segurana. Estes grupos so conjuntos de regras de acesso por redes a instancias EC2.
O trfego de sada livre e o de entrada limitado. As regras de grupo limitam o acesso
externo, acesso a uma porta especfica e determinados protocolos.
O auto-escalonamento permite escalar automaticamente aplicaes Amazon EC2
de acordo com condies definidas pelo usurio. Dessa forma, pode-se aumentar o
nmero de instncias quando a demanda aumenta e reduzi-la quando a demanda diminui,
de modo a minimizar os custos. O EC2 fornece um ambiente altamente confivel, visto
que a substituio de instncias pode ser realizada de forma rpida, garantindo o QoS. A
Figura 7.7 ilustra um exemplo de interao do EC2 para fornecer uma soluo completa
para computao, processamento de consultas e armazenamento.

Figura 7.7. Amazon EC2 [Robinson 2008]

O Amazon SQS um sistema de comunicao confivel e escalvel para 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 de diferentes domnios com garantia de entrega. O SQS fornece automao
de workflows trabalhando em conjunto com o EC2. No Amazon SQS, uma mensagem
um bloco de texto com limite mximo de 8KB e as filas armazenam as mensagens at
que estas sejam entregues. Estas filas armazenam as mensagens relacionadas e permitem
definir opes de entrega e de controle de acesso. Em relao a coerncia, as filas de
mensagens so replicadas para garantir a tolerncia a falhas e escalabilidade. Quando
feita uma leitura so consultados um qurum das rplicas e por isso podem no ser
obtidas todas as mensagens. A entrega das mensagens pedida pelo receptor e assim
no se podem garantir tempos de entrega. O SQS tambm no garante a ordenao das
mensagens e uma mensagem pode ser entregue mais do que uma vez. O SQS no deve ser
usado para operaes que pressuponham um dado estado da aplicao ou para aplicaes
temporizadas, como sistemas transacionais.
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, alm de armazenar e recuperar os resultados intermedirios durante a execuo das
tarefas de processamento. Durante a execuo, as tarefas recuperam os arquivos no S3 e
realizam o devido processamento. As solues EC2 armazenam arquivos como objetos
no S3 e todos os metadados relacionados ao objeto no SimpleDB. O SimpleDB fornece
as funcionalidades de um sistema banco de dados como armazenamento, 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 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. Ele
pode utilizar o o Hadoop como abordagem de paralelismo entre tarefas, ou seja, subdivide
o processamento entre tarefas, coordena as execues e rene os resultados. O EC2 utiliza o Amazon CloudWatch para monitorar o estado das aplicaes em execuo no AWS.
Eucalyptus
O projeto Eucalyptus [Liu et al. 2007] uma infraestrutura de cdigo aberto que fornece
uma interface compatvel com o Amazon EC2, S3, Elastic Block Store (EBS) e permite aos usurios criarem uma infraestrutura 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. A Figura 7.8 mostra a arquitetura
do Eucalyptus, composta por quatro partes:
Node Controller (NC): nvel inferior. Controla instncias das mquinas virtuais nos
ns.
Cluster Controller (CC): nvel intermedirio. Ponte de comunicao entre NC e
CLC.

Figura 7.8. Arquitetura do Eucalyptus [Liu et al. 2007]

Storage Controller (Walrus): nvel superior. Gerencia trfego de dados dentro e


fora da nuvem.
Cloud Controller (CLC): nvel superior. Controla a nuvem como um todo.
O Eucalyptus tem como objetivo auxiliar a pesquisa e o desenvolvimento de tecnologias para computao em nuvem e 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 privados 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 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.
Microsoft Azure
O Microsoft Azure uma plataforma para a implementao de computao em nuvem
que oferece um conjunto especfico de servios para desenvolvedores [Azure 2010]. 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.9 mostra a plataforma Azure.
O Windows Azure um 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

Figura 7.9. Plataforma Microsoft Azure [Azure 2010]

ao desenvolvedor e que oferecem os componentes necessrios para a maioria das aplicaes baseadas em nuvem. Estes servios possibilitam o desenvolvimento focado na
lgica da aplicao ao invs de ter a necessidade de construir e disponibilizar o prprio
servio de infraestrutura na nuvem.
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 componente SharePoint Services
permite colaborar e criar aplicaes Intranet e o Dynamics CRM Services um sistema
totalmente integrado de CRM.
Google App Engine
Google App Engine uma plataforma para o desenvolvimento de aplicaes Web escalveis que so executados na infraestrutura do Google [Ciurana 2009]. Esta plataforma
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.
De acordo com o modelo de aplicao previsto, os desenvolvedores podem criar
aplicaes Java e Python e utilizar diversos recursos tais como armazenamento, transaes,
ajuste e balanceamento de carga automticos, ambiente de desenvolvimento local e tarefas programadas. O Google App Engine possui um servio de armazenamento baseado
no BigTable [Chang et al. 2006], um sistema distribudo de armazenamento de dados em
larga escala. As aplicaes desenvolvidas para o App Engine sero executadas no Google,
que realiza automaticamente, caso necessrio, o dimensionamento.
Aneka

O Aneka uma plataforma para a implementao de aplicaes em computao em nuvem baseada em .NET [Vecchiola et al. 2009]. O Aneka fornece servios de persistncia,
segurana (autorizao, autenticao e auditoria), comunicao e manipulao de mensagens. com isso, o Aneka proporciona flexibilidade e extensibilidade para orquestrar
vrios servios. O objetivo central do Aneka fornecer um ambiente que implantado
em infraestruturas fsicas e virtuais e que permite a execuo de aplicativos desenvolvidos
com modelos de aplicaes diferentes.
O Aneka fornece aos desenvolvedores um conjunto de APIs para explorar esses
recursos de forma transparente e expressar a lgica de negcio das aplicaes usando abstraes de programao. Os desenvolvedores de sistema podem utilizar uma coleo de
ferramentas para monitorar e controlar a infraestrutura implantada. O Aneka possui um
Software Development Kit (SDK) que permite aos desenvolvedores criarem aplicaes
no contexto de nuvens em qualquer linguagem suportada pelo .NET runtime e um conjunto de ferramentas para criao rpida de nuvens, estando disponvel para o Windows e
sistemas baseados em Linux. A Figura 7.10 apresenta a arquitetura do Aneka.

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

No nvel de aplicao, encontram-se as aplicaes disponibilizadas para execuo.


Neste nvel existem os artefatos de desenvolvimento de aplicaes, tais como os SDK,
APIs, ferramentas para 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 o Transversal Services. Os Execution Services so responsveis pelos
escalonamentos, tcnicas de processamento como o MapReduce.
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 infraestrutura. Os Transversal Services tratam das camadas de persistncia

e de segurana da infraestrutura. No nvel de infraestrutura tm-se os recursos propriamente, tais como recursos fsicos de hardware e os recursos virtualizados com o objetivo
de que a infraestrutura seja portvel e interopervel. Neste nvel implementado como
uma linguagem comum de especificao que suporta o .NET framework ou Mono.

7.4. Aplicaes de Computao em Nuvem


Diversos tipos de aplicaes baseadas em computao em nuvem esto disponveis. Servios
de webmail, sites, sistemas de software 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 questo de horas.
A bolsa de valores eletrnica Nasdaq usa S3 para disponibilizar informaes sobre
o histrico de aes, sem onerar sua prpria infraestrutura 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.4.1. CloudAV
Aplicativos 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 um novo modelo para deteco de vrus em
mquinas baseado no fornecimento de um antivrus como um servio de computao em
nuvem [Oberheide et al. 2008]. 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 diversos aplicativos antivrus, o que fornece uma melhor identificao de arquivos maliciosos.
A Figura 7.11 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. 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.

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

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. O CloudAV utiliza tcnicas baseadas em cache para melhorar o
desempenho no fluxo de envio de arquivos para deteco.
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 os sistemas de software 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.5. 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.5.1. Segurana dos Servios de Dados
A computao em nuvem um modelo que utiliza a Internet para disponibilizar seus
servios. Isso se torna mais complexo visto que os recursos computacionais utilizam

diferentes domnios de redes, sistemas operacionais, software, criptografia, polticas de


segurana, entre outros. 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 deve existir uma delimitao de responsabilidade entre o provedor e o usurio. Dessa forma, devem-se ter meios para impedir o acesso no autorizado a
informaes e que os dados sensveis permaneam privados, pois estes podem ser processados fora das empresas [Agrawal et al. 2009]. Em geral, cada sistema tem seu prprio
modelo de dados e poltica de privacidade destes dados [Cooper et al. 2009]. Quando
ocorre a movimentao de dados entre sistemas, deve-se garantir a privacidade dos dados
mesmo com a mudana entre modelo de dados diferente e que aplicaes multi-inquilino
acessem dados de outras aplicaes apenas de acordo com as polticas definidas.
Tcnicas de criptografia podem ser utilizadas para garantir a privacidade dos dados. No entanto, estas tcnicas tm implicaes significativas de desempenho de consultas
em SGBDs. Dessa forma, alternativas para a integrao de tcnicas de criptografia com
SGBDs devem ser investigadas e desenvolvidas, j que a complexidade computacional da
criptografia de dados aumenta o tempo de resposta da consulta. Em [Agrawal et al. 2009]
apresentado uma abordagem segura e escalonvel para preservar a privacidade. Em vez
de utilizar a criptografia, que computacionalmente caro, utilizada uma estratgia de
distribuio dos dados em vrios stios do provedor e tcnicas para acessar as informaes
de forma secreta e compartilhada.
7.5.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.5.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 recon-

figurados, 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
infraestrutura 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.5.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.5.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.5.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 e complexo para os usurios encontrar e
compor servios, visto que os diversos servios esto dispersos na Internet e possuem caractersticas distintas. Por exemplo, suponha que um usurio necessite de um servio de
processamento e outro de armazenamento para persistir os dados processados. Uma alternativa para o usurio seria fazer uma busca exaustiva. Contudo, como existe uma grande
quantidade de servios, isso pode se tornar invivel. Alm disso, ainda seria necessrio

compor os servios de processamento e armazenamento, o que seria outra dificuldade.


Dessa forma, um desafio desenvolver tcnicas eficazes para descrever, descobrir
e compor servios na nuvem de forma a auxiliar os usurios em suas tarefas. Ontologias
podem ser utilizadas para a organizao do domnio de conhecimento de computao em
nuvem, seus componentes e suas relaes, ajudando na descrio e descoberta de servios
em nuvem [Youseff et al. 2008], assim como na composio de novos servios a partir
dos servios existentes. Isso ajudar no projeto de servios com interoperabilidade entre
diferentes provedores, proporcionando melhorias na qualidade dos servios.
7.5.7. Licenciamento de Software
Embora pesquisas em computao tenham investigado vrios modelos econmicos de infraestrutura 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 diversos 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.5.8. Integrao de Servios
Com a evoluo da computao em nuvem, as empresas necessitam integrar os diferentes
ambientes de TI, pois estas empresas utilizam modelos hbridos, nos quais os sistemas
instalados possam interagir com diversos provedores. Contudo, no existem padres de
integrao de sistemas de computao em nuvem. XML pode ser uma alternativa para
mover dados entre ambientes em nuvem, mas os sistemas tambm precisam gerenciar
dados localmente. A utilizao de APIs pode auxiliar neste processo de integrao. Por
exemplo, as APIs da Amazon esto se tornando um padro de fato para servios sob
demanda [OpenCloud 2010]. Contudo, a quantidade de tecnologias envolvidas muito
grande, tornando-se um desafio padronizar as diversas interfaces e servios, bem como
fornecer interoperabilidade entre recursos heterogneos. Desempenho e a evoluo dos
servios so aspectos importantes na integrao de nuvem, pois as aplicaes possuem
requisitos de QoS e as evolues so constantes. Dessa forma, o uso de tecnologias de
integrao de dados, servios e linguagens devem ser utilizadas e adaptadas no contexto
da computao em nuvem.

7.5.9. Avaliao de Servios em 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.6. Concluses
A computao como um servio est finalmente emergindo e as empresas podem prestar
servios diretamente aos usurios por meio da Internet de acordo com as suas necessidades. 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.
[Agrawal et al. 2009] Agrawal, D., Abbadi, A. E., Emekci, F., and Metwally, A. (2009). Database
management as a service: Challenges and opportunities. Data Engineering, International Conference on, 0:17091716.
[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 2010] Azure (2010). 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.
[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.
[Cooper et al. 2009] Cooper, B. F., Baldeschwieler, E., Fonseca, R., Kistler, J. J., Narayan, P.
P. S., Neerdaels, C., Negrin, T., Ramakrishnan, R., Silberstein, A., Srivastava, U., and Stata, R.
(2009). Building a cloud for yahoo! IEEE Data Eng. Bull., 32(1):3643.
[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 2010] Hadoop (2010). Apache Hadoop. http://hadoop.apache.org.
[Jacobs and Aulbach 2007] Jacobs, D. and Aulbach, S. (2007). Ruminations on multi-tenant
databases. In BTW, volume 103 of LNI, pages 514521. GI.
[Liu et al. 2007] Liu, S., Liang, Y., and Brooks, M. (2007). Eucalyptus: a web service-enabled einfrastructure. 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.
In First International Conference Cloud Computing, CloudCom, volume 5931 of Lecture Notes
in Computer Science, pages 472484. Springer.
[Mell and Grance 2009] Mell, P. and Grance, T. (2009).
Draft NIST Working Definition of Cloud Computing.
National Institute of Standards and Technology.
http://csrc.nist.gov/groups/SNS/cloud-computing.
[Oberheide et al. 2008] Oberheide, J., Cooke, E., and Jahanian, F. (2008). Cloudav: N-version
antivirus in the network cloud. In SS08: Proceedings of the 17th conference on Security
symposium, pages 91106, Berkeley, CA, USA. USENIX Association.
[Olston et al. 2008] Olston, C., Reed, B., Srivastava, U., Kumar, R., and Tomkins, A. (2008).
Pig latin: a not-so-foreign language for data processing. In SIGMOD 08: Proceedings of the
2008 ACM SIGMOD international conference on Management of data, pages 10991110, New
York, NY, USA. ACM.
[OpenCloud 2010] OpenCloud
(2010).
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 2010] Salesforce (2010). Salesforce. http://www.salesforce.com/.
[Soror et al. 2010] Soror, A. A., Minhas, U. F., Aboulnaga, A., Salem, K., Kokosielis, P., and
Kamath, S. (2010). Automatic virtual machine configuration for database workloads. ACM
Trans. Database Syst., 35(1):147.
[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):50
55.
[Vecchiola et al. 2009] Vecchiola, C., Chu, X., and Buyya, R. (2009). Aneka: A Software Platform for .NET-based Cloud Computing, pages 267295. In: W. Gentzsch, L. Grandinetti,
G. Joubert (Eds.). High Speed and Large Scale Scientific Computing. IOS Press, Amsterdam,
Netherlands.
[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 Da Silva, D. (2008). Toward a unified ontology
of cloud computing. In Grid Computing Environments Workshop, 2008. GCE 08, pages 110.

Você também pode gostar