Sunteți pe pagina 1din 61

Universidade Federal do Cear

Departamento de Engenharia de Teleinformtica


Curso de Graduao em Engenharia de Teleinformtica

Julio Alba Soto

OpenNebula: implantao de uma nuvem privada e


orquestrao das mquinas virtuais no paradigma
da Computao em Nuvem

Fortaleza Cear
Maio 2011
Autor:
Julio Alba Soto

Orientador:
Prof. Dr. Danielo Gonalves Gomes

OpenNebula: implantao de uma nuvem privada e orquestrao das


mquinas virtuais no paradigma da Computao em Nuvem

Monografia de Concluso de Curso


apresentada Coordenao do Curso
de Graduao em Engenharia de
Teleinformtica da Universidade
Federal do Cear como parte dos
requisitos para obteno do grau de
Engenheiro de Teleinformtica.

Fortaleza Cear
Maio 2011
Julio Alba Soto

OpenNebula: implantao de uma nuvem privada e orquestrao das


mquinas virtuais no paradigma da Computao em Nuvem

Esta Monografia foi julgada adequada para a obteno do diploma de Engenheiro


do Curso de Graduao em Engenharia de Teleinformtica da Universidade Federal
do Cear.

Julio Alba Soto


Banca Examinadora:

Prof. Dr. Danielo Gonalves Gomes


Universidade Federal do Cear - UFC

Prof. Alexandre Augusto da Penha Coelho


Universidade Federal do Cear - UFC

Prof. Augusto Jos Venncio Neto

Fortaleza, 2011
Resumo

A popularizao da Internet na dcada de 1990 e o rpido crescimento da


produo e comercializao de dispositivos computacionais mveis foram
fatores determinantes para a formao do panorama tecnolgico observado na
atualidade. medida que a conectividade dos indivduos aumentava, uma poderosa
plataforma de servios surgia inteiramente on-line. Deste modo, formava-se
um ambiente propcio ao surgimento da Computao em Nuvem. Computao
em Nuvem um modelo de computao atraente, pois permite que os recursos
sejam fornecidos de acordo com a demanda, ou seja, os usurios podem alugar
os recursos da nuvem que forem necessrios. Um desafio considervel a cerca da
nuvem relativo necessidade de padronizao. Este modelo tem motivado varias
instituies acadmicas e no-acadmicas para desenvolver solues de cdigo
aberto da nuvem. Este trabalho apresenta as solues de cdigo aberto mais
populares para Computao em Nuvem. A atividade de pesquisa tem como foco a
anlise da ferramenta de cdigo aberto OpenNebula, que busca oferecer meios para
a implementao de ambientes distribudos com suporte virtualizao e baseado
no paradigma da Computao em Nuvem. Aps essa etapa inicial, a ferramenta
utilizada para a implementao de uma nuvem privada e a orquestrao das
mquinas virtuais.

Palavras-chaves: Computao em Nuvem, Sistemas Distribudos, Virtualizao,


Ferramentas de cdigo aberto, OpenNebula.
Abstract

S ince 1990, the Internet popularization and the fast grown of production and
distribution of mobile computing devices were key factors for the developed
technologic situation obtained nowadays. While users connectivity was growing, a
powerful services platform was arising totally on-line. By this way, an appropriated
environment was formed due cloud computing emergence. Cloud Computing is an
attractive computation model, it allows that resources being provided according
to the demand, i.e., the users can rent the cloud resources that they need. An
important challenge around the cloud is relative to standardization. This model
has been motivated some academic and non-academic institutions to develop cloud
open source solutions. This work presents the most popular Cloud Computing open
source solutions. The research has focus in the analysis of OpenNebula open source
tool that seek to offer ways for the development of distributed environment with
support to virtualization and based on cloud computing paradigm. After this, the
tool is used for the development of a private cloud and the orchestration of virtual
machines.

Keywords: Cloud Computing, Distributed Systems, Virtualization, Open-source


tools, OpenNebula.
Dedico este trabalho minha famlia e aos meus amigos, a quem tudo devo.
Agradecimentos

Agradeo primeiramente aos meus pais Luis e Encarnita, pelos valores ensinados,
pela pacincia e pelo apoio incondicional durante os longos anos de graduao.
Aos meus irmos Juan e Luis, pela amizade e companheirismo.
minha segunda famlia, Jose, Joni, Vctor e Mateo, por todo o apoio durante
o ano de convvio em Fortaleza.
Ao professor Danielo Gonalves Gomes, meu orientador, pela confiana e pelo
apoio imprescindvel durante a realizao do trabalho.
Ao Thiago Teixeira S, pela pacincia e esforo compartilhado auxiliando na
orientao deste trabalho.
Universidade Federal do Cear, por proporcionar ensinos de altssima
qualidade.
Aos amigos do curso de graduao em Engenharia de Teleinformtica,
especialmente a Raymundo.
Dem-me um ponto de apoio e moverei a terra.
Arquimedes
Sumrio

Lista de Figuras viii

Lista de Tabelas ix

Lista de Siglas ix

1 Introduo 1
1.1 Motivao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Organizao da monografia . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Computao em Nuvem 3
2.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Contexto Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Sistemas distribudos . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.3 Grades computacionais . . . . . . . . . . . . . . . . . . . . . . 11
2.3.4 Computao utilitria . . . . . . . . . . . . . . . . . . . . . . 12
2.3.5 Virtualizao . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.6 Web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.7 Computao verde . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Modelos de servio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.1 Software como servio (SaaS) . . . . . . . . . . . . . . . . . . 16
2.4.2 Plataforma como servio (PaaS) . . . . . . . . . . . . . . . . . 17
2.4.3 Infraestrutura como servio (IaaS) . . . . . . . . . . . . . . . . 18
2.5 Modelos de implementao . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Nuvem pblica . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 Nuvem privada . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.3 Nuvem hbrida . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Esforos de normalizao . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7 OpenNebula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.7.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

vi
2.7.2 Histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7.3 Arquitetura OpenNebula . . . . . . . . . . . . . . . . . . . . . 24
2.7.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8 Outras solues de cdigo aberto . . . . . . . . . . . . . . . . . . . . 27
2.8.1 Eucalyptus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.2 OpenQRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.8.3 Nimbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.8.4 TPlataform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.8.5 Xen Cloud Plataform (XCP) . . . . . . . . . . . . . . . . . . 30
2.8.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3 Anlise da ferramenta OpenNebula 33


3.1 Equipamento utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Criao de nuvem privada . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 Lanamento de mquina virtual . . . . . . . . . . . . . . . . . . . . . 35
3.4 Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4 Resultados 38
4.1 Resultados da criao de uma nuvem privada . . . . . . . . . . . . . 38
4.2 Resultados do lanamento de uma mquina virtual . . . . . . . . . . 40

5 Concluses 43
5.1 Consideraes finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Perspectivas para trabalhos futuros . . . . . . . . . . . . . . . . . . . 44

Referncias Bibliogrficas 47

vii
Lista de Figuras

2.1 Diagrama de rede (COULOURIS et al., 2005) . . . . . . . . . . . . . 4


2.2 Arquitetura Von Neumann (Adaptado de BREY, 2008) . . . . . . . . 7
2.3 Sistema distribudo tpico (Adaptada de TANENBAUM, 2006) . . . . 10
2.4 Modelos de servio da Computao em Nuvem (Adaptada de
STANOEVSKA-SLABEVA et al., 2010) . . . . . . . . . . . . . . . . 16
2.5 Logotipo projeto OpenNebula (OPENNEBULA, 2011) . . . . . . . . 23
2.6 Arquitetura padro de uma nuvem OpenNebula (OPENNEBULA,
2011) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.7 Processos OpenNebula (OPENNEBULA,2011) . . . . . . . . . . . . . 26
2.8 Componentes do espao de trabalho Nimbus (KEAHAY, 2009) . . . . 29
2.9 Arquitetura XCP (TAKAKO, 2010) . . . . . . . . . . . . . . . . . . . 31
2.10 Solues Computao em Nuvem (Adaptado de TAKAKO, 2010) . . 32

3.1 Nuvem privada implementada . . . . . . . . . . . . . . . . . . . . . . 34


3.2 Mquina virtual (VM1) implementada . . . . . . . . . . . . . . . . . 35
3.3 Contedo padro do arquivo de texto vmnet.template . . . . . . . . . 35
3.4 Contedo padro do arquivo de texto primeiraVM.template . . . . . . 36

4.1 Comando onehost list . . . . . . . . . . . . . . . . . . . . . . . . . . . 38


4.2 Comando onehost show <host_id> . . . . . . . . . . . . . . . . . . . 39
4.3 Comando onehost disable <host_id> . . . . . . . . . . . . . . . . . . 40
4.4 Comando onehost enable <host_id> . . . . . . . . . . . . . . . . . . 40
4.5 Comando onehost delete <host_id> . . . . . . . . . . . . . . . . . . . 40
4.6 Comando onevnet list . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.7 Comando onevnet show <network_id> . . . . . . . . . . . . . . . . . 41
4.8 Comando onevnet delete <network_id> . . . . . . . . . . . . . . . . 41
4.9 Comando onevm list . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.10 Comando onevm delete <vm_id> . . . . . . . . . . . . . . . . . . . . 42

viii
Lista de Tabelas

2.1 Evoluo projeto OpenNebula (OPENNEBULA, 2011) . . . . . . . . 25


2.2 Comparao das solues de cdigo aberto da Computao em Nuvem 32

3.1 Equipamento utilizado no desenvolvimento do trabalho . . . . . . . . 33

4.1 Estados das mquinas virtuais . . . . . . . . . . . . . . . . . . . . . . 42

ix
Lista de Siglas

PDA Personals Digital Assistant (Assistentes Digitais Pessoais)

3G 3rd Generation mobile telecomunications (Terceira Gerao)

API Application Programming Interface (Interface de Programao de Aplicativos)

IaaS Infrastructure as a Service (Infraestrutura como Servio)

DMTF Distributed Management Task Force

SLA Service Level Agreement (Acordos de Nvel de Servio)

VCL Virtual Computing Lab

PaaS Platform as a Service (Plataforma como Servio)

AWS Amazon Web Service (Servio Web Amazon)

SaaS Software as a Service (Software como Servio)

NIST National Institute of Standarts and Technology

PC Personal Computer (Computador Pessoal)

VLSI Very Large Scale Integration (Integrao em Escala Muito Alta)

IT Information Technology (Tecnologia da Informao)

XML Extensible Markup Language (Linguagem de Marcao Extensvel)

SOA Service-Oriented Architecture (Arquitetura Orientada a Servios)

CaaS Communication as a Service (Comunicao como Servio)

MaaS Management as a Service (Gerenciamento como Servio)

DaaS Data as a Service (Dados como Servio)

ITaaS Information Technology as a Service (Tecnologia da Informao como


Servio)

x
Lista de Tabelas xi

XaaS Everything as a Service (Tudo como Servio)

EC2 Elastic Compute Cloud

SOAP Simple Object Access Protocol (Protocolo Simples de Acesso a Objetos)

REST Representational State Transfer (Transferncia de Estado


Representacional)

CSA Cloud Security Alliance

OVF Open Virtualization Format (Formato Aberto de Virtualizao)

OCC Open Cloud Consortium

OASIS Organization for the Advancement of Structures Information Standars

VM Virtual Machine (Mquina Virtual)

VWS Virtual Workspace Service

IP Internet Protocol (Protocolo de Internet)

XCP Xen Cloud Plataform

TFS Tianwang File System (Sistema de Arquivos de Tianwang)

GFS Google File System (Sistema de Arquivos de Google)

LAN Local Area Network (Rede de rea Local)


Captulo 1
Introduo

A Computao em Nuvem est se tornando um conceito importante no mundo


da Information Technology (Tecnologia da Informao) (IT). Existem diferentes
formas de usar a Computao em Nuvem. possvel usar esta tecnologia para mudar
uma aplicao crtica de negcio e que ela seja executada em uma nuvem pblica.
Nesta configurao s se paga pelo que se usa. Existem muitos fornecedores de
Computao em Nuvem que implementam este tipo de servio. chamado Software
as a Service (Software como Servio) (SaaS). Alm do software, tambm possvel
criar uma infraestrutura de rede baseada em uma nuvem Infrastructure as a Service
(Infraestrutura como Servio) (IaaS). Esta forma de computao mais eficiente
do que a criao tradicional de um datacenter. Alm disso, Computao em Nuvem
pode ser usada para fazer o datacenter mais "verde"e criar servidores redundantes
com mais facilidade.

O campo da Computao em Nuvem tem recebido grande ateno da academia


desde sua ecloso. Devido a seu carter recente, muitas informaes conflitantes
so freqentemente encontradas na literatura. Contudo, o conceito tratado no
mundo acadmico de forma prxima unanimidade devido ao seu grande potencial
e o papel chave que certamente desempenhar em um futuro prximo em diversas
reas da tecnologia.

Uma caracterstica comum presente em todas as nuvens que os fornecedores


compreensivelmente evitam revelar as caractersticas. So muitos os esforos feitos
para desenvolver uma soluo de cdigo aberto. A observao e a classificao dessas
solues podem alavancar mais ainda a rea de pesquisa da Computao em Nuvem

1
1.1. Motivao 2

fornecendo um bom ponto de partida para descobrir diferentes abordagens para os


problemas presentes nos ambientes de Computao em Nuvem.

Uma das solues de cdigo aberto mais populares a ferramenta OpenNebula,


que se encaixa nos atuais ambientes de datacenter para construir qualquer tipo
de implantao IaaS na nuvem. Alguns benefcios que podem ser obtidos com
a utilizao de um ambiente em nuvem OpenNebula so: respostas mais rpidas
s necessidades de infraestrutura, gerenciamento centralizado, melhor utilizao
dos recursos existentes, ganhos operacionais como reduo de custos com espao e
energia, suporte a ambientes de execuo heterogneos, implementao em qualquer
datacenter com suporte virtualizao, etc.

1.1 Motivao

A principal motivao deste trabalho demonstrar a viabilidade de implantao


e configurao de OpenNebula.

1.2 Objetivos

Esse trabalho objetiva analisar a ferramenta de cdigo aberto OpenNebula


atravs da configurao de ambientes para a criao de uma nuvem privada e a
orquestrao das mquinas virtuais no paradigma da Computao em Nuvem.

1.3 Organizao da monografia

Aps a Introduo, o trabalho se divide em mais quatro captulos. O Captulo 2


aborda os conceitos gerais que definem o novo paradigma de computao distribuda
denominado Computao em Nuvem e constitui o embasamento terico deste
trabalho. No Captulo 3 ser fundamentada toda a metodologia utilizada, ou seja, a
criao de uma nuvem privada e a orquestrao das mquinas virtuais mediante o uso
da ferramenta OpenNebula. O Captulo 4 analisa os resultados obtidos. Enquanto
o Captulo 5 apresenta consideraes finais acerca do trabalho realizado.
Captulo 2
Computao em Nuvem

Nesse captulo, sero abordados aspectos que definem o campo de pesquisa


e negcios hoje intitulado Computao em Nuvem. As Sees 2.1 e 2.2 trazem
definies e uma contextualizao histrica, enquanto a Seo 2.3 analisa os
elementos que compem a arquitetura deste modelo. Em seguida, so abordados
os principais modelos de servio e os modos de implantao existentes nas Sees
2.4 e 2.5. Enquanto a Seo 2.6 discute os esforos de normalizao na rea da
Computao em Nuvem. As sees finais analisam as solues de cdigo aberto
atualmente disponveis no contexto da Computao em Nuvem.

2.1 Introduo

O grande crescimento nos ltimos anos da conectividade de usurios (laptops,


palmtops, Personals Digital Assistant (Assistentes Digitais Pessoais) (PDA),
celulares 3rd Generation mobile telecomunications (Terceira Gerao) (3G), etc.)
em todo o mundo atrelado evoluo da rede mundial de computadores de um
simples meio de comunicao a uma plataforma real de negcios e redes sociais,
tornou necessria a criao de ambientes computacionais capazes de gerenciar
dinamicamente uma demanda exponencial por dados e servios on-line, e um acesso
banda larga Internet a qualquer hora, de qualquer lugar. Precisava-se de um novo
campo de pesquisa e negcios, de uma nova viso para discutir possveis solues
para esta problemtica, hoje conhecido como: Computao em Nuvem (em ingls,
Cloud Computing).

O termo nuvem ou cloud uma metfora em relao forma como a Internet

3
2.1. Introduo 4

usualmente mostrada nos diagramas de rede, como uma nuvem, como pode ser visto
na Figura 2.1. Nesses diagramas, o cone da nuvem representa todas as tecnologias
que fazem a Internet funcionar, abstraindo a infraestrutura e a complexidade
que ela engloba. No caso de Computao em Nuvem, refere-se de modo geral a
uma combinao de tecnologias e paradigmas (virtualizao, computao utilitria,
computao em grade, arquitetura orientada a servios, entre outros) arquitetados e
utilizados de uma forma na qual se abstrai os detalhes do usurio, o qual no precisa
ter todo o conhecimento necessrio para manter essa infraestrutura. Utilizar servios
dessa nuvem (armazenamento, banco de dados, processamento, entre outros) fazer
Computao em Nuvem.

Figura 2.1: Diagrama de rede (COULOURIS et al., 2005)

A Computao em Nuvem um conceito relativamente novo, a origem do


termo controversa. De acordo com (1), o emprego tcnico do termo nuvem
data dos anos 1990 em referncia capacidade de comutao dinmica de circuitos
para o balanceamento de utilizao das redes de telecomunicaes, o que reiterava
seu carter virtualizado. No ano de 2001, segundo matria publicada pelo jornal
americano The New York Times, a Microsoft utilizou o termo durante uma
apresentao sobre o .Net Framework para designar o conjunto de computadores
que constituem a Internet. Todos os profissionais falam do conceito Computao
em Nuvem e, as vezes, h mal entendidos. Existem tantas definies como autores
tm tentado definir na literatura. Uma parte do problema de compreender o que
a Computao em Nuvem , justamente, que no tm definio concreta.

Segundo o National Institute of Standarts and Technology (NIST), a Computao


2.1. Introduo 5

em Nuvem um modelo que possibilita o acesso via rede de forma conveniente


e sob demanda a um conjunto compartilhado de recursos computacionais (como
redes, servidores, armazenamento, aplicaes e servios) que podem ser rapidamente
providos e liberados com interao com o provedor de servios e esforos de
gerenciamento mnimos. O modelo promove a disponibilidade e composto por cinco
caractersticas essenciais, trs modelos de servio, e quatro modos de implantao
(2). Discutiremos os modelos de servio e os modos de implantao da Computao
em Nuvem nas sees 2.4 e 2.5 respectivamente. As cinco caractersticas essncias
so descritas a seguir:

Atendimento self-service e sob demanda: O usurio pode alocar recursos


computacionais unilateralmente sem a necessidade de interao humana com
o provedor do servio. Empresas que atuam na rea de IaaS oferecem uma
Application Programming Interface (Interface de Programao de Aplicativos)
(API) prpria, que pode ser utilizada para a requisio dinmica de recursos
atravs de scripts personalizados. A Computao em Nuvem no mais que
um modelo de prestao de servios. Neste tipo de computao, tudo o que
pode oferecer um sistema de computao fornecido como um servio.

Amplo acesso rede: Infraestrutura computacional, plataformas de


desenvolvimento e aplicaes so acessadas via rede atravs de protocolos
padro. Isto possibilita a utilizao dos servios por mquinas clientes que
variam de desktops robustos a dispositivos mveis com severas limitaes
de recursos. A Computao em Nuvem desenvolve a idia da internet com
aplicaes remotas.

Pooling de recursos: O provedor detm um conjunto de recursos fsicos e virtuais


que so alocados para usurios e liberados pelos mesmos de forma dinmica
e de acordo com a demanda existente. A informao e aplicaes j
no so dependentes de nossos computadores ou sistema operacional. A
alocao de um mesmo recurso muitas vezes feita para mais de um usurio
simultaneamente, prtica comumente definida como multi-arrendamento
(em ingls, multi-tenancy). Ademais, o usurio no possui controle ou
conhecimento preciso do ponto geogrfico de origem do servio que est
utilizando.

Elasticidade: Os recursos providos por um ambiente computacional em nuvem


2.1. Introduo 6

so inerentemente escalveis. O termo elasticidade utilizado para transmitir


a idia de que o usurio pode, a qualquer momento, aumentar ou diminuir
a quantidade de recursos utilizados. Essa caracterstica cria a iluso de
que os recursos oferecidos so ilimitados e que o usurio pode fazer uso da
quantidade que lhe for conveniente. O consumidor do servio pode requisitar
dinamicamente mais ou menos recursos para sua aplicao para se adaptar
demanda dos seus usurios. Por exemplo, em perodos de pico o consumidor
solicita nuvem mais recursos computacionais (como, por exemplo, servidores
adicionais), podendo depois liberar tais recursos, quando os mesmos no forem
mais necessrios.

Medio de servios: Os recursos oferecidos podem ser monitorados, controlados


e reportados ao provedor e ao usurio de forma transparente. Este mecanismo
permite que sejam cobrados valores referentes ao grau de utilizao dos
recursos e estipulados por meio de contrato entre provedor e usurio. Os
consumidores pagam aos provedores de servio de nuvem de acordo com o
consumo efetuado (modelo de pagamento pelo uso semelhante a utilidades
como energia e gs).

Embora no raro mencionada equivocadamente como uma tecnologia especfica,


a Computao em Nuvem constitui um ponto de convergncia entre modelos
tecnolgicos diversos. Trata-se de um campo multidisciplinar, onde antigos e alguns
novos conceitos, como modelo cliente-servidor, virtualizao, middleware, grades
computacionais (em ingls, grid computing), sistemas distribudos, tcnicas de
armazenamento de dados, segurana e servios web se unem para a formao de
um ambiente computacional complexo, cujo potencial atrai, com igual interesse, o
mundo corporativo e a academia. A Computao em Nuvem criou muito interesse
nos ltimos anos devido sua facilidade de escalar os seus recursos. possvel
aumentar ou diminuir os seus recursos e s paga pelos recursos que voc usa. A
Computao em Nuvem uma fase em utility computing, o que significa uma
embalagem de recursos de computao, tais como a computao e armazenamento,
como um servio semelhante a um de utilidade pblica tradicional (tais como
eletricidade, gua, gs natural ou rede de telefone).

Por tudo isso, importante pensar como que foi a evoluo da computao
para se tornar o que hoje conhecemos como Computao em Nuvem. Esta pergunta
ser respondida na prxima seo.
2.2. Contexto Histrico 7

2.2 Contexto Histrico

Como discutimos na seo anterior, a Computao em Nuvem um estilo de


computao onde os atributos, escalvel e flexvel, so provisionados como um
servio aos clientes externos atravs da tecnologia Internet (3). importante
compreender a evoluo dos sistemas de computao at o momento de ecloso
da Computao em Nuvem.

A primeira evidncia de uma arquitetura computacional foi proposta por Charles


Babbage no ano de 1856. O chamado Motor Analtico representa, ainda hoje, a
forma mais bsica de arquitetura dos sistemas empregados nos computadores digitais
modernos (4). At anos recentes, quando o trabalho de Babbage ainda no havia
sido redescoberto, esta arquitetura era atribuda a John Von Neumann, de onde
provm a popular expresso arquitetura Von Neumann (Figura 2.2).

Figura 2.2: Arquitetura Von Neumann (Adaptado de BREY, 2008)

muito comum na literatura dividir a evoluo da computao em geraes.


Segundo (3), a primeira gerao de computadores remonta ao ano de 1943, quando
a IBM financiou a criao do Mark I, um computador programvel eletromecnico de
propsito geral desenvolto pela Universidade de Harvard. No mesmo ano, o primeiro
dispositivo de computao programvel, eletrnico e digital, chamado Colossos, foi
concebido na Inglaterra. Era o tempo das vlvulas, do armazenamento de dados
atravs de cartes perfurados e de computadores que ocupavam grandes galpes.
2.2. Contexto Histrico 8

A inveno dos transistores marcou o surgimento da segunda gerao de


computadores. Ainda se tratavam de mquinas grandes e de custo muito elevado, o
que limitava sua utilizao as universidades e rgos governamentais.

Com o surgimento dos circuitos integrados, deu-se incio terceira gerao de


computadores. As mquinas desta gerao, chamadas minicomputadores, eram mais
baratas e compactas, tornando possvel sua utilizao por empresas de menor porte.

O advento dos microprocessadores na dcada de 1970 fez com que surgissem


os computadores que caracterizam a quarta gerao. O chamado Personal
Computer (Computador Pessoal) (PC) oferecia maior capacidade de processamento,
armazenamento de dados, e tamanho bastante reduzido. A Very Large Scale
Integration (Integrao em Escala Muito Alta) (VLSI) colaborou para a massificao
comercial destes dispositivos, tornando-os ainda menores e mais baratos.

A popularizao da Internet na dcada de 1990 e o rpido crescimento da


produo e comercializao de dispositivos computacionais mveis foram fatores
determinantes para a formao do panorama tecnolgico observado na atualidade.
medida que a conectividade dos indivduos aumentava, uma poderosa plataforma
de servios surgia inteiramente on-line. A tecnologia comeava a embutir-se onde
antes no se imaginava, concretizando o conceito da Computao Ubqua, termo
empregado pela primeira vez por Mark Weiser ainda na dcada de 1980.

Deste modo, ao final da dcada de 1990, formava-se um ambiente propcio ao


surgimento da Computao em Nuvem. A grande quantidade de servios web
disponveis e a necessidade de acess-los atravs de dispositivos com recursos fsicos
cada vez mais limitados somaram-se ao avano das tecnologias de virtualizao de
hardware para a promoo de uma evoluo na forma de lidar com o consumo de
recursos computacionais e com o desenvolvimento e utilizao de software. Por
conseguinte, a Computao em Nuvem, ao contrario do que muitos apregoam, no
se trata de uma revoluo e tambm no se trata de uma nova tecnologia, uma
evoluo tecnolgica natural.

Atualmente, o mercado da Computao em Nuvem tornou-se incrivelmente forte,


estima-se "superior a 42.000 milhes de dlares em 2012"(5). Se nos centramos no
mercado brasileiro, a Computao em Nuvem vai crescer exponencialmente. O Brasil
o pas que mais tem interesse por Computao em Nuvem quando comparado
com os demais da Amrica Latina. At hoje, 18% das mdias e grandes empresas
brasileiras j utilizam alguma aplicao de Computao em Nuvem. Estima-se que
2.3. Arquitetura 9

at 2013, esta fatia deve saltar para 30% a 35%, nmero que aproximadamente 60%
maior do que a base atual. Nos Estados Unidos, entre 45% e 55% das companhias
mdias e grandes j utilizam algum servio de Computao em Nuvem. Na Europa
o nmero est entre 35% e 40% (5).

O interesse da indstria em adotar a Computao em Nuvem se d


principalmente pelo fato deste modelo permitir utilizar os recursos computacionais
de forma mais econmica e otimizada, possibilitando uma reduo de custos
operacionais (menos mquinas, manuteno simplificada, reduo de gastos com
energia e resfriamento) (6), o que representa um fator extremamente relevante
considerando-se o atual cenrio de crise econmica mundial e reduo de gastos
com IT. Esta economia ocorre devido ao fato que empresas clientes das nuvens no
precisam investir para adquirir (comprando hardware, coollers, alugando espao
fsico) e administrar (contratando pessoal) sua prpria infraestrutura. Ao invs
disso, estas empresas podem optar por alugar a infraestrutura necessria de outras
empresas que possuem enormes datacenters (como Google e Amazon) e, com isso,
conseguem atingir economias de escala oferecendo tais servios a um baixo custo a
qualquer cliente.

2.3 Arquitetura

Como falamos na seo 2.1, a Computao em Nuvem constitui um ponto


de convergncia entre modelos tecnolgicos diversos, onde antigos e alguns novos
conceitos se unem para a formao do ambiente computacional complexo. As
tecnologias que ele envolve um assunto bastante comentado e estudado no
momento, e ainda apresenta muitas questes em aberto, alm de uma grande
variedade de produtos e servios oferecidos com essa finalidade. Nesta seo vamos
tentar discutir mais um pouco sobre as principais tecnologias e modelos relacionados
da Computao em Nuvem.

2.3.1 Sistemas distribudos

O emprego do termo nuvem remete utilizao de servios de infraestrutura


de hardware e software provindos de um ambiente capaz de oferecer recursos
virtualmente ilimitados e de forma "elstica". Embora no fique claro ao usurio
final, este ambiente formado por um conjunto que datacenters que, unidos,
tornam possvel o pooling de recursos, que, juntamente com a elasticidade, constitui
2.3. Arquitetura 10

das principais caractersticas da Computao em Nuvem. O aspecto coletivo do


funcionamento destes datacenters caracteriza o que denominado um sistema
computacional distribudo.

Um sistema distribudo definido como um conjunto de mquinas independentes


que se apresentam ao usurio como um sistema nico e consistente (7). Nos
sistemas distribudos os computadores se comunicam e coordenam suas aes
via rede atravs da troca de mensagens (8). Duas das principais vertentes dos
sistemas computacionais distribudos so a computao em clusters e as grades
computacionais. No primeiro, um agrupamento de mquinas com o mesmo sistema
operacional conectado localmente, enquanto o ltimo formado por mquinas
provenientes de diferentes organizaes e indivduos e que, embora integradas como
um nico sistema, esto inseridas em domnios administrativos diferentes e possuem
caractersticas de hardware e software nitidamente heterogneas (7). Falaremos mais
profundamente do conceito das grades computacionais na Seo 2.3.3.

A Figura 2.3 ilustra um sistema distribudo tpico, no qual a camada de


middleware composta pelo software responsvel pelo provimento de uma interface
de comunicao nica e pela coordenao de usurios e aplicaes para a utilizao
de mquinas distintas, cada uma com seu prprio sistema operacional.

Figura 2.3: Sistema distribudo tpico (Adaptada de TANENBAUM, 2006)

correto afirmar, portanto, que a utilizao do termo nuvem est diretamente


relacionada existncia e utilizao de um grande sistema distribudo.
2.3. Arquitetura 11

2.3.2 Middleware

O conceito de middleware muito utilizado no campo da Computao em


Nuvem. O middleware definido como um programa de computador que faz
e mediao entre software e demais aplicaes (9). utilizado para mover
ou transportar informaes e dados entre programas de diferentes protocolos
de comunicao, plataformas e dependncias do sistema operacional. Seu
objetivo mascarar e heterogeneidade, e facilitar o desenvolvimento de aplicaes,
tipicamente as distribudas, assim como facilitar a integrao de sistemas legados
ou desenvolvidos de forma no integrada automtica (9).

Em grande parte, sua utilizao se aplica diretamente funo exercida pela


camada de software (Figura 2.3) que exerce a coordenao e o gerenciamento das
mquinas e aplicaes que constituem um sistema distribudo.

Os servios de IaaS existentes atualmente funcionam atravs da utilizao de


interfaces de web services oferecidas por estes middlewares, atravs das quais os
clientes alocam recursos contidos na infraestrutura do provedor.

2.3.3 Grades computacionais

Um ambiente de grades computacionais, ou cumputao em grades, consiste


em uma "infraestrutura de hardware e software capaz de prover acesso a recursos
de computao de alta qualidade de forma segura, consistente e barata"(10).
Uma definio mais recente e amplamente aceita pela comunidade cientfica
trata as grades computacionais como "o compartilhamento seguro, confivel e
eficiente de recursos computacionais e dados entre instituies organizacionais
independentes"(11).

Dentre os principais tipos de recursos que podem ser compartilhados atravs das
grades computacionais, esto o processamento e armazenamento de dados, largura de
banda e ferramentas de software. H de se ressaltar que as grades se diferenciam da
computao distribuda por focar em questes como alto desempenho, coordenao,
gerenciamento e compartilhamento destes recursos (12).

Um dos elementos fundamentais na implantao de um ambiente de grades


computacionais o middleware utilizado para tal. Atravs do middleware, cria-se
uma camada de virtualizao e gerncia de compartilhamento sobre a qual as
aplicaes dos usurios so executadas e administradas.
2.3. Arquitetura 12

Todos os modos de implantao da Computao em Nuvem empregam


tecnologias e termos inerentes ao campo das grades computacionais. O conceito
de compartilhamento de recursos entre usurios e organizaes em todo o mundo
criado pelas grades adaptado para um panorama onde um provedor compartilha
sua infraestrutura entre muitos clientes, utilizando mecanismos de gerncia e
coordenao muito similares aos existentes nas grades.

Conforme mencionado anteriormente, importante ressaltar as diferenas entre


os conceitos Computao em Nuvem e computao em grade para evitar confuso
(12):

i. Modelo de negcio: o modelo de computao em nuvem um modelo de


pagar pelo uso similar a utilidades como eletricidade. Os provedores de
servios de nuvem se beneficiam de economias de escala para realizar lucros
e oferecer seus servios a um baixo custo para os clientes. A computao em
grade normalmente um modelo mais voltado para a pesquisa que envolve a
cooperao de grandes centros de pesquisa do governo e universidades. A idia
da grade tambm consiste de compartilhar recursos para que os pesquisadores
submetam processos para resolver problemas computacionais complexos (por
exemplo: projetos na rea gentica ou de previso de tempo, simulao, etc.).
Normalmente a computao em grade oferece tais recursos computacionais
para os membros participantes de um determinado projeto.

ii. Arquitetura e distribuio: normalmente em grades os recursos


computacionais compartilhados podem estar em regies geogrficas e
pertencer a instituies diferentes. Isto em geral no ocorre na computao
em nuvem, cujas solues so normalmente oferecidas pela mesma empresa
embora tambm se possa haver distribuio geogrfica (Amazon, por exemplo,
oferece seus servios na costa leste e oeste dos EUA e na Europa). Outra
diferena que a distribuio de aplicaes em nuvem d-se normalmente
atravs de mquinas virtuais, enquanto que em grades estas normalmente
consistem de processos submetidos para execuo em batch.

2.3.4 Computao utilitria

Como discutimos anteriormente, uma das caractersticas da Computao em


Nuvem consiste na medio dos servios oferecidos. Os recursos envolvidos devem
2.3. Arquitetura 13

ser monitorados e seu grau de utilizao deve ser reportado tanto ao provedor quanto
ao cliente de forma transparente. Nos casos onde h a necessidade de tarifao do
modelo, esta caracterstica torna-se vital para a viabilidade comercial do negcio.
Assim como no fornecimento de bens utilitrios como gua, gs, telefonia e energia
eltrica, o campo da Computao Utilitria (em ingls, Utility Computing) busca
desenvolver mtodos para a proviso de recursos computacionais onde o cliente
cobrado com base na quantidade e na qualidade daquilo que utiliza.

Tendo em vista os tipos de servios existentes, como entrega de capacidade de


processamento, armazenamento de dados e redes de comunicao, e considerando-se
que os mesmos devem atender automaticamente a flutuaes de demanda, a
Computao Utilitria deve atender a questes como o aumento de confiabilidade,
melhoria de desempenho e reduo do custo total na utilizao de recursos (13).

Paradigmas como grades computacionais e computao peer-to-peer propunham,


desde sua concepo, a transformao dos recursos computacionais em um quinto
bem utilitrio (assim como o provimento de energia, gua, gs e telefone).
A Computao em Nuvem renova esta proposio atravs do fornecimento de
infraestrutura, plataformas de desenvolvimento e software (14).

2.3.5 Virtualizao

Nos ltimos anos, os custos provenientes de espao fsico, energia, refrigerao e


manuteno esto, mais uma vez, revertendo o panorama da utilizao de grandes
datacenters, e a virtualizao surge como pea fundamental para uma melhor
utilizao dos recursos computacionais disponveis.

A virtualizao consiste na tcnica de prover a iluso de acesso exclusivo a um


recurso compartilhado. Com isto, possvel a execuo de um grande nmero de
workloads em um mesmo sistema de hardware de forma previsvel, segura e isolada
(15). As diferentes modalidades existentes de virtualizao oferecem benefcios
diversos, como uma melhor utilizao do sistema atravs do compartilhamento
de recursos fsicos, execuo de aplicaes em ambientes isolados, eliminao
de conflitos de domnio (como utilizao das mesmas portas TCP), utilizao
simultnea de vrios sistemas operacionais em uma nica mquina e isolamento
de falhas. A seguir, so descritos os trs principais tipos de virtualizao:

Virtualizao para gerncia de recursos: Ao executar diferentes workloads em


2.3. Arquitetura 14

um nico sistema, torna-se aparente a necessidade de gerenciar os recursos de


hardware utilizados. Esta a forma mais bsica de virtualizao, e pode
ser exemplificada pelo gerenciamento realizado pelos sistemas operacionais ao
executar simultaneamente um grande nmero de aplicaes.

Virtualizao em sistema operacional: Ao executar diferentes workloads em


um nico sistema, torna-se aparente a necessidade de gerenciar os recursos
de hardware utilizados. Esta a forma mais bsica de virtualizao, e pode
ser exemplificada pelo gerenciamento realizado pelos sistemas operacionais ao
executar simultaneamente um grande nmero de aplicaes.

Virtualizao completa: Neste tipo de virtualizao, sistemas operacionais


diversos rodam simultaneamente na mesma mquina com um leve gerenciador
de recursos, chamado hipervisor, sendo executado sobre o hardware. As
instncias executadas neste modelo so chamadas de mquinas virtuais. H
dois tipos bsicos de hypervisores. O primeiro tipo executado diretamente
no hardware, enquanto o segundo tipo necessita de um sistema operacional
hospedeiro.

A virtualizao a pea chave para a construo de um ambiente com tais


funcionalidades de multi-arrendamento. O carter "elstico"da nuvem de que temos
falado, com a proviso de recursos virtualmente ilimitados, obtido atravs da
criao de novas instncias de mquinas virtuais quando se faz necessrio, oferecendo
ao cliente upgrades de recursos instantneos e automatizados.

2.3.6 Web services

O funcionamento da grande variedade de servios disponveis na internet,


comumente designados como web services, segue uma srie de protocolos que, em
grande parte, empregam o padro de linguagem Extensible Markup Language
(Linguagem de Marcao Extensvel) (XML) como elemento funcional bsico.
Adicionalmente, linguagens de descrio so utilizadas para a composio de
interfaces atravs das quais clientes tm acesso aos servios.

Os web services so oferecidos atravs da construo de sistemas que


implementam Service-Oriented Architecture (Arquitetura Orientada a Servios)
(SOA). O surgimento destas arquiteturas est intrinsecamente relacionado a
necessidades de mercado, quando um nmero crescente de empresas sentiu a
2.4. Modelos de servio 15

necessidade de integrao e interoperabilidade entre sistemas demasiadamente


heterogneos (16).

A Computao em Nuvem torna possvel a utilizao de infraestrutura de


hardware e software remotamente, oferecendo-os como servios aos usurios finais.
Isto possvel devido utilizao de interfaces de web services, atravs das
quais requisies so traduzidas para o processamento por parte dos servidores de
gerenciamento dos provedores, que administram o provimento de recursos de acordo
com suas polticas internas de segurana e Service Level Agreement (Acordos de
Nvel de Servio) (SLA) estabelecidos com seus clientes.

2.3.7 Computao verde

O conceito computao verde (em ingls, green computing) refere-se


utilizao eficiente dos recursos de computao, minimizando o impacto ambiental,
maximizando a sua viabilidade econmica e assegurar direitos sociais. J segundo
(17) a computao verde "o estudo e a prtica de projeto, fabricao, uso e
descarte de computadores, servidores e subsistemas associados (tais como monitores,
impressoras, dispositivos de armazenamento e de rede e sistemas de comunicao),
de forma eficiente e eficaz com um mnimo ou nenhum impacto sobre o ambiente".

Por tudo o que foi discutido at o momento, algumas das tecnologias so


classificadas como verdes, pois contribuem para a reduo do consumo de energia
ou das emisses de dixido de carbono, so Computao em Nuvem, grades
computacionais e virtualizao em datacenters.

2.4 Modelos de servio

O novo paradigma proposto pela Computao em Nuvem baseia-se na entrega de


uma vasta variedade de recursos atravs de servios disponveis em escala mundial.
Isto implica em um impacto profundo na forma como empresas e pessoas utilizam o
hardware e o software de que necessitam, alm de elevar ainda mais a importncia
das redes de comunicao atravs das quais esses recursos se tornam acessveis.

A variedade de servios disponveis em uma nuvem faz com que sua classificao
divirja sobremaneira. Nomenclaturas como Communication as a Service
(Comunicao como Servio) (CaaS), Management as a Service (Gerenciamento
como Servio) (MaaS), Data as a Service (Dados como Servio) (DaaS),
Information Technology as a Service (Tecnologia da Informao como Servio)
2.4. Modelos de servio 16

(ITaaS) e at mesmo Everything as a Service (Tudo como Servio) (XaaS) so


encontradas com relativa facilidade no mercado e na academia (18). Todavia, a
estrutura da Computao em Nuvem visivelmente formada por trs camadas
fundamentais (19). Logicamente interconectados (Figura 2.4), os elementos que
compem esta viso tridica da nuvem so a SaaS, a Platform as a Service
(Plataforma como Servio) (PaaS) e o IaaS.

Figura 2.4: Modelos de servio da Computao em Nuvem (Adaptada de


STANOEVSKA-SLABEVA et al., 2010)

Atualmente, este tipo de classificao amplamente aceito na literatura, pois


engloba grande parte dos subtipos encontrados e define suas funcionalidades de
forma coerente e concisa.

2.4.1 Software como servio (SaaS)

O modelo de Software como Servio (SaaS) consiste no provimento via rede de


programas executados em sistemas e infraestruturas de terceiros, atravs de uma
tcnica de cobrana baseada na taxa de utilizao do usurio. Comumente chamada
de pay-per-use, essa tcnica permite que clientes eliminem grande parte dos custos
atrelados ao uso de um determinado software, excetuando-se os relativos utilizao
das redes de comunicao. No obstante, o emprego de SaaS gera uma grande
dependncia do usurio em relao a recursos que se encontram alm de seu dominio
administrativo, o que levanta muitos questionamentos a respeito da viabilidade de
uma adeso integral ao modelo.
2.4. Modelos de servio 17

Embora seja a camada mais visvel ao usurio final, o funcionamento do SaaS


est intimamente ligado ao emprego de plataformas e infraestrutura como servio.
A comunicao vertical entre os elementos estruturais da Computao em Nuvem
representada na Figura 2.4 realizada em sua plenitude atravs do uso de SaaS, pois
as aplicaes oferecidas so executadas em ambientes baseados no modelo de PaaS,
que, por sua vez, esto configurados sobre hardware virtualizado por meio de IaaS.
A atuao conjunta destes elementos forma um sistema computacional complexo e
inovador, cujo potencial ainda est sendo explorado tanto pelo mercado quanto pela
academia.

O fato de toda a infraestrutura empregada estar inteiramente na nuvem cria


a possibilidade de utilizao dos mais diversos tipos de aplicao por meio de
dispositivos com srias limitaes de recursos. Desta forma, dispositivos mveis
podem ter acesso via web services a programas sofisticados e que necessitam de
grande capacidade de processamento para sua execuo.

2.4.2 Plataforma como servio (PaaS)

A camada de Plataforma como Servio (PaaS) direcionada aos programadores,


oferecendo-os um ambiente autoconfigurvel atravs do qual possvel o
desenvolvimento e o teste de aplicaes sem a preocupao com a infraestrutura
necessria para tal. Por meio do modelo de PaaS, o programador pode criar e
executar uma aplicao inteiramente na nuvem. As variaes no uso da aplicao
so ento gerenciadas de forma integral pela plataforma. Caso seu nvel de utilizao
cresa, um acrscimo na quantidade de recursos alocados efetuado (20). Uma
ao anloga realizada nos casos de decrscimo do nvel de utilizao. Ademais,
o ambiente oferecido pela Plataforma como Servio pode cobrir todas as etapas
de desenvolvimento de software ou especializar-se em uma rea especfica, como o
gerenciamento de contedo (21).

Percebe-se, neste ponto, a comunicao vertical existente entre as camadas que


compem a estrutura da Computao em Nuvem. Enquanto utiliza interfaces de
provedores para o consumo de recursos computacionais no modelo IaaS, a Plataforma
como Servio, por sua vez, oferece interfaces prprias para a comunicao com
aplicaes desenvolvidas pelos programadores que a utilizam. Trata-se, portanto,
de uma camada de abstrao entre a IaaS e a SaaS (19).
2.5. Modelos de implementao 18

2.4.3 Infraestrutura como servio (IaaS)

Em contrapartida venda direta de componentes de hardware e servidores


completos, o modelo de Infraestrutura como Servio (IaaS) oferece ao consumidor
poder de processamento, armazenamento de dados, estrutura de rede e uma srie de
outros recursos bsicos de forma virtualizada e seguindo os preceitos do self-service
sob demanda, elasticidade e multi-arrendamento. Instituies que aderem a este
tipo de servio no tm controle direto sobre a infraestrutura fsica, mas podem
utilizar os recursos virtualizados que lhe so oferecidos da forma que lhes convier,
salvo restries estabelecidas pelo provedor.

Ao eliminar a necessidade de posse de uma infraestrutura particular, o emprego


de IaaS tm impacto direto em custos relacionados ao consumo de energia, espao
fsico e manuteno de hardware.

Em conformidade com as cinco caractersticas principais da Computao em


Nuvem, o modelo de IaaS fornece infraestrutura de forma dinmica, automatizada e
inerentemente escalvel. Com isto, o cliente do servio pode aumentar ou diminuir
a quantidade de recursos alocados para si de acordo com sua necessidade. Ao abrir
mo de uma infraestrutura prpria atravs da adeso ao IaaS, uma organizao v
muitos de seus dados ultrapassarem seus domnios, sendo armazenados na nuvem,
um ambiente sobre o poder administrativo de terceiros. Por conseguinte, muitas
questes relacionadas segurana da informao so levantadas, sendo este um dos
principais pontos de discusso do campo da Computao em Nuvem.

2.5 Modelos de implementao

Alm da categorizao feita na Seo 2.4 com relao aos servios oferecidos,
tambm h uma categorizao com relao abrangncia e acesso nuvem. A
classificao geralmente citada na literatura a de: nuvem pblica, nuvem privada
e nuvem hbrida. A seguir, descrevemos brevemente cada uma delas.

2.5.1 Nuvem pblica

De acordo com (6), o software e hardware de um datacenter a nuvem e se


essa nuvem for disponibilizada para o pblico em geral no modo pay-per-use, ela
chamada nuvem pblica.
2.6. Esforos de normalizao 19

2.5.2 Nuvem privada

Por outro lado, o datacenter interno de uma organizao, no disponvel ao


pblico em geral, a nuvem privada. Segundo (22), o objetivo principal de uma
nuvem privada no vender capacidade pela Internet, atravs de interfaces acessveis
ao pblico em geral, mas sim dar aos usurios locais uma infraestrutura gil e flexvel
para suportar workloads de servios dentro de seu prprio domnio administrativo.

2.5.3 Nuvem hbrida

Uma nuvem privada, no entanto, pode dar suporte uma nuvem hbrida,
atravs da complementao da capacidade da infraestrutura local com a capacidade
computacional de uma nuvem pblica (22). A nuvem privada/hbrida tambm pode
permitir acesso remoto atravs de interfaces remotas, como a de Web Services que
a Amazon EC2 utiliza (22).

2.6 Esforos de normalizao

Desde a popularizao do termo Computao em Nuvem com a IBM Blue


Cloud (23), diversas iniciativas se tornaram provedoras de computao em nuvem:
Amazon e sua Elastic Compute Cloud (EC2), Google com a ferramenta Google App,
Microsoft com sua plataforma Windows Azure, Salesforce e sua Force.com e demais.
Apesar dessas solues se encaixarem na definio de computao em nuvem, elas
se diferem nas suas programabilidades. Segundo (24) o conceito programabilidade
relativo a programar as caractersticas que a rede pode oferecer aos desenvolvedores,
medindo assim quanta liberdade os mesmos teriam para poder manipular os recursos
e dispositivos.

Esse conceito pode ser aplicado para comparar as solues de Computao em


Nuvem. Nuvens mais programveis oferecem ambientes onde os desenvolvedores
esto livres para escolher seus prprios paradigmas, linguagem e plataforma de
programao, possuindo total controle sobre os seus recursos virtualizados. Nuvens
menos programveis restringem os desenvolvedores de certa forma: forando
um determinado conjunto de linguagens de programao, ou permitindo suporte
para apenas um paradigma de aplicao. Por outro lado, um elevado nvel de
programabilidade torna difcil o manejar a nuvem porque o fornecedor da nuvem
ter muitos ambientes distintos para manejar. Por exemplo, se o provedor da nuvem
2.6. Esforos de normalizao 20

permitir seus usurios a utilizarem qualquer sistema operacional na mquina virtual,


o operador da nuvem ter que lidar com um elevado nmero de solues para prover
servios de tolerncia falha. Alm disso, solues menos programveis abstraem
alguns problemas operacionais (comunicao entre processos, acesso rede, funes
de armazenamento, etc.) por alguns modelos de middleware. Um exemplo de soluo
em nuvem com alta programabilidade a Amazon EC2, onde os usurios podem
escolher o sistema operacional de um conjunto de sistemas suportados dados pela
Amazon e eles podem configurar suas mquinas virtuais para trabalhar como eles
acreditam que encaixe. A ferramenta Google App um exemplo de uma soluo
pouco programvel, visto que ela restringe os desenvolvedores ao paradigma web e
a poucas linguagens e programao.

Uma caracterstica comum presente em todas as nuvens que os donos das nuvens
compreensivelmente evitam revelar as caractersticas por trs de suas solues, visto
que isso parte de suas informaes estratgicas. Apesar disso, so muitos os
esforos feitos por vrias instituies acadmicas e no acadmicas para desenvolver
uma soluo de cdigo aberto. A observao e a classificao dessas solues podem
alavancar mais ainda a rea de pesquisa da Computao em Nuvem fornecendo
um bom ponto de partida para descobrir diferentes abordagens para os problemas
presentes no ambiente de Computao em Nuvem.

O desenvolvimento de solues em Computao em Nuvem trs diversos desafios


tcnicos para os desenvolvedores. Esses desafios podem ser agrupados em trs
principais reas: negociao, deciso e operao. Na rea de negociao, os desafios
so relativos como desenvolvedores de interface de aplicao com a nuvem assim
como a descrio das ofertas da nuvem. Isso inclui tambm a definio do nvel de
programabilidade que a nuvem oferecer. A rea de deciso lida com o principal
problema que as nuvens enfrentam por trs das cenas: como os recursos virtuais
podem ser agendados para encontrar as exigncias dos usurios, por exemplo? Por
fim, a rea de operao associada execuo de decises e comunicao entre
elementos da nuvem.

Um desafio considervel presente em vrias discusses levantadas a cerca da


nuvem relativo necessidade de padronizao. Todas as trs reas enfrentam
o desafio da padronizao de certa forma, mas o desafio principal ocorre na rea
de negociao. Atualmente, provedores de nuvem oferecem interfaces proprietrias
para acessar seus servios. Isso bloqueia usurios dentro de um determinado
2.6. Esforos de normalizao 21

provedor como eles no podem migrar suas aplicaes e servios com facilidades
entre provedores (25). esperado que os provedores enxerguem esse problema
e trabalhem juntos para oferecer uma API padronizada baseada na abertura de
padres como Simple Object Access Protocol (Protocolo Simples de Acesso a
Objetos) (SOAP) e Representational State Transfer (Transferncia de Estado
Representacional) (REST).

A partir do desenvolvimento exponencial da Computao em Nuvem, vrios


padres abertos so introduzidos. Estes destinam-se a dar orientaes para
implementar ou desenvolver a Computao em Nuvem da melhor forma possvel.
Estas normas so revistas por vrios profissionais e a maioria de uso gratuito. As
diretrizes de esses padres so baseadas nas melhores prticas. Muitos dos padres
abertos para Computao em Nuvens esto ainda em desenvolvimento, mas vamos
dar uma viso geral dos mais interessantes:

i. Open Cloud Manifesto: Um esforo importante na normalizao vem do


Open Cloud Manifesto (26). Esta uma iniciativa apoiada por centenas de
empresas que pretende discutir com as organizaes da nuvem uma maneira
de produzir padres abertos para a Computao em Nuvem. Suas doutrinas
principais so a colaborao e a coordenao de esforos na normalizao, a
adoo de padres abertos sempre que seja necessrio e no desenvolvimento de
normas baseadas em requisitos do cliente. O manifesto destaca os requisitos
que precisam ser padronizados em um ambiente de nuvem, para garantir a
interoperabilidade nos cenrios mais tpicos de interao.

ii. Cloud Security Alliance (CSA): A Cloud Security Alliance foi criada
para promover a utilizao das melhores prticas para garantir a segurana
no ambiente da Computao em Nuvem, e fornecer educao sobre o uso da
Computao em Nuvem para ajudar a proteger todas as outras formas de
computao.

iii. Open Virtualization Format (Formato Aberto de Virtualizao)


(OVF): Esta especificao descreve um formato aberto, seguro, eficiente e
extensvel para o acondicionamento e distribuio de software para rodar em
mquinas virtuais. gerenciado pelo Distributed Management Task Force
(DMTF).
2.7. OpenNebula 22

iv. Open Cloud Consortium (OCC): Para promover o desenvolvimento de


padres para Computao em Nuvem e diretrizes para operar entre as nuvens.

v. Organization for the Advancement of Structures Information


Standars (OASIS): OASIS impulsiona o desenvolvimento, convergncia e
adoo de padres abertos para a sociedade global da informao.

Por tudo isso e, como falamos anteriormente, so muitos os esforos feitos para
desenvolver uma soluo de cdigo aberto. A atividade de pesquisa a realizada vai
ter como foco a anlise da ferramenta OpenNebula, que busca oferecer meios para
a implementao de ambientes distribudos com suporte virtualizao e baseados
no paradigma da Computao em Nuvem. Aps esta etapa inicial, a ferramenta
vai ser utilizada para a implementao de uma nuvem privada de recursos. Na
prxima Seo 2.7 vamos discutir profundamente sobre o projeto OpenNebula. Mas
existem muitas outras solues de cdigo aberto em desenvolvimento, algumas das
mais importantes sero descritas na Seo 2.8.

2.7 OpenNebula

Nesta seo vamos no centrar analisar a ferramenta de cdigo aberto


OpenNebula, o ncleo da nossa pesquisa.

2.7.1 Introduo

"OpenNebula uma ferramenta aberta e flexvel que se encaixa nos atuais


ambientes de datacenter para construir qualquer tipo de implantao IaaS na
nuvem"(27). OpenNebula pode ser usado principalmente como uma ferramenta
de virtualizao para gerenciar sua infraestrutura virtual no datacenter ou cluster,
o que normalmente referido como nuvem privada. OpenNebula suporta nuvem
hbrida para combinar infraestrutura local com infraestrutura baseada em nuvem
pblica, permitindo ambientes de hospedagem altamente escalveis. OpenNebula
tambm suporta nuvem pblica ao fornecer interfaces da nuvem para expor a
sua funcionalidade para mquina virtual, armazenamento e gerenciamento da
rede. Em outras palavras, o projeto OpenNebula orquestra armazenamento,
rede, virtualizao, monitoramento e tecnologias de segurana para permitir o
posicionamento dinmico de servios multi-tier (grupos de mquinas virtuais
2.7. OpenNebula 23

interligados) em infraestruturas distribudas, combinando recursos do datacenter


e recursos da nuvem remota, acordo com as polticas de alocao (27).

OpenNebula.org um projeto que visa construo da ferramenta padro


de cdigo aberto da Computao em Nuvem para gerenciar a complexidade e
heterogeneidade das infraestruturas dos datacenters distribudos. Essa e a misso
do projeto OpenNebula.

Figura 2.5: Logotipo projeto OpenNebula (OPENNEBULA, 2011)

Aqui esto algumas das principais caractersticas que fazem OpenNebula


diferente de outras ferramentas de gesto da nuvem (22):

Capacidades para gesto da nuvem: OpenNebula o conjunto de ferramentas


mais avanadas para a criao de nuvens privadas, pblicas e hbridas,
oferecendo no s uma implementao de cdigo aberto das interfaces mais
comuns da nuvem, mas tambm oferece recursos exclusivos para a gesto da
nuvem e dos datacenters virtuais.

Capacidades para integrao: Arquitetura, interfaces e componentes abertos,


flexveis e extensveis que se encaixam em qualquer datacenter existente, e
permitir a sua integrao com qualquer produto e servio da nuvem e qualquer
ferramenta de gesto dos datacenters.

Capacidades para produo de ambientes: Escalabilidade e desempenho


testado em infraestruturas compostas por milhares de ncleos, com os nveis
de segurana e tolerncia a erros exigidos em sistemas de produo.

Software totalmente open source: OpenNebula verdadeiramente cdigo fonte


aberto, distribudo sob a licena Apache, que rigorosamente testado e
amadurecido atravs de uma comunidade vibrante.

2.7.2 Histria

OpenNebula foi criado como um projeto de pesquisa em 2005 por Ignacio M.


Llorente e Rubn S. Montero. Desde sua primeira verso pblica do software
2.7. OpenNebula 24

de maro de 2008, evoluiu atravs de verses de cdigo aberto e agora opera


como um projeto open source. OpenNebula o resultado de muitos anos de
pesquisa e desenvolvimento em gesto eficiente e escalvel de mquinas virtuais em
intraestruturas distribudas, em estrita colaborao com a comunidade de usurios
(27).

A tecnologia OpenNebula amadureceu graas a uma comunidade ativa de


usurios e desenvolvedores. Diferentes projetos, grupos de pesquisa e empresas
construram novos componentes da nuvem para complementar e melhorar a
funcionalidade fornecida por este conjunto de ferramentas de cdigo aberto.

Em maro de 2010, os principais autores de OpenNebula criam C12G Labs


para permitir que o projeto OpenNebula no seja vinculado exclusivamente ao
financiamento pblico. OpenNebula.org agora um projeto gerido pelos C12G Labs
(27).

A tabela 2.1 fornece um resumo bastante detalhado das principais etapas do


projeto OpenNebula.

2.7.3 Arquitetura OpenNebula

O modo de operao da nuvem construda por meio da ferramenta OpenNebula


baseado em uma arquitetura semelhante ao modelo clssico dos clusters, onde
um n de front-end responsvel pela execuo dos servios de administrao
da infraestrutura, enquanto os demais ns computacionais executam as mquinas
virtuais que consumiro os recursos disponveis. Neste modelo, ao menos uma rede
de comunicao fsica utilizada para a interligao de todos os ns. A Figura 2.6
ilustra o ambiente constitudo pela nuvem privada em questo.

O n de front-end executa o OpenNebula Daemon, que representa o ncleo


do sistema e administra o ciclo de vida das mquinas virtuais, alm de outros
aspectos relativos ao funcionamento dos demais ns (como rede, armazenamento
e hypervisores). Neste n tambm so executados os drivers da ferramenta,
responsveis pela constituio de interfaces entre o ncleo do sistema e elementos
externos, como hypervisores e sistemas de arquivos especficos. O n de front-end
pode, ainda, atuar como repositrio de imagens de mquinas virtuais, embora este
no seja seu modo de funcionamento ideal.

Os demais ns tm hypervisores habilitados para a execuo de mquinas


2.7. OpenNebula 25

OpenNebula 2.2 Released 28/03/2011


OpenNebula 2.2 Beta 1 Release 02/03/2011
OpenNebula 2.0 Release 24/10/2010
OpenNebula 2.0 Beta 1 Release 28/07/2010
OpenNebula Cloud Toolkit Goes Commercial 05/05/2010
New Web Site for OpenNebula.org 24/02/2010
OpenNebula 1.4 Released 16/12/2009
OpenNebula Cloud Announcement 18/11/2009
OpenNebula 1.4 RC Released 18/11/2009
OpenNebula 1.4 Beta 2 Released 30/10/2009
New Research Grants to Fund OpenNebula until 2012 04/09/2009
OpenNebula Tarantula Stable version 1.2.1 29/07/2009
OpenNebula 1.4 Beta1 Codename Hourglass out for Testing 23/07/2009
Ubuntu 9.04 (Jaunty Jackalope) has been released today bringing 23/04/2009
OpenNebula
OpenNebula Wins the Best Demo Award at OGF25/4th EGEE-UF 09/03/2009
OpenNebula 1.2 release 06/02/2009
OpenNebula 1.2 beta release 05/12/2008
Release of OpenNebula 1.0 for Data Center Virtualization and Cloud 24/07/2008
Solutions
New Technology Preview (TP2) of the OpenNebula (ONE) Virtual 24/07/2008
Infrastructure Engine
Technology Preview of the OpenNebula (ONE) Virtual Infrastructure 24/07/2008
Engine
Tabela 2.1: Evoluo projeto OpenNebula (OPENNEBULA, 2011)

virtuais. A comunicao entre o n de front-end e os ns com hypervisores se


d por meio de canais de SSH. Alternativamente, a criptografia destes canais pode
ser desabilitada, resultando em um melhor tempo de transmisso das imagens das
mquinas virtuais a serem executadas em um dado n.

OpenNebula compreende a execuo de trs tipos de processos, como pode ser


visto na Figura 2.7.

i. O OpenNebula daemon (oned): Um processo centralizado que gerencia


o ciclo de vida das Virtual Machine (Mquina Virtual) (VM) e orquestra a
2.7. OpenNebula 26

Figura 2.6: Arquitetura padro de uma nuvem OpenNebula (OPENNEBULA, 2011)

operao de todos os mdulos.

ii. Os drivers: Para acessar aos sistemas especficos do cluster (por exemplo,
armazenamento ou hypervisors). Fornecem uma abstrao da camada
de virtualizao subjacente. Assim, OpenNebula no est vinculado a
nenhum ambiente especfico, proporcionando uma camada uniforme de gesto,
independiente da tecnologia de virtualizao utilizada.

iii. O scheduler: Para ajustar a locao das VM com base em um conjunto de


polticas pr-definidas.

Figura 2.7: Processos OpenNebula (OPENNEBULA,2011)

2.7.4 Objetivos

O projeto OpenNebula tem os seguintes objetivos, a fim de liderar a inovao na


nuvem (27):
2.8. Outras solues de cdigo aberto 27

i. Desenvolver o conjunto de ferramentas mais avanada, altamente escalvel e


adaptvel para o gerenciamento da Computao em Nuvem.

ii. Garantir estabilidade e qualidade das ferramentas de software.

iii. Colaborar com os usurios mais exigentes das ferramentas de gesto da


Computao em nuvem.

iv. Dar suporte aos componentes de cdigo aberto que esto sendo criados em
torno do projeto OpenNebula.

v. Apoiar comunidade de usurios e desenvolvedores que contribuem para o


projeto.

vi. Colaborar com os principais projetos de investigao e inovao da


Computao em Nuvem.

2.8 Outras solues de cdigo aberto

Alm de projeto OpenNebula, existem outras muitas solues de cdigo aberto:


Eucalyptus, OpenQRM, Nimbus, TPlatform, XCP, Apache Virtual Computing Lab
(VCL), Enomaly Elastic Computing Platform, etc. Nesta seo vamos descrever
algumas destas solues de forma rpida.

2.8.1 Eucalyptus

Eucalyptus uma infraestrutura de software de cdigo aberto para implementar


Computao em Nuvem. Comeou como um projeto de pesquisa no Departamento
de Cincias da Computao, na Universidade da Califrnia, Santa Brbara (29).
Eucalyptus um acrnimo para "Elastic Utility Computing Architecture for
Linking Your Programs To Useful Systems". "O sistema Eucalyptus feito
para proporcionar aos administradores e pesquisadores a habilidade de implantar
uma infraestrutura para criao de mquinas virtuais e controle sobre recursos
existentes"(29). Eucalyptus tenta oferecer a mesma funcionalidade dos servios
Amazon EC2, mas dentro de uma nuvem privada.

Com Eucalyptus possvel construir sua prpria nuvem privada por trs do
firewall da sua companhia. Um dos pontos fortes do Eucalyptus que " muito
modular e o API que usa compatvel com Amazon Web Service (Servio Web
2.8. Outras solues de cdigo aberto 28

Amazon) (AWS)"(29). Com essa compatibilidade (com uma das maiores nuvens de
provedores pblicos), Eucalyptus oferece tima exibio, desse modo voc no est
limitado a sua prpria nuvem e pode facilmente trocar.

Uma comparao detalhada entre a funcionalidade do OpenNebula e do


Eucalyptus (30):

i. OpenNebula tem uma interface de administrao superior. As mquinas


virtuais podem migrar e suspender. Eucalyptus tem apenas a funcionalidade
oferecida pelo EC2 (ou seja, no suspende, nem faz migrao de qualquer tipo).

ii. OpenNebula oferece uma interface de host fsica flexvel para acompanhar, e
gerenciar os recursos fsicos da nuvem. Esse gerenciamento de interface est
faltando nas verses atuais do Eucalyptus.

iii. OpenNebula permite o gerenciamento de conjuntos de mquinas virtuais e


das configuraes de rede (VLANs) entre eles. Rede de isolamento fornecida
atravs de tabelas de transio. Eucalyptus no permite a definio de redes
virtuais.

iv. OpenNebula fornece uma API poderosa para expandir as suas capacidades.
Eucalyptus apenas fornece a interface EC2-SOAP para interagir com ele.

v. OpenNebula pode construir nuvens hbridas. Ento voc pode implantar suas
mquinas virtuais localmente ou em outra nuvem. Isso no pode ser feito com
Eucalyptus.

2.8.2 OpenQRM

OpenQRM "uma soluo de cdigo aberto de gesto de infraestrutura muito


flexvel"(31). Ele completamente conectvel com uma arquitetura que foca a
automaticidade, rapidez, monitoramento, alta disponibilidade, Computao em
Nuvem e especialmente suporte a mltiplas tecnologias de virtualizao. OpenQRM
no vem com muitas funcionalidades. Ele oferece todos os tipos de recursos para
a instalao de plugins que tornam OpenQRM uma importante ferramenta para
gesto de infraestrutura. Atravs desses plugins so utilizadas as plataformas de
virtualizao, armazenagem, controle e implantao da Computao em Nuvem.

OpenQRM tem as seguintes limitaes (32):


2.8. Outras solues de cdigo aberto 29

i. Zonas de disponibilidade: A documentao no fala sobre isso, no h


suporte.

ii. OVF: OpenQRM no possui implementaes para o formato OVF. Suas


imagens virtuais possuem seu prprio formato.

iii. Documentao: H uma limitada documentao disponvel. OpenQRM foca


principalmente nos seus produtos em geral, com a Computao em Nuvem
sendo o nico plugin. No existe muita documentao e experincia sobre o
assunto.

2.8.3 Nimbus

Nimbus (33) "uma soluo de cdigo aberto (distribudo sob a licena


Apache) para tornar clusters em uma infraestrutura como servio (IaaS), focado
principalmente nas aplicaes cientficas". Essa soluo dar aos usurios a
possibilidade de alocar e configurar recursos remotos implantando mquinas virtuais,
conhecido como Virtual Workspace Service (VWS). Um VWS um gerenciador de
mquinas virtuais que invocar diferentes interfaces.

Para implantar as aplicaes, Nimbus oferece uma configurao "cloudkit"que


consiste em um servio de gerenciamento de hospedagem e um repositrio de
imagem. Os componentes da rea de trabalho so mostrados na Figura 2.8.

Figura 2.8: Componentes do espao de trabalho Nimbus (KEAHAY, 2009)

Podemos ver os seguintes componentes:

i. Workspace service: baseado em web services e fornece segurana com a


2.8. Outras solues de cdigo aberto 30

autenticao e autorizao GSI. Atualmente, Nimbus suporta duas interfaces:


Amazon EC2 e WSRF.

ii. Workspace control: responsvel por controlar as instncias das mquinas


virtuais, gerenciando e reconstruindo imagens, intergrando uma mquina
virtual com a internet atribuindo endereoes IP e MAC. As ferramentas de
controle da rea de trabalho operam com o Xen hypervisor e podem tambm
operar com KVM5.

iii. Workspace resource management: uma soluo de cdigo aberto para


gerenciar diferentes mquinas virtuais, mas podem ser substitudas por outras
tecnologias como OpenNebula.

iv. Worspace pilot: responsvel por prover virtualizaco com pequenas


mudanas em uma clula de operao.

2.8.4 TPlataform

TPlatform (34) "uma soluo da nuvem que prover uma plataforma de


desenvolvimento para aplicaes via web, que inspirada nas tecnologias da nuvem
Google, e que age como uma soluo plataforma como servio (PaaS)". Suas
infraestruturas so suportadas por trs tecnologias: um sistema de arquivos escalvel
chamado Tianwang File System (Sistema de Arquivos de Tianwang) (TFS) que
similar ao Google File System (Sistema de Arquivos de Google) (GFS), o mecanismo
de armazenamento de dados BigTable, e o modelo de programao MapReduce.

2.8.5 XCP

O Xen hypervisor (35) "uma soluo para virtualizao de infraestrutura


que prover uma camada de abstrao entre o hardware do servidor e o sistema
operacional. Xen hypervisor permite cada servidor fsico execute vrios servidores
virtuais lidando com o sistema operacional e seus aplicativos de setor fsico. A
soluo Xen usada por muitas solues de Computao em Nuvem como Amazon
EC2, Nimbus e Eucalyptus". Recentemente, a Xen.org anunciou a XCP (35) como
uma soluo para infraestrutura de virtualizao da nuvem. Mas, diferentemente das
solues de cdigo aberto das nuvens existentes, a XCP no fornece uma arquitetura
global para servios da nuvem. Seu objetivo prover uma ferramenta para copiar
com configurao automtica e manuteno de plataformas da nuvem (35).
2.8. Outras solues de cdigo aberto 31

A arquitetura XCP, como pode ser visto na Figura 2.9, baseada no XCP
hosts que so responsveis por hospedar as mquinas virtuais. De acordo (35),
esses hspedes podem ser agregados em uma variedade de recursos XCP e usar um
armazenamento compartilhado, assim as mquinas virtuais podem ser iniciadas e
reiniciadas em qualquer host XCP. O Master XCP Host oferece uma interface de
administrao e encaminha mensagens de comando para os outros hosts XCP.

Figura 2.9: Arquitetura XCP (TAKAKO, 2010)

2.8.6 Resumo

Fazendo um resumo para obter uma idia geral, apresentamos a Figura 2.10
onde mostramos as solues de cdigo aberto e algumas das solues comerciais
mais importantes da computao em nuvem. O grfico compara as solues e seu
modelo de negcio (hardware, middleware e nvel de usurio), de acordo com a
flexibilidade de configurao.

Finalmente, a Tabela 2.2 apresenta um quadro comparativo das solues de


cdigo aberto da nuvem descritas nesta seo, em termos de tipo de servio (SaaS,
PaaS e IaaS), as principais caractersticas e as tecnologias de infraestrutura.
2.8. Outras solues de cdigo aberto 32

Figura 2.10: Solues Computao em Nuvem (Adaptado de TAKAKO, 2010)

Solues Servio Principais Caractersticas Infraestrutura


OpenNebula IaaS Alocao de recursos Xen hypervisor,
KVM e VMware
Eucalyptus IaaS Arquitetura hierrquica Xen hypervisor e
KVM
OpenQRM IaaS Documentao limitada Xen hypervisor,
KVM, VMware e
Linux VServer
Nimbus IaaS Tornar clusters em uma Iaas Xen hypervisor e
para Computao em Nuvem KVM
TPlatform PaaS Centra-se em aplicaes web de TFS, BigTable e
minerao de textos MapReduce
XCP IaaS Apenas uma ferramenta para Xen
manuteno automtica de
nuvens
Tabela 2.2: Comparao das solues de cdigo aberto da Computao em Nuvem
Captulo 3
Anlise da ferramenta OpenNebula

Nesse captulo so apresentados, inicialmente, os equipamentos utilizados para


a anlise da ferramenta OpenNebula, o software open source para Computao
em Nuvem, que constitui o objetivo principal deste trabalho. Nas Sees 3.2
e 3.3 so descritas as metodologias utilizadas para a obteno dos ambientes.
Especificamente, a Seo 3.2 analisa as etapas necessrias para criar uma nuvem
privada. Em seguida, a Seo 3.3 descreve como lanar uma VM. A Seo final
discute os comandos OpenNebula executados na metodologia, utilizados para a
obteno dos resultados.

3.1 Equipamento utilizado

No desenvolvimento desse trabalho os ambientes foram desenvolvidos em PCs


conectados a um roteador wireless, resumidamente descritos pela Tabela 3.1.

Computador pessoal Computador pessoal Roteador Wireless


Fabricante ACER ACER D-Link
Modelo Aspire 5741 Aspire 5741 DI-524, 54Mbps
Processador Intel Core i3-350M Intel Core i3-350M -
RAM 4GB 4GB -
OS Linux Ubuntu 10.10 Linux Ubuntu 10.10 -
Papel no Ambiente Front-end N Servidor DHCP
Tabela 3.1: Equipamento utilizado no desenvolvimento do trabalho

33
3.2. Criao de nuvem privada 34

Um dos computadores pessoais foi empregado como n de font-end, enquanto


ao outro foi responsvel pela execuo do hypervisor e pela alocao de mquinas
virtuais.

3.2 Criao de nuvem privada

A nuvem privada implementada composta por dois ns. Como falamos na


Seo anterior, o n de front-end constitudo por um dos computadores pessoais.
O n computacional adicional constitudo pelo outro PC. A Figura 3.1 ilustra o
ambiente construdo.

Figura 3.1: Nuvem privada implementada

O processo de instalao da nuvem privada pode ser dividido em cinco etapas.


Inicialmente, os pacotes do OpenNebula (verso atual 2.2) so instalados no n de
front-end. Para tal, utiliza-se o seguinte comando no terminal:

$ sudo apt-get install opennebula

Este comando realiza vrias aes de configurao, como a criao de uma conta
de administrador, gerao de um par de chaves RSA e a inicializao do daemon do
OpenNebula.

O segundo passo consiste em adicionar os ns computacionais ao ambiente. Para


tal, o seguinte comando utilizado, sendo desktop01 o hostname de nossa segunda
mquina e tendo em vista que o hypervisor utilizado o KVM:

$ onehost add desktop01 im_kvm vmm_kvm tm_ssh

Em seguida, configura-se o acesso SSH entre os ns. Como s h um n


computacional alm do n de front-end, apenas comando abaixo suficiente:

$ sudo -u oneadmin ssh desktop01

A quarta etapa consiste em instalar os pacotes necessrios do OpenNebula no


n computacional. Para isto, nesta mquina, executa-se o comando abaixo:

$ sudo apt-get install opennebula-node


3.3. Lanamento de mquina virtual 35

Por fim, so realizadas as configuraes de autenticao no escopo de acesso


SSH. Assim, o front-end vai se comunicar com os controladores dos ns via SSH sem
digitar nenhuma senha. OpenNebula usa o usurio oneadmin para gerenciar tudo,
por isso que o seu par de chaves precisa ser conhecido por todos os ns. Para
tal, no n computacional, executado o comando abaixo, onde (output) deve ser
substitudo pela sada obtida no terminal aps a utilizao do comando onehost:

$ sudo tee /var/lib/one/.ssh/authorized_keys < < EOT > (output)


> EOT

Os ns existentes no ambiente podem ser ento listados atravs do comando:

$ onehost list

3.3 Lanamento de mquina virtual

Uma vez que a nuvem privada est rodando, o n pode iniciar as suas VMs.
Toda a configurao do ambiente deve ser feita no n front-end, que orquestra e
administra o lanamento e ciclo de vida das mquinas virtuais. A Figura 3.2 ilustra
o ambiente construdo.

Figura 3.2: Mquina virtual (VM1) implementada

Primeiro, precisa-se preparar uma rede virtual para a nossa VM. Cria-se um
arquivo de texto vmnet.template para gerar uma rede virtual com apenas um
Internet Protocol (Protocolo de Internet) (IP), contendo o seguinte (muda-se de
acordo com o endereo Local Area Network (Rede de rea Local) (LAN)):

Figura 3.3: Contedo padro do arquivo de texto vmnet.template

Em seguida, utiliza-se o seguinte comando no terminal para criar a rede virtual


recm configurada:
3.3. Lanamento de mquina virtual 36

$ onevnet create vmnet.template

importante verificar a criao correta da rede. Para mostrar uma lista de todas
as redes virtuais disponveis executado o comando abaixo:

$ onevnet list

Alm disso, para mostrar os detalhes da rede virtual criada interessante utilizar
o seguinte comando:

$ onevnet show

Depois de ter configurada a rede virtual, com o comando onevm de OpenNebula


possvel lanar uma mquina virtual do font-end para o n. Para construir a VM,
cria-se um arquivo de texto (primeiraVM.template) para apresentar a imagem dessa
mquina virtual. A imagem vai estar alocada em um diretrio do front-end (por
exemplo: /opt/nebula/images). O arquivo gerado vai ter o seguinte contedo:

Figura 3.4: Contedo padro do arquivo de texto primeiraVM.template

Por fim, depois de ter adaptados os requisitos para a imagem da mquina virtual,
lana-se a VM:

$ onevm submit primeiraVM.template

Finalmente, pode-se usar novamente o comando onevm de OpenNebula para


identificar e controlar o estado da mquina virtual:

$ onevm list
3.4. Comandos 37

3.4 Comandos

OpenNebula oferece seis comandos para interagir com o sistema: onehost,


onevnet, onevm, oneuser, oneimage, onecluster, oneauth.

Especificamente, na metodologia descrita no captulo utilizam-se trs comandos:

onehost: Este comando permite ao usurio gerenciar hosts no servidor de


OpenNebula (front-end ). Ele fornece a funcionalidade de adicionar, eliminar e
controlar um determinado host ou listar todos os hosts disponveis na nuvem.

onevnet: Este comando permite ao usurio gerenciar redes virtuais no servidor


OpenNebula (front-end ). Ele fornece a funcionalidade de adicionar, excluir e
monitorar uma determinada rede virtual.

onevm: Este comando permite ao usurio gerenciar mquinas virtuais em


OpenNebula. O usurio pode implantar, migrar e controlar uma mquina
virtual.

No prximo captulo, sero mostrados os resultados da execuo de alguns destes


comandos no ambiente implementado.
Captulo 4
Resultados

Nesse captulo so exibidos e descritos os resultados obtidos da realizao


deste trabalho. Especificamente, os resultados obtidos da execuo dos comandos
OpenNebula na criao dos ambientes analisados no captulo anterior. Eles podem
ser divididos em duas Sees: resultados da criao de nuvem privada e resultados
do lanamento de mquina virtual.

4.1 Resultados da criao de uma nuvem privada

Uma vez feita configurao da nuvem privada descrita na Seo 3.2, os resultados
obtidos so os seguintes (sendo desktop01 : 192.168.0.73):

i. Executando o comando onehost list podem ser listados os ns existentes no


ambiente:

Figura 4.1: Comando onehost list

Onde:
HID: ID do Host.
NAME: Nome do Host.
RVM: Nmero de Mquinas Virtuais em execuo.
TCPU: CPU Total (percentual).
FCPU: CPU Livre (percentual).

38
4.1. Resultados da criao de uma nuvem privada 39

ACPU: CPU Disponvel (no alocadas pelas VMs).


TMEM: Memria Total.
FMEM: Memria Livre.
STAT: Estado do Host.

ii. Executando o comando onehost show <host_id> pode obter-se informao


dos ns existentes na nuvem implementada:

Figura 4.2: Comando onehost show <host_id>

iii. Executando o comando onehost disable <host_id> pode desabilitar-se


qualquer n existente na nuvem implementada, como pode ser visto na Figura
4.3.

iv. Executando o comando onehost enable <host_id> pode habilitar-se


novamente qualquer n com estado off, como pode ser visto na Figura 4.4.
4.2. Resultados do lanamento de uma mquina virtual 40

Figura 4.3: Comando onehost disable <host_id>

Figura 4.4: Comando onehost enable <host_id>

v. Executando o comando onehost delete <host_id> pode apagar-se qualquer n


existente na nuvem implementada:

Figura 4.5: Comando onehost delete <host_id>

4.2 Resultados do lanamento de uma mquina virtual

Uma vez feita configurao do lanamento da mquina virtual descrita na Seo


3.3, os resultados obtidos so os seguintes:

i. Executando o comando onevnet list podem ser listadas as redes virtuais


existentes no ambiente:

Figura 4.6: Comando onevnet list

Onde:
NID: ID da rede.
NAME: Nome da rede virtual.
TYPE: Tipo de rede virtual (0=ranged, 1=fixed).
BRIDGE: Interface associada rede virtual.
4.2. Resultados do lanamento de uma mquina virtual 41

ii. Executando o comando onevnet show <network_id> pode obter-se informao


das redes virtuais existentes no ambiente:

Figura 4.7: Comando onevnet show <network_id>

iii. Executando o comando onevnet delete <network_id> pode apagar-se qualquer


rede virtual existente no ambiente:

Figura 4.8: Comando onevnet delete <network_id>

iv. Executando o comando onevm list podem ser listadas as mquinas virtuais
existentes no ambiente:

Figura 4.9: Comando onevm list

Onde:
ID: ID da VM.
NAME: Nome da VM.
STAT: Estado da VM.
CPU: Percentual CPU usada pela VM.
MEM: Memria usada pela VM.
HOSTNAME: Host onde a VM est sendo ou foi executada.
TIME: Tempo desde o lanamento da VM (dias horas:minutos:segundos).
4.2. Resultados do lanamento de uma mquina virtual 42

Na Figura 4.9 ilustra-se, por exemplo, a mquina virtual criada no estado prol,
ou seja, o sistema est transferindo os arquivos da VM pro n. Os estados
possveis da VM so mostrados na Tabela 4.1.

Estado Descrio
pend No modo padro, uma VM inicia-se no estado pendente, esperando
os recursos para correr.
hold VM no executvel.
stop A mquina virtual interrompida. O estado da VM foi salvo e foi
transferido de volta junto com as imagens de disco.
susp Como stop, mas os arquivos so derivados no n remoto para depois
reiniciar a VM.
done A VM est pronta. VMs neste estado no sero mostradas com o
comando onevm list, mas so mantidas no banco de dados para fins
contbeis.
prol O sistema est transferindo os arquivos da VM.
runn A VM est sendo executada.
migr A VM est migrando de um n para outro.
epil Neste estado o sistema "limpa"o n usado para hospedar a VM.
fail VM falhar.
Tabela 4.1: Estados das mquinas virtuais

v. Executando o comando onevm delete <vm_id> pode apagar-se qualquer VM


existente no ambiente implementado:

Figura 4.10: Comando onevm delete <vm_id>


Captulo 5
Concluses

Nesse captulo, so feitas concluses acerca do trabalho realizado. A Seo 5.1


lista as consideraes finais provindas do mesmo, enquanto a Seo 5.2 trata das
perspectivas para trabalhos futuros.

5.1 Consideraes finais

OpenNebula oferece um rico conjunto de ferramentas para a construo de


ambientes computacionais em nuvem, sejam eles pblicos ou privados. Para a
implementao de uma nuvem privada, sua boa integrao com a distribuio
Ubuntu do sistema operacional Linux faz com que a instalao de todos os
componentes necessrios seja feita de forma simples e rpida. A adio de novos
ns computacionais a um ambiente previamente configurado tambm facilitada,
podendo ser feita sem qualquer influncia no funcionamento do sistema. Alm
disso, a orquestrao das mquinas virtuais pode tambm ser feita sem maiores
complicaes, utilizando dos comandos OpenNebula bsicos: onevnet e onevm.
Desta forma, um vasto conhecimento em administrao de sistemas Linux no
necessrio para a configurao do ambiente.

Por fim, as ferramentas oferecidas por OpenNebula so abertas e desenvolvidas


sob o paradigma do software open source, com forte participao de uma comunidade
de desenvolvedores, que contribui com a melhoria de funcionalidades existentes,
criao de novos mdulos para o sistema e deteco e correo de bugs.
OpenNebula trata-se de uma soluo realmente interessante. possvel se ter um
ambiente de Computao em Nuvem sem maiores investimentos.

43
5.2. Perspectivas para trabalhos futuros 44

A atratividade criada em torno da nuvem privada se d tambm em relao a


uma questo bastante em voga na atualidade: o consumo consciente. Ao se utilizar
melhor os recursos computacionais j existentes no datacenter da empresa, pode-se
reduzir o consumo de energia, postergar a aquisio de novos equipamentos e em
ltima instncia, reduzir o volume de lixo eletrnico, que causa contaminao e
outros problemas ambientais e sociais em diversos lugares do mundo.

Os esforos devem continuar. necessrio mais trabalho para remover a maior


parte do misticismo e dos conflitos que envolvem o uso das nuvens.

5.2 Perspectivas para trabalhos futuros

Com a realizao deste trabalho tive uma primeira experincia com o ambiente
OpenNebula. O trabalho futuro analisar quantitativamente a ferramenta atravs
de medidas de avaliao de desempenho. Testar um ambiente mais real, com
vrios hosts e orquestrando mltiplas mquinas virtuais, sem limitaes de recursos
computacionais.

tambm considerada a possibilidade de analisar outras solues open source


no paradigma da Computao em Nuvem e realizar uma comparao quantitativa
entre as ferramentas.
Referncias Bibliogrficas

1 MALIS, A. Routing over large clouds (rolc) charter. Part of the 32 IETF
meeting minutes, 1993.

2 MELL, P.; GRANCE, T. The nist definition of cloud computing. 2009.

3 RITTINGHOUSE, J. W.; RANSOME, J. F. Cloud computing. implementation,


management and security. CRC Press, 2010.

4 BREY, B. B. Applying PIC18 Microcontrollers. Architecture, Programming, and


Interfacing using C and Assembly. 2008.

5 MAHOWALD, R. P. Market analysis perspective: Worldwide saas and cloud


services 2010: New models for delivering software. International Data Corporation
(IDC), 2011.

6 ARMBRUST, M. et al. Above the clouds: A berkeley view of cloud computing.


University of California at Berkeley, 2009.

7 TANENBAUM, M. V. S. A. S. Distributed Systems. Principles and Paradigms.


2006.

8 COULOURIS, G.; DOLLMORE; KINDBERG. Distributed Systems: Concepts


and Design. 2005.

9 TALIA, D.; YAHYAPOUR, R.; ZIEGLER, W. Grid Middleware and Services:


Challenges and Solutions. 2005.

10 FOSTER, I. Computational Grids. 1998.

45
Referncias Bibliogrficas 46

11 WEISHAUPL, T. et al. Business in the grid: The big project. Grid Economics
and Business Models, 2005.

12 FOSTER, I.; KESSELMAN, C.; TUECKE, S. The anatomy of the grid:


Enabling scalable virtual organization. International Journal of High Performance
Computing Applications, 2001.

13 BUNKER, D. T. G. Delivering Utility Computing - Business-driven IT


Optimization. 2006.

14 BUBENDORFER, K.; BUYYA, R. Market-Oriented Grid and Utility


Computing. 2009.

15 SOLTER, N. A.; JELINEK, G.; D., M. OpenSolaris Bible. 2009.

16 ENDREI, M. et al. Patterns: Service-Oriented Architecture and Web Services.


2004.

17 MURUGESAN, S. Harnessing green it: Principles and practies. IEEE Internet


Computing, 2008.

18 PALLIS, G. Cloud computing: The new frontier of internet computing. View


from the cloud, 2010.

19 STANOEVSKA-SLABEVA, K.; WOZNIAK, T.; RISTOL, S. Grid and Cloud


Computing - A Business Perspective on Technology and Applications. 2010.

20 RIGHTSCALE. Define Cloud Computing. 2011. RightScale Blog, disponvel


em http://blog.rightscale.com/2008/05/26/define-cloud-computing.

21 SUN. A guide to getting started with cloud computing. Sun white paper, 2010.

22 SOTOMAYOR, B. et al. Virtual infrastructure management in private and


hybrid clouds. IEEE Internet Computing, v. 13, n. 5, p. 1422, 2009.

23 VOUK, M. A. Cloud computing - issues, research and implementations.


Computing and Information Technology. University of Zagreb, Croatia, 2008.

24 CHOWDHURY, N. M.; BOUTABA, R. A survey of network virtualization.


Computer Networks, v. 54, p. 862876, 2010.
Referncias Bibliogrficas 47

25 BUYYA, R. et al. Cloud computing and emerging it platforms: Vision, hype,


and reality for delivering computing as the 5th utility. Future Generation Computer
Systems, 2009.

26 OPENCLOUD. The Open Cloud Manifiesto. 2009. Disponvel em


http://www.opencloudmanifesto.org/.

27 OPENNEBULA. Projeto OpenNebula. 2011. Disponvel em


http://opennebula.org/.

28 SOTOMAYOR, B. et al. Capacity leasing in cloud systems using the


opennebula engine. 2008.

29 EUCALYPTUS. Projeto Eucalyptus. 2011. Disponvel em


http://open.eucalyptus.com/.

30 MONTERO, R. Opennebula/eucalyptus comparision. 2009.

31 OPENQRM. Projeto OpenQRM. 2011. Disponvel em http://openqrm.com/.

32 RAMBHADJAN, M.; SCHUTIJSER, A. Surfnet cloud computing solutions.


Universiteit van Amsterdam, 2010.

33 KEAHEY, K. Nimbus: Open source infrastructure as a service cloud computing


software. Workshop on adapting applications and computing services to multi-core
and virtualization, 2009.

34 PENG, B.; CUI, B.; LI, X. Implementation issues of a cloud computing


platform. IEEE Data Engineering Bulletin, v. 32, 2009.

35 XEN. Projeto Xen Cloud Platform. 2011. Disponvel em http://xen.org/.