introdução a plataformas de computação em nuvem uma ...everton/publications/2012-epoca.pdf ·...

38
Introdução a Plataformas de Computação em Nuvem – Uma Abordagem Prática Frederico Lopes 1 , André Almeida 2,3 , Thais Batista 3 , Everton Cavalcante 3, Renato Gondim 3 , Thomas Diniz 1 , Arthur Cássio 3 , Thiago Cesar 3 1 Escola de Ciência e Tecnologia – Universidade Federal do Rio Grande do Norte (UFRN), Natal – RN – Brasil 2 Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte (IFRN), Parnamirim – RN – Brasil 3 Departamento de Informática e Matemática Aplicada (DIMAP) Universidade Federal do Rio Grande do Norte (UFRN), Natal – RN – Brasil {fred.lopes,thaisbatista, evertonranielly, renatuga, thomasfdsdiniz, arthurecassio, lord.sena}@gmail.com, [email protected] Abstract. This paper describes a short-course that provides a theoretical and practical perspective on cloud computing platforms usage. By using a practical approach we demonstrate the use of two public cloud computing platform, Amazon Web Services (AWS) and Google Application Engine (GAE) as well as the steps needed to setup a private cloud computing infrastructure, OpenStack. Resumo. Este artigo descreve a proposta de Minicurso com o objetivo de fornecer uma base teórico-prática sobre o uso de plataformas de nuvem. Demonstramos, através de abordagem prática, o uso de uma plataforma de nuvem pública, a Amazon Web Services (AWS) e Google Application Engine (GAE) bem como todo processo necessário para montagem de uma infraestrutura de nuvem privada, OpenStack. 1. Introdução A computação em nuvem é um novo paradigma que visa prover serviços computacionais acessados via internet e sob demanda, onde usuários pagam apenas pelos serviços que utilizam. Essa ideia de computação como um utilitário segue o mesmo modelo de outros serviços essenciais de utilidade pública, tais como, eletricidade, água, esgoto e telefone, que são entregues à população de modo bastante transparente e o usuário paga apenas pelo que efetivamente consome. Aplicando a mesma lógica de negócio na informática, esse modelo possibilita que serviços de TI sejam oferecidos aos usuários sob demanda, onde estes pagam apenas pelo que utilizaram do serviço. O modelo de Computação em Nuvem provê recursos dinamicamente escaláveis e normalmente virtualizados através de serviços sobre a Internet. Nesse modelo, desenvolvedores de serviços para Internet não precisam mais investir muito capital em hardware e em recursos humanos para manter o serviço em operação. Além disso, Anais dos Tutoriais da V Escola POtiguar de Computação e suas Aplicações V EPOCA - Natal/RN, Brasil - de 05 a 09 de Novembro de 2012 73 Anais dos Tutoriais da V Escola POtiguar de Computação e suas Aplicações V EPOCA - Natal/RN, Brasil - de 05 a 09 de Novembro de 2012

Upload: vokhuong

Post on 11-Jan-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Introduccedilatildeo a Plataformas de Computaccedilatildeo em Nuvem ndash

Uma Abordagem Praacutetica

Frederico Lopes1 Andreacute Almeida

23 Thais Batista

3 Everton Cavalcante

3 Renato

Gondim3 Thomas Diniz

1 Arthur Caacutessio

3 Thiago Cesar

3

1Escola de Ciecircncia e Tecnologia ndash Universidade Federal do Rio Grande do Norte

(UFRN) Natal ndash RN ndash Brasil

2Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande do Norte (IFRN)

Parnamirim ndash RN ndash Brasil

3Departamento de Informaacutetica e Matemaacutetica Aplicada (DIMAP)

Universidade Federal do Rio Grande do Norte (UFRN) Natal ndash RN ndash Brasil

fredlopesthaisbatista evertonranielly renatuga thomasfdsdiniz

arthurecassio lordsenagmailcom andrealmeidaifrnedubr

Abstract This paper describes a short-course that provides a theoretical and

practical perspective on cloud computing platforms usage By using a

practical approach we demonstrate the use of two public cloud computing

platform Amazon Web Services (AWS) and Google Application Engine (GAE)

as well as the steps needed to setup a private cloud computing infrastructure

OpenStack

Resumo Este artigo descreve a proposta de Minicurso com o objetivo de

fornecer uma base teoacuterico-praacutetica sobre o uso de plataformas de nuvem

Demonstramos atraveacutes de abordagem praacutetica o uso de uma plataforma de

nuvem puacuteblica a Amazon Web Services (AWS) e Google Application Engine

(GAE) bem como todo processo necessaacuterio para montagem de uma

infraestrutura de nuvem privada OpenStack

1 Introduccedilatildeo

A computaccedilatildeo em nuvem eacute um novo paradigma que visa prover serviccedilos

computacionais acessados via internet e sob demanda onde usuaacuterios pagam apenas

pelos serviccedilos que utilizam Essa ideia de computaccedilatildeo como um utilitaacuterio segue o

mesmo modelo de outros serviccedilos essenciais de utilidade puacuteblica tais como

eletricidade aacutegua esgoto e telefone que satildeo entregues agrave populaccedilatildeo de modo bastante

transparente e o usuaacuterio paga apenas pelo que efetivamente consome Aplicando a

mesma loacutegica de negoacutecio na informaacutetica esse modelo possibilita que serviccedilos de TI

sejam oferecidos aos usuaacuterios sob demanda onde estes pagam apenas pelo que

utilizaram do serviccedilo

O modelo de Computaccedilatildeo em Nuvem provecirc recursos dinamicamente escalaacuteveis e

normalmente virtualizados atraveacutes de serviccedilos sobre a Internet Nesse modelo

desenvolvedores de serviccedilos para Internet natildeo precisam mais investir muito capital em

hardware e em recursos humanos para manter o serviccedilo em operaccedilatildeo Aleacutem disso

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 73

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

empresas que precisam de um alto poder de processamento podem usar a infra-estrutura

fornecida por provedores de serviccedilos em nuvem ao inveacutes de investor recursos em

manter um parque computacional que demanda maacutequinas potentes e equipe teacutecnica

especializada

Do ponto de vista do usuaacuterio infra-estruturas de computaccedilatildeo em nuvem disponibilizam

sistemas operacionais que possibilitam que os usuaacuterios utilizando qualquer dispositivo

conectado a Internet possam ter acesso aos serviccedilos arquivos informaccedilotildees e programas

situados ldquona nuvemrdquo Assim os dispositivos utilizados pelos usuaacuterios natildeo necessitam de

grandes recursos computacionais aproximando-se de simples terminais (Armbrust et al

2009)

Atualmente haacute uma variedade de ambientes de nuvem disponiacuteveis no mercado que datildeo

suporte ao desenvolvimento de aplicaccedilotildees Amazon Web Services (AWS)1 Google App

Engine (GAE)2 Microsoft Azure Platform

3 e OpenStack

4 satildeo alguns exemplos de

ambientes de desenvolvimento de aplicaccedilotildees em nuvem Esses diferentes ambientes

seguem diferentes tipos de modelos de provisatildeo de serviccedilos e cada um fornece uma

gama de serviccedilos que se diferenciam em diversos aspectos tais como preccedilo facilidade

de uso e desempenho

Dado esse cenaacuterio de diversidade de ambientes de nuvem um dos principais desafios

em termos de desenvolvimento de aplicaccedilotildees diz respeito agrave implementaccedilatildeo implantaccedilatildeo

e migraccedilatildeo de aplicaccedilotildees na nuvem que satildeo tarefas desafiadoras no sentido da maior

complexidade inerente agrave heterogeneidade desses ambientes (Galaacuten et al 2009) Tais

ambientes natildeo satildeo implementados utilizando padrotildees comuns cada um possui sua

proacutepria API ferramentas de desenvolvimento mecanismos de virtualizaccedilatildeo

caracteriacutesticas de governanccedila tecnologias de implantaccedilatildeo e gerenciamento de recursos

etc Consequentemente os usuaacuterios tendem a optar por implementar suas aplicaccedilotildees em

um ambiente especiacutefico tornando-se altamente dependentes de um uacutenico provedor de

nuvem problema conhecido como cloud lock-in (Armbrust et al 2009) sendo

impossibilitados de aproveitar as melhores caracteriacutesticas de diferentes ambientes Aleacutem

disso essa dependecircncia implica que em caso de indisponibilidade de um serviccedilo do

ambiente a aplicaccedilatildeo natildeo tem a flexibilidade de recorrer ao serviccedilo equivalente em

outro ambiente

Dado esse cenaacuterio diversificado esse minicurso tem como objetivo mostrar aspectos de

implementaccedilatildeo e implantaccedilatildeo de uma aplicaccedilatildeo usando trecircs importantes ambientes de

nuvem AWS GAE e OpenStack Esse documento estaacute estruturado da seguinte forma

A Seccedilatildeo 2 introduz os conceitos baacutesicos relacionados com a Computaccedilatildeo em Nuvem A

Seccedilatildeo 3 apresenta os serviccedilos e detalhes de uso de trecircs plataformas de computaccedilatildeo em

nuvem Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack Por

fim a Seccedilatildeo 4 conteacutem as conclusotildees

1 Amazon Web Services (AWS) ndash httpawsamazoncom

2 Google App Engine (GAE) ndash httpcodegooglecomappengine

3 Microsoft Windows Azure ndash httpwwwwindowsazurecom

4 OpenStack Cloud Software ndash httpopenstackorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 74

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

2 Conceitos Baacutesicos

Computaccedilatildeo em Nuvem eacute ldquoum tipo de sistema paralelo e distribuiacutedo que consiste de uma

coleccedilatildeo de computadores conectados e virtualizados que satildeo dinamicamente provisionados

e apresentados como um ou mais recursos computacionaisrdquo (Buyya et al 2008) Poreacutem o

termo Computaccedilatildeo em Nuvem refere-se natildeo somente agrave estrutura de hardware e de software

dos datacenters mas tambeacutem aos serviccedilos providos por estes (Armbrust et al 2009 Zhang

et al 2010) Do ponto de vista dos serviccedilos oferecidos a Computaccedilatildeo em Nuvem pode ser

conceituada como um conjunto de serviccedilos disponibilizados via rede provendo

escalabilidade personalizaccedilatildeo garantias de QoS infraestruturas sob demanda e de baixo

custo os quais podem ser acessados de um modo simples e pervasivo (Wang et al 2010)

Um conceito de computaccedilatildeo em nuvem bastante aceito pela comunidade eacute o do National

Institute of Standards and Technology (NIST) apresentado por P Mell and T Grance

(2011) que afirma que a computaccedilatildeo em nuvem eacute um ldquomodelo computacional para acesso

conveniente sob demanda e de qualquer localizaccedilatildeo a uma rede compartilhada de

recursos computacionais (redes servidores armazenamento aplicativos e serviccedilos) que

possam ser prontamente disponibilizados como serviccedilos e acessados com um esforccedilo

miacutenimo de gestatildeo ou de interaccedilatildeo com o provedor de serviccedilosrdquo

Para atender a todas essas caracteriacutesticas tipicamente plataformas de Computaccedilatildeo em

Nuvem disponibilizam interfaces que possibilitam que os usuaacuterios utilizando qualquer

dispositivo conectado agrave Internet possam ter acesso aos serviccedilos arquivos informaccedilotildees e

programas situados ldquona nuvemrdquo Ou seja plataformas de Computaccedilatildeo em Nuvem satildeo

provedores de serviccedilos as quais viabilizam a ideia da computaccedilatildeo utilitaacuteria que significa

computaccedilatildeo ao alcance de todos onde usuaacuterios pagam pelos serviccedilos computacionais que

utilizam

As subseccedilotildees a seguir apresentam conceitos e fundamentos inerentes ao contexto de

Computaccedilatildeo em Nuvem

21 Nuvens puacuteblicas privadas hiacutebridas e comunitaacuterias

O termo nuvem tem sido usado historicamente como metaacutefora para a Internet que em

alguns diagramas era comumente representada como a figura de uma nuvem

(Rittinghouse e Ransome 2010) Na visatildeo de Vaquero et al (2009) e Cearley et al

(2009) as nuvens seriam grandes repositoacuterios de recursos (hardware software

plataformas serviccedilos etc) virtualizados e de faacutecil acesso recursos esses que podem ser

configurados e reconfigurados dinamicamente de maneira a se ajustar a cargas variadas

otimizando a utilizaccedilatildeo desses mesmos recursos As nuvens podem ser organizadas

basicamente em quatro modelos em termos de localizaccedilatildeo fiacutesica e distribuiccedilatildeo a saber

nuvem puacuteblica nuvem privada e nuvem hiacutebrida discutidos a seguir e ilustrados na

Figura 1 adaptada de Sosinsky (2011)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 75

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 1 Modelos de organizaccedilatildeo em nuvens

Nuvem puacuteblica Em termos simples serviccedilos de nuvem puacuteblica satildeo caracterizados pela

sua disponibilidade para clientes por um provedor de serviccedilos atraveacutes da Internet O fato

de uma nuvem ser puacuteblica natildeo significa que os dados do usuaacuterio estejam publicamente

visiacuteveis os fornecedores de serviccedilos tipicamente proveem mecanismos de controle de

acesso aos seus usuaacuterios No caso das nuvens puacuteblicas estas satildeo tipicamente exploradas

utilizando-se um modelo do tipo pagamento por uso onde os fornecedores de

infraestrutura oferecem garantias no formato de SLAs (Service-Level Agreements)

(Keller e Ludwig 2003 Buyya et al 2008 Bose et al 2011) personalizados que

precisam ser claros concisos e possuir suporte baseado em penalidades caso natildeo sejam

cumpridos Nesse acordo entre provedores de serviccedilos e clientes devido agrave natureza

dinacircmica dos ambientes de Computaccedilatildeo em Nuvem atributos de QoS como

disponibilidade tempo de resposta etc precisam ser continuamente monitorados aleacutem

de outros vaacuterios fatores (eg confiabilidade) tambeacutem precisarem ser considerados (Patel

et al 2009)

Nuvem privada Geralmente o termo eacute utilizado para referir-se aos centros de dados

(datacenters) internos de uma empresa ou outro tipo de organizaccedilatildeo que natildeo estatildeo

disponiacuteveis publicamente (Armbrust et al 2009) oferecendo muitos dos benefiacutecios de

um ambiente de Computaccedilatildeo em Nuvem puacuteblica como a elasticidade e o modelo

baseado em serviccedilos A diferenccedila entre uma nuvem puacuteblica e uma nuvem privada eacute que

em um ambiente de serviccedilos baseados em nuvem privada dados e processos satildeo

gerenciados internamente a uma organizaccedilatildeo sem restriccedilotildees de banda de rede exposiccedilatildeo

agrave seguranccedila e requisitos legais que o uso de serviccedilos de nuvem puacuteblica pode requerer

Aleacutem disso serviccedilos de nuvem privada oferecem ao provedor e ao usuaacuterio um maior

controle da infraestrutura de nuvem

Nuvem hiacutebrida Uma nuvem hiacutebrida toma forma quando uma nuvem privada eacute

suplementada com caracteriacutesticas presentes em nuvens puacuteblicas (eg a disponibilidade

de serviccedilos via Internet de maneira puacuteblica) prevendo assim uma utilizaccedilatildeo mista e

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 76

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

integrada desses dois modelos de nuvem Em nuvens hiacutebridas por exemplo

informaccedilotildees de negoacutecio que sejam natildeo criacuteticas e operaccedilotildees de processamento podem ser

mantidas em niacutevel de nuvem puacuteblica enquanto serviccedilos e dados de negoacutecio que sejam

considerados criacuteticos podem ser mantidos sob o controle dos usuaacuterios no escopo de

nuvem privada Aleacutem disso como o paradigma de Computaccedilatildeo em Nuvem emprega um

modelo de computaccedilatildeo sob demanda serviccedilos de nuvens puacuteblicas podem ser utilizados

como alternativa a sistemas locais de contexto privado quando a demanda

computacional superar a disponibilidade de recursos disponiacuteveis localmente na nuvem

privada da organizaccedilatildeo

Aleacutem desses trecircs modelos supracitados existem ainda as nuvens comunitaacuterias Uma

nuvem comunitaacuteria eacute compartilhada por vaacuterias organizaccedilotildees que partilham interesses

como a missatildeo requisitos de seguranccedila poliacuteticas entre outros e decidem partilhar parte

das suas infraestruturas eou serviccedilos Nuvens comunitaacuterias podem ser administradas

pelas proacuteprias organizaccedilotildees ou por um terceiro Um exemplo interessante de nuvem

comunitaacuteria seria uma nuvem do governo federal que possa suprir necessidades de

vaacuterios ministeacuterios poupando esses oacutergatildeos de cada um ter que gerenciar e manter a sua

proacutepria nuvem

22 Modelo arquitetural da Computaccedilatildeo em Nuvem

Na Computaccedilatildeo em Nuvem tudo eacute um serviccedilo representado em inglecircs como

Everything as a Service ndash XaaS onde X pode ser software plataformas infraestruturas

etc (Rimal et al 2009) Conceitualmente as plataformas de Computaccedilatildeo em Nuvem

proveem suas funcionalidades como serviccedilos categorizadas como IaaS ndash Infrastructure

as a Service (estrutura como um serviccedilo) PaaS ndash Platform as a Service (plataforma

como um serviccedilo) e SaaS ndash Software as a Service (software como um serviccedilo) Assim

serviccedilos baseados em uso de infraestrutura plataforma e serviccedilo respectivamente satildeo

oferecidos aos usuaacuterios como mostra a Figura 2 Cada uma dessas categorias de

serviccedilos eacute detalhada a seguir

Figura 2 Camadas do modelo arquitetural da computaccedilatildeo em nuvem (Fonte

wwwibmcom)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 77

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

empresas que precisam de um alto poder de processamento podem usar a infra-estrutura

fornecida por provedores de serviccedilos em nuvem ao inveacutes de investor recursos em

manter um parque computacional que demanda maacutequinas potentes e equipe teacutecnica

especializada

Do ponto de vista do usuaacuterio infra-estruturas de computaccedilatildeo em nuvem disponibilizam

sistemas operacionais que possibilitam que os usuaacuterios utilizando qualquer dispositivo

conectado a Internet possam ter acesso aos serviccedilos arquivos informaccedilotildees e programas

situados ldquona nuvemrdquo Assim os dispositivos utilizados pelos usuaacuterios natildeo necessitam de

grandes recursos computacionais aproximando-se de simples terminais (Armbrust et al

2009)

Atualmente haacute uma variedade de ambientes de nuvem disponiacuteveis no mercado que datildeo

suporte ao desenvolvimento de aplicaccedilotildees Amazon Web Services (AWS)1 Google App

Engine (GAE)2 Microsoft Azure Platform

3 e OpenStack

4 satildeo alguns exemplos de

ambientes de desenvolvimento de aplicaccedilotildees em nuvem Esses diferentes ambientes

seguem diferentes tipos de modelos de provisatildeo de serviccedilos e cada um fornece uma

gama de serviccedilos que se diferenciam em diversos aspectos tais como preccedilo facilidade

de uso e desempenho

Dado esse cenaacuterio de diversidade de ambientes de nuvem um dos principais desafios

em termos de desenvolvimento de aplicaccedilotildees diz respeito agrave implementaccedilatildeo implantaccedilatildeo

e migraccedilatildeo de aplicaccedilotildees na nuvem que satildeo tarefas desafiadoras no sentido da maior

complexidade inerente agrave heterogeneidade desses ambientes (Galaacuten et al 2009) Tais

ambientes natildeo satildeo implementados utilizando padrotildees comuns cada um possui sua

proacutepria API ferramentas de desenvolvimento mecanismos de virtualizaccedilatildeo

caracteriacutesticas de governanccedila tecnologias de implantaccedilatildeo e gerenciamento de recursos

etc Consequentemente os usuaacuterios tendem a optar por implementar suas aplicaccedilotildees em

um ambiente especiacutefico tornando-se altamente dependentes de um uacutenico provedor de

nuvem problema conhecido como cloud lock-in (Armbrust et al 2009) sendo

impossibilitados de aproveitar as melhores caracteriacutesticas de diferentes ambientes Aleacutem

disso essa dependecircncia implica que em caso de indisponibilidade de um serviccedilo do

ambiente a aplicaccedilatildeo natildeo tem a flexibilidade de recorrer ao serviccedilo equivalente em

outro ambiente

Dado esse cenaacuterio diversificado esse minicurso tem como objetivo mostrar aspectos de

implementaccedilatildeo e implantaccedilatildeo de uma aplicaccedilatildeo usando trecircs importantes ambientes de

nuvem AWS GAE e OpenStack Esse documento estaacute estruturado da seguinte forma

A Seccedilatildeo 2 introduz os conceitos baacutesicos relacionados com a Computaccedilatildeo em Nuvem A

Seccedilatildeo 3 apresenta os serviccedilos e detalhes de uso de trecircs plataformas de computaccedilatildeo em

nuvem Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack Por

fim a Seccedilatildeo 4 conteacutem as conclusotildees

1 Amazon Web Services (AWS) ndash httpawsamazoncom

2 Google App Engine (GAE) ndash httpcodegooglecomappengine

3 Microsoft Windows Azure ndash httpwwwwindowsazurecom

4 OpenStack Cloud Software ndash httpopenstackorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 74

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

2 Conceitos Baacutesicos

Computaccedilatildeo em Nuvem eacute ldquoum tipo de sistema paralelo e distribuiacutedo que consiste de uma

coleccedilatildeo de computadores conectados e virtualizados que satildeo dinamicamente provisionados

e apresentados como um ou mais recursos computacionaisrdquo (Buyya et al 2008) Poreacutem o

termo Computaccedilatildeo em Nuvem refere-se natildeo somente agrave estrutura de hardware e de software

dos datacenters mas tambeacutem aos serviccedilos providos por estes (Armbrust et al 2009 Zhang

et al 2010) Do ponto de vista dos serviccedilos oferecidos a Computaccedilatildeo em Nuvem pode ser

conceituada como um conjunto de serviccedilos disponibilizados via rede provendo

escalabilidade personalizaccedilatildeo garantias de QoS infraestruturas sob demanda e de baixo

custo os quais podem ser acessados de um modo simples e pervasivo (Wang et al 2010)

Um conceito de computaccedilatildeo em nuvem bastante aceito pela comunidade eacute o do National

Institute of Standards and Technology (NIST) apresentado por P Mell and T Grance

(2011) que afirma que a computaccedilatildeo em nuvem eacute um ldquomodelo computacional para acesso

conveniente sob demanda e de qualquer localizaccedilatildeo a uma rede compartilhada de

recursos computacionais (redes servidores armazenamento aplicativos e serviccedilos) que

possam ser prontamente disponibilizados como serviccedilos e acessados com um esforccedilo

miacutenimo de gestatildeo ou de interaccedilatildeo com o provedor de serviccedilosrdquo

Para atender a todas essas caracteriacutesticas tipicamente plataformas de Computaccedilatildeo em

Nuvem disponibilizam interfaces que possibilitam que os usuaacuterios utilizando qualquer

dispositivo conectado agrave Internet possam ter acesso aos serviccedilos arquivos informaccedilotildees e

programas situados ldquona nuvemrdquo Ou seja plataformas de Computaccedilatildeo em Nuvem satildeo

provedores de serviccedilos as quais viabilizam a ideia da computaccedilatildeo utilitaacuteria que significa

computaccedilatildeo ao alcance de todos onde usuaacuterios pagam pelos serviccedilos computacionais que

utilizam

As subseccedilotildees a seguir apresentam conceitos e fundamentos inerentes ao contexto de

Computaccedilatildeo em Nuvem

21 Nuvens puacuteblicas privadas hiacutebridas e comunitaacuterias

O termo nuvem tem sido usado historicamente como metaacutefora para a Internet que em

alguns diagramas era comumente representada como a figura de uma nuvem

(Rittinghouse e Ransome 2010) Na visatildeo de Vaquero et al (2009) e Cearley et al

(2009) as nuvens seriam grandes repositoacuterios de recursos (hardware software

plataformas serviccedilos etc) virtualizados e de faacutecil acesso recursos esses que podem ser

configurados e reconfigurados dinamicamente de maneira a se ajustar a cargas variadas

otimizando a utilizaccedilatildeo desses mesmos recursos As nuvens podem ser organizadas

basicamente em quatro modelos em termos de localizaccedilatildeo fiacutesica e distribuiccedilatildeo a saber

nuvem puacuteblica nuvem privada e nuvem hiacutebrida discutidos a seguir e ilustrados na

Figura 1 adaptada de Sosinsky (2011)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 75

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 1 Modelos de organizaccedilatildeo em nuvens

Nuvem puacuteblica Em termos simples serviccedilos de nuvem puacuteblica satildeo caracterizados pela

sua disponibilidade para clientes por um provedor de serviccedilos atraveacutes da Internet O fato

de uma nuvem ser puacuteblica natildeo significa que os dados do usuaacuterio estejam publicamente

visiacuteveis os fornecedores de serviccedilos tipicamente proveem mecanismos de controle de

acesso aos seus usuaacuterios No caso das nuvens puacuteblicas estas satildeo tipicamente exploradas

utilizando-se um modelo do tipo pagamento por uso onde os fornecedores de

infraestrutura oferecem garantias no formato de SLAs (Service-Level Agreements)

(Keller e Ludwig 2003 Buyya et al 2008 Bose et al 2011) personalizados que

precisam ser claros concisos e possuir suporte baseado em penalidades caso natildeo sejam

cumpridos Nesse acordo entre provedores de serviccedilos e clientes devido agrave natureza

dinacircmica dos ambientes de Computaccedilatildeo em Nuvem atributos de QoS como

disponibilidade tempo de resposta etc precisam ser continuamente monitorados aleacutem

de outros vaacuterios fatores (eg confiabilidade) tambeacutem precisarem ser considerados (Patel

et al 2009)

Nuvem privada Geralmente o termo eacute utilizado para referir-se aos centros de dados

(datacenters) internos de uma empresa ou outro tipo de organizaccedilatildeo que natildeo estatildeo

disponiacuteveis publicamente (Armbrust et al 2009) oferecendo muitos dos benefiacutecios de

um ambiente de Computaccedilatildeo em Nuvem puacuteblica como a elasticidade e o modelo

baseado em serviccedilos A diferenccedila entre uma nuvem puacuteblica e uma nuvem privada eacute que

em um ambiente de serviccedilos baseados em nuvem privada dados e processos satildeo

gerenciados internamente a uma organizaccedilatildeo sem restriccedilotildees de banda de rede exposiccedilatildeo

agrave seguranccedila e requisitos legais que o uso de serviccedilos de nuvem puacuteblica pode requerer

Aleacutem disso serviccedilos de nuvem privada oferecem ao provedor e ao usuaacuterio um maior

controle da infraestrutura de nuvem

Nuvem hiacutebrida Uma nuvem hiacutebrida toma forma quando uma nuvem privada eacute

suplementada com caracteriacutesticas presentes em nuvens puacuteblicas (eg a disponibilidade

de serviccedilos via Internet de maneira puacuteblica) prevendo assim uma utilizaccedilatildeo mista e

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 76

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

integrada desses dois modelos de nuvem Em nuvens hiacutebridas por exemplo

informaccedilotildees de negoacutecio que sejam natildeo criacuteticas e operaccedilotildees de processamento podem ser

mantidas em niacutevel de nuvem puacuteblica enquanto serviccedilos e dados de negoacutecio que sejam

considerados criacuteticos podem ser mantidos sob o controle dos usuaacuterios no escopo de

nuvem privada Aleacutem disso como o paradigma de Computaccedilatildeo em Nuvem emprega um

modelo de computaccedilatildeo sob demanda serviccedilos de nuvens puacuteblicas podem ser utilizados

como alternativa a sistemas locais de contexto privado quando a demanda

computacional superar a disponibilidade de recursos disponiacuteveis localmente na nuvem

privada da organizaccedilatildeo

Aleacutem desses trecircs modelos supracitados existem ainda as nuvens comunitaacuterias Uma

nuvem comunitaacuteria eacute compartilhada por vaacuterias organizaccedilotildees que partilham interesses

como a missatildeo requisitos de seguranccedila poliacuteticas entre outros e decidem partilhar parte

das suas infraestruturas eou serviccedilos Nuvens comunitaacuterias podem ser administradas

pelas proacuteprias organizaccedilotildees ou por um terceiro Um exemplo interessante de nuvem

comunitaacuteria seria uma nuvem do governo federal que possa suprir necessidades de

vaacuterios ministeacuterios poupando esses oacutergatildeos de cada um ter que gerenciar e manter a sua

proacutepria nuvem

22 Modelo arquitetural da Computaccedilatildeo em Nuvem

Na Computaccedilatildeo em Nuvem tudo eacute um serviccedilo representado em inglecircs como

Everything as a Service ndash XaaS onde X pode ser software plataformas infraestruturas

etc (Rimal et al 2009) Conceitualmente as plataformas de Computaccedilatildeo em Nuvem

proveem suas funcionalidades como serviccedilos categorizadas como IaaS ndash Infrastructure

as a Service (estrutura como um serviccedilo) PaaS ndash Platform as a Service (plataforma

como um serviccedilo) e SaaS ndash Software as a Service (software como um serviccedilo) Assim

serviccedilos baseados em uso de infraestrutura plataforma e serviccedilo respectivamente satildeo

oferecidos aos usuaacuterios como mostra a Figura 2 Cada uma dessas categorias de

serviccedilos eacute detalhada a seguir

Figura 2 Camadas do modelo arquitetural da computaccedilatildeo em nuvem (Fonte

wwwibmcom)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 77

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

2 Conceitos Baacutesicos

Computaccedilatildeo em Nuvem eacute ldquoum tipo de sistema paralelo e distribuiacutedo que consiste de uma

coleccedilatildeo de computadores conectados e virtualizados que satildeo dinamicamente provisionados

e apresentados como um ou mais recursos computacionaisrdquo (Buyya et al 2008) Poreacutem o

termo Computaccedilatildeo em Nuvem refere-se natildeo somente agrave estrutura de hardware e de software

dos datacenters mas tambeacutem aos serviccedilos providos por estes (Armbrust et al 2009 Zhang

et al 2010) Do ponto de vista dos serviccedilos oferecidos a Computaccedilatildeo em Nuvem pode ser

conceituada como um conjunto de serviccedilos disponibilizados via rede provendo

escalabilidade personalizaccedilatildeo garantias de QoS infraestruturas sob demanda e de baixo

custo os quais podem ser acessados de um modo simples e pervasivo (Wang et al 2010)

Um conceito de computaccedilatildeo em nuvem bastante aceito pela comunidade eacute o do National

Institute of Standards and Technology (NIST) apresentado por P Mell and T Grance

(2011) que afirma que a computaccedilatildeo em nuvem eacute um ldquomodelo computacional para acesso

conveniente sob demanda e de qualquer localizaccedilatildeo a uma rede compartilhada de

recursos computacionais (redes servidores armazenamento aplicativos e serviccedilos) que

possam ser prontamente disponibilizados como serviccedilos e acessados com um esforccedilo

miacutenimo de gestatildeo ou de interaccedilatildeo com o provedor de serviccedilosrdquo

Para atender a todas essas caracteriacutesticas tipicamente plataformas de Computaccedilatildeo em

Nuvem disponibilizam interfaces que possibilitam que os usuaacuterios utilizando qualquer

dispositivo conectado agrave Internet possam ter acesso aos serviccedilos arquivos informaccedilotildees e

programas situados ldquona nuvemrdquo Ou seja plataformas de Computaccedilatildeo em Nuvem satildeo

provedores de serviccedilos as quais viabilizam a ideia da computaccedilatildeo utilitaacuteria que significa

computaccedilatildeo ao alcance de todos onde usuaacuterios pagam pelos serviccedilos computacionais que

utilizam

As subseccedilotildees a seguir apresentam conceitos e fundamentos inerentes ao contexto de

Computaccedilatildeo em Nuvem

21 Nuvens puacuteblicas privadas hiacutebridas e comunitaacuterias

O termo nuvem tem sido usado historicamente como metaacutefora para a Internet que em

alguns diagramas era comumente representada como a figura de uma nuvem

(Rittinghouse e Ransome 2010) Na visatildeo de Vaquero et al (2009) e Cearley et al

(2009) as nuvens seriam grandes repositoacuterios de recursos (hardware software

plataformas serviccedilos etc) virtualizados e de faacutecil acesso recursos esses que podem ser

configurados e reconfigurados dinamicamente de maneira a se ajustar a cargas variadas

otimizando a utilizaccedilatildeo desses mesmos recursos As nuvens podem ser organizadas

basicamente em quatro modelos em termos de localizaccedilatildeo fiacutesica e distribuiccedilatildeo a saber

nuvem puacuteblica nuvem privada e nuvem hiacutebrida discutidos a seguir e ilustrados na

Figura 1 adaptada de Sosinsky (2011)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 75

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 1 Modelos de organizaccedilatildeo em nuvens

Nuvem puacuteblica Em termos simples serviccedilos de nuvem puacuteblica satildeo caracterizados pela

sua disponibilidade para clientes por um provedor de serviccedilos atraveacutes da Internet O fato

de uma nuvem ser puacuteblica natildeo significa que os dados do usuaacuterio estejam publicamente

visiacuteveis os fornecedores de serviccedilos tipicamente proveem mecanismos de controle de

acesso aos seus usuaacuterios No caso das nuvens puacuteblicas estas satildeo tipicamente exploradas

utilizando-se um modelo do tipo pagamento por uso onde os fornecedores de

infraestrutura oferecem garantias no formato de SLAs (Service-Level Agreements)

(Keller e Ludwig 2003 Buyya et al 2008 Bose et al 2011) personalizados que

precisam ser claros concisos e possuir suporte baseado em penalidades caso natildeo sejam

cumpridos Nesse acordo entre provedores de serviccedilos e clientes devido agrave natureza

dinacircmica dos ambientes de Computaccedilatildeo em Nuvem atributos de QoS como

disponibilidade tempo de resposta etc precisam ser continuamente monitorados aleacutem

de outros vaacuterios fatores (eg confiabilidade) tambeacutem precisarem ser considerados (Patel

et al 2009)

Nuvem privada Geralmente o termo eacute utilizado para referir-se aos centros de dados

(datacenters) internos de uma empresa ou outro tipo de organizaccedilatildeo que natildeo estatildeo

disponiacuteveis publicamente (Armbrust et al 2009) oferecendo muitos dos benefiacutecios de

um ambiente de Computaccedilatildeo em Nuvem puacuteblica como a elasticidade e o modelo

baseado em serviccedilos A diferenccedila entre uma nuvem puacuteblica e uma nuvem privada eacute que

em um ambiente de serviccedilos baseados em nuvem privada dados e processos satildeo

gerenciados internamente a uma organizaccedilatildeo sem restriccedilotildees de banda de rede exposiccedilatildeo

agrave seguranccedila e requisitos legais que o uso de serviccedilos de nuvem puacuteblica pode requerer

Aleacutem disso serviccedilos de nuvem privada oferecem ao provedor e ao usuaacuterio um maior

controle da infraestrutura de nuvem

Nuvem hiacutebrida Uma nuvem hiacutebrida toma forma quando uma nuvem privada eacute

suplementada com caracteriacutesticas presentes em nuvens puacuteblicas (eg a disponibilidade

de serviccedilos via Internet de maneira puacuteblica) prevendo assim uma utilizaccedilatildeo mista e

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 76

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

integrada desses dois modelos de nuvem Em nuvens hiacutebridas por exemplo

informaccedilotildees de negoacutecio que sejam natildeo criacuteticas e operaccedilotildees de processamento podem ser

mantidas em niacutevel de nuvem puacuteblica enquanto serviccedilos e dados de negoacutecio que sejam

considerados criacuteticos podem ser mantidos sob o controle dos usuaacuterios no escopo de

nuvem privada Aleacutem disso como o paradigma de Computaccedilatildeo em Nuvem emprega um

modelo de computaccedilatildeo sob demanda serviccedilos de nuvens puacuteblicas podem ser utilizados

como alternativa a sistemas locais de contexto privado quando a demanda

computacional superar a disponibilidade de recursos disponiacuteveis localmente na nuvem

privada da organizaccedilatildeo

Aleacutem desses trecircs modelos supracitados existem ainda as nuvens comunitaacuterias Uma

nuvem comunitaacuteria eacute compartilhada por vaacuterias organizaccedilotildees que partilham interesses

como a missatildeo requisitos de seguranccedila poliacuteticas entre outros e decidem partilhar parte

das suas infraestruturas eou serviccedilos Nuvens comunitaacuterias podem ser administradas

pelas proacuteprias organizaccedilotildees ou por um terceiro Um exemplo interessante de nuvem

comunitaacuteria seria uma nuvem do governo federal que possa suprir necessidades de

vaacuterios ministeacuterios poupando esses oacutergatildeos de cada um ter que gerenciar e manter a sua

proacutepria nuvem

22 Modelo arquitetural da Computaccedilatildeo em Nuvem

Na Computaccedilatildeo em Nuvem tudo eacute um serviccedilo representado em inglecircs como

Everything as a Service ndash XaaS onde X pode ser software plataformas infraestruturas

etc (Rimal et al 2009) Conceitualmente as plataformas de Computaccedilatildeo em Nuvem

proveem suas funcionalidades como serviccedilos categorizadas como IaaS ndash Infrastructure

as a Service (estrutura como um serviccedilo) PaaS ndash Platform as a Service (plataforma

como um serviccedilo) e SaaS ndash Software as a Service (software como um serviccedilo) Assim

serviccedilos baseados em uso de infraestrutura plataforma e serviccedilo respectivamente satildeo

oferecidos aos usuaacuterios como mostra a Figura 2 Cada uma dessas categorias de

serviccedilos eacute detalhada a seguir

Figura 2 Camadas do modelo arquitetural da computaccedilatildeo em nuvem (Fonte

wwwibmcom)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 77

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 1 Modelos de organizaccedilatildeo em nuvens

Nuvem puacuteblica Em termos simples serviccedilos de nuvem puacuteblica satildeo caracterizados pela

sua disponibilidade para clientes por um provedor de serviccedilos atraveacutes da Internet O fato

de uma nuvem ser puacuteblica natildeo significa que os dados do usuaacuterio estejam publicamente

visiacuteveis os fornecedores de serviccedilos tipicamente proveem mecanismos de controle de

acesso aos seus usuaacuterios No caso das nuvens puacuteblicas estas satildeo tipicamente exploradas

utilizando-se um modelo do tipo pagamento por uso onde os fornecedores de

infraestrutura oferecem garantias no formato de SLAs (Service-Level Agreements)

(Keller e Ludwig 2003 Buyya et al 2008 Bose et al 2011) personalizados que

precisam ser claros concisos e possuir suporte baseado em penalidades caso natildeo sejam

cumpridos Nesse acordo entre provedores de serviccedilos e clientes devido agrave natureza

dinacircmica dos ambientes de Computaccedilatildeo em Nuvem atributos de QoS como

disponibilidade tempo de resposta etc precisam ser continuamente monitorados aleacutem

de outros vaacuterios fatores (eg confiabilidade) tambeacutem precisarem ser considerados (Patel

et al 2009)

Nuvem privada Geralmente o termo eacute utilizado para referir-se aos centros de dados

(datacenters) internos de uma empresa ou outro tipo de organizaccedilatildeo que natildeo estatildeo

disponiacuteveis publicamente (Armbrust et al 2009) oferecendo muitos dos benefiacutecios de

um ambiente de Computaccedilatildeo em Nuvem puacuteblica como a elasticidade e o modelo

baseado em serviccedilos A diferenccedila entre uma nuvem puacuteblica e uma nuvem privada eacute que

em um ambiente de serviccedilos baseados em nuvem privada dados e processos satildeo

gerenciados internamente a uma organizaccedilatildeo sem restriccedilotildees de banda de rede exposiccedilatildeo

agrave seguranccedila e requisitos legais que o uso de serviccedilos de nuvem puacuteblica pode requerer

Aleacutem disso serviccedilos de nuvem privada oferecem ao provedor e ao usuaacuterio um maior

controle da infraestrutura de nuvem

Nuvem hiacutebrida Uma nuvem hiacutebrida toma forma quando uma nuvem privada eacute

suplementada com caracteriacutesticas presentes em nuvens puacuteblicas (eg a disponibilidade

de serviccedilos via Internet de maneira puacuteblica) prevendo assim uma utilizaccedilatildeo mista e

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 76

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

integrada desses dois modelos de nuvem Em nuvens hiacutebridas por exemplo

informaccedilotildees de negoacutecio que sejam natildeo criacuteticas e operaccedilotildees de processamento podem ser

mantidas em niacutevel de nuvem puacuteblica enquanto serviccedilos e dados de negoacutecio que sejam

considerados criacuteticos podem ser mantidos sob o controle dos usuaacuterios no escopo de

nuvem privada Aleacutem disso como o paradigma de Computaccedilatildeo em Nuvem emprega um

modelo de computaccedilatildeo sob demanda serviccedilos de nuvens puacuteblicas podem ser utilizados

como alternativa a sistemas locais de contexto privado quando a demanda

computacional superar a disponibilidade de recursos disponiacuteveis localmente na nuvem

privada da organizaccedilatildeo

Aleacutem desses trecircs modelos supracitados existem ainda as nuvens comunitaacuterias Uma

nuvem comunitaacuteria eacute compartilhada por vaacuterias organizaccedilotildees que partilham interesses

como a missatildeo requisitos de seguranccedila poliacuteticas entre outros e decidem partilhar parte

das suas infraestruturas eou serviccedilos Nuvens comunitaacuterias podem ser administradas

pelas proacuteprias organizaccedilotildees ou por um terceiro Um exemplo interessante de nuvem

comunitaacuteria seria uma nuvem do governo federal que possa suprir necessidades de

vaacuterios ministeacuterios poupando esses oacutergatildeos de cada um ter que gerenciar e manter a sua

proacutepria nuvem

22 Modelo arquitetural da Computaccedilatildeo em Nuvem

Na Computaccedilatildeo em Nuvem tudo eacute um serviccedilo representado em inglecircs como

Everything as a Service ndash XaaS onde X pode ser software plataformas infraestruturas

etc (Rimal et al 2009) Conceitualmente as plataformas de Computaccedilatildeo em Nuvem

proveem suas funcionalidades como serviccedilos categorizadas como IaaS ndash Infrastructure

as a Service (estrutura como um serviccedilo) PaaS ndash Platform as a Service (plataforma

como um serviccedilo) e SaaS ndash Software as a Service (software como um serviccedilo) Assim

serviccedilos baseados em uso de infraestrutura plataforma e serviccedilo respectivamente satildeo

oferecidos aos usuaacuterios como mostra a Figura 2 Cada uma dessas categorias de

serviccedilos eacute detalhada a seguir

Figura 2 Camadas do modelo arquitetural da computaccedilatildeo em nuvem (Fonte

wwwibmcom)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 77

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

integrada desses dois modelos de nuvem Em nuvens hiacutebridas por exemplo

informaccedilotildees de negoacutecio que sejam natildeo criacuteticas e operaccedilotildees de processamento podem ser

mantidas em niacutevel de nuvem puacuteblica enquanto serviccedilos e dados de negoacutecio que sejam

considerados criacuteticos podem ser mantidos sob o controle dos usuaacuterios no escopo de

nuvem privada Aleacutem disso como o paradigma de Computaccedilatildeo em Nuvem emprega um

modelo de computaccedilatildeo sob demanda serviccedilos de nuvens puacuteblicas podem ser utilizados

como alternativa a sistemas locais de contexto privado quando a demanda

computacional superar a disponibilidade de recursos disponiacuteveis localmente na nuvem

privada da organizaccedilatildeo

Aleacutem desses trecircs modelos supracitados existem ainda as nuvens comunitaacuterias Uma

nuvem comunitaacuteria eacute compartilhada por vaacuterias organizaccedilotildees que partilham interesses

como a missatildeo requisitos de seguranccedila poliacuteticas entre outros e decidem partilhar parte

das suas infraestruturas eou serviccedilos Nuvens comunitaacuterias podem ser administradas

pelas proacuteprias organizaccedilotildees ou por um terceiro Um exemplo interessante de nuvem

comunitaacuteria seria uma nuvem do governo federal que possa suprir necessidades de

vaacuterios ministeacuterios poupando esses oacutergatildeos de cada um ter que gerenciar e manter a sua

proacutepria nuvem

22 Modelo arquitetural da Computaccedilatildeo em Nuvem

Na Computaccedilatildeo em Nuvem tudo eacute um serviccedilo representado em inglecircs como

Everything as a Service ndash XaaS onde X pode ser software plataformas infraestruturas

etc (Rimal et al 2009) Conceitualmente as plataformas de Computaccedilatildeo em Nuvem

proveem suas funcionalidades como serviccedilos categorizadas como IaaS ndash Infrastructure

as a Service (estrutura como um serviccedilo) PaaS ndash Platform as a Service (plataforma

como um serviccedilo) e SaaS ndash Software as a Service (software como um serviccedilo) Assim

serviccedilos baseados em uso de infraestrutura plataforma e serviccedilo respectivamente satildeo

oferecidos aos usuaacuterios como mostra a Figura 2 Cada uma dessas categorias de

serviccedilos eacute detalhada a seguir

Figura 2 Camadas do modelo arquitetural da computaccedilatildeo em nuvem (Fonte

wwwibmcom)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 77

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Infrastructure as a Service (IaaS) Essa camada inclui serviccedilos como servidores

sistemas de armazenamento maacutequinas virtuais e outros sistemas que satildeo agrupados e

padronizados a fim de serem disponibilizados pela rede Eacute vaacutelido ressaltar que satildeo os

prestadores de infraestrutura que atraveacutes da virtualizaccedilatildeo oferecem esses serviccedilos por

demanda aos prestadores de serviccedilos (VAQUERO et al 2009) Nesse modelo a nuvem

disponibiliza ao consumidor recursos computacionais e privileacutegios administrativos

sobre eles Dessa forma o usuaacuterio deteacutem o controle dos recursos podendo controlar o

ambiente incluindo instalaccedilatildeo de software e aplicaccedilotildees Amazon Elastic Compute

Cloud (Amazon EC2 - httpawsamazoncomec2) Eucalyptus e OpenStack satildeo bons

exemplos de desse modelo

Platform as a Service (PaaS) Camada que encapsula uma camada de software e

disponibiliza serviccedilos como linguagens de programaccedilatildeo bibliotecas serviccedilos e

ferramentas suportadas pelo provedor Estes serviccedilos por sua vez servem de plataforma

para que serviccedilos de mais alto niacutevel possam ser desenvolvidos de modo que os

consumidores utilizam o ambiente da nuvem como host para suas aplicaccedilotildees onde a

nuvem eacute apresentada como arcabouccedilo de desenvolvimento para as aplicaccedilotildees O PaaS eacute

oferecido na camada de plataforma por prestadores de serviccedilos e os seus usuaacuterios

tambeacutem satildeo prestadores de serviccedilos (nesse caso desenvolvedores) Por exemplo

desenvolvedores podem construir essa plataforma considerando a integraccedilatildeo de um

sistema operacional de ambientes de desenvolvimento ou ainda de softwares de

aplicaccedilatildeo Esse modo os desenvolvedores que usaratildeo serviccedilos PaaS veem os serviccedilos

dessa camada como uma Interface de Programaccedilatildeo de Aplicativos (Application

Programming Interface ndash API) Eles iratildeo interagir com a plataforma atraveacutes da API sem

ter a preocupaccedilatildeo de instalar software localmente gerenciar e escalar os recursos o que

torna o processo de desenvolvimento de aplicaccedilotildees mais raacutepido e simples Entretanto os

usuaacuterios de serviccedilos desta camada natildeo deteacutem controle da infraestrutura sobre a qual os

serviccedilos PaaS estatildeo sendo oferecidos Isso porque a camada de infraestrutura permanece

transparente aos prestadores de serviccedilos que utilizam o PaaS Aleacutem disso as aplicaccedilotildees

desenvolvidas utilizando serviccedilos PaaS satildeo dependentes das plataformas envolvidas

Google App Engine (GAE) e Amazon Web Services (AWS) satildeo exemplos de PaaS

Software as a Service (SaaS) Camada que representa os serviccedilos de mais alto niacutevel de

abstraccedilatildeo disponibilizados em uma nuvem Esses serviccedilos dizem respeito a aplicaccedilotildees

completas que satildeo oferecidas aos usuaacuterios em vez de oferecer recursos computacionais

como nas camadas supracitadas Um SaaS eacute disponibilizado por prestadores de serviccedilos

na camada de aplicaccedilatildeo Ele roda inteiramente na nuvem e pode ser considerada uma

alternativa a rodar um programa em uma maacutequina local No modelo de software como

serviccedilo o consumidor utiliza uma aplicaccedilatildeo mas natildeo tem gerecircncia nem o controle dos

hosts onde a aplicaccedilatildeo eacute disponibilizada isso eacute esses clientes natildeo precisam instalar

firmwares sistemas operacionais etc Dropbox Google Calendar Gmail e

Salesforcecom satildeo exemplos de SaaS

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 78

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

23 Caracteriacutesticas da Computaccedilatildeo em Nuvem

As subseccedilotildees a seguir apresentam as principais caracteriacutesticas inerentes agrave Computaccedilatildeo

em Nuvem elencadas nos trabalhos de Breitman (2010) Zhang et al (2010) e pelo

NIST Algumas dessas caracteriacutesticas advecircm de pesquisas anteriores em virtualizaccedilatildeo

computaccedilatildeo distribuiacuteda computaccedilatildeo utilitaacuteria e mais recentemente serviccedilos Web

(Vouk 2008) entretanto um ponto importante que diferencia a Computaccedilatildeo em Nuvem

desses modelos anteriores de computaccedilatildeo eacute justamente a sua natureza de

direcionamento a serviccedilos (Hu e Klein 2009 Jinnan e Sheng 2010)

231 Virtualizaccedilatildeo de recursos

A virtualizaccedilatildeo pode ser definida como a abstraccedilatildeo de recursos loacutegicos dos seus

recursos fiacutesicos subjacentes a fim de prover agilidade flexibilidade reduccedilatildeo de custos e

aumento do valor de negoacutecio (Rimal et al 2009) mascarando a natureza fiacutesica e as

fronteiras desses recursos de seus usuaacuterios Essa virtualizaccedilatildeo eacute conseguida a partir do

uso de tecnologias jaacute estabelecidas como maacutequinas virtuais virtualizaccedilatildeo de memoacuteria

de armazenamento e de rede desatrelando os serviccedilos de infraestrutura dos recursos

fiacutesicos (hardware rede) Essa abstraccedilatildeo permite maior flexibilidade no modo com que

os recursos satildeo combinados e disponibilizados

Em uma arquitetura baseada em serviccedilos caracteriacutesticas do consumidor do serviccedilo satildeo

abstraiacutedas do provedor do mesmo atraveacutes de interfaces de serviccedilos bem definidas

interfaces essas que ocultam os detalhes de implementaccedilatildeo e possibilitam trocas

automatizadas entre provedores e consumidores de serviccedilos Nesse modelo serviccedilos

ganham um niacutevel a mais de abstraccedilatildeo ou seja passam a ser desenhados para servir a

necessidades especiacuteficas dos consumidores atraveacutes de se ater a detalhes de como a

tecnologia funciona Entretanto sempre devem ser consideradas falhas e paradas natildeo

programadas de maneira que satildeo necessaacuterios mecanismos de toleracircnciaadaptaccedilatildeo a

falhas

232 Independecircncia de localizaccedilatildeo dos recursos

Na Computaccedilatildeo em Nuvem os usuaacuterios utilizando qualquer dispositivo conectado agrave

Internet podem ter acesso aos serviccedilos arquivos informaccedilotildees e programas na nuvem

Assim a nuvem aparenta ser o uacutenico ponto de acesso para todas as necessidades de

computaccedilatildeo dos usuaacuterios

Com o processamento em ambientes de Computaccedilatildeo em Nuvem uma gama de

aplicaccedilotildees que fazem uso intensivo de recursos de infraestrutura (eg processamento

armazenamento) passa a contar com a possibilidade de acesso ubiacutequo atraveacutes de uma

grande variedade de dispositivos (desktops laptops smartphones PDAs etc)

independentemente do dispositivo e da localizaccedilatildeo Como grande parte do

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 79

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

processamento eacute realizada na nuvem esses dispositivos podem ser simples e

desprovidos de grandes recursos computacionais aproximando-se de simples terminais

233 Elasticidade

Talvez esta seja a caracteriacutestica mais inovadora do modelo de Computaccedilatildeo em Nuvem

visto que ela pode propiciar benefiacutecios ausentes nas tecnologias atuais A elasticidade ndash

que por vezes eacute confundida com escalabilidade5 ndash seria a capacidade de adequaccedilatildeo a

variaccedilotildees de demanda ie a capacidade de expansatildeo e retraccedilatildeo voluntaacuteria e controlada

como resposta a um estiacutemulo de maneira que grandes quantidades de recursos podem

ser providos e desprovidos em tempo de execuccedilatildeo dinamicamente de acordo com a

demanda Por exemplo uma loja on-line necessita em dias normais de x unidades de

recursos poreacutem haacute certos periacuteodos do ano nos quais haacute um aumento consideraacutevel das

vendas (eg nas semanas que antecedem as festas de fim de ano) fazendo com que essa

loja virtual precise triplicar a quantidade de recursos por apenas alguns dias Com a

elasticidade dos recursos pode ser provida uma maior quantidade de recursos em caso

de aumento no uso dos mesmos e quando natildeo estiverem mais sendo utilizados serem

desprovidos

Para o usuaacuterio a nuvem aparenta ser infinita e ele pode adquirir tanto poder

computacional quanto ele precise aleacutem de natildeo incorrer em custos desnecessaacuterios com

recursos ociosos ou subutilizados A elasticidade na Computaccedilatildeo em Nuvem natildeo eacute

medida em termos de nuacutemero de servidores por exemplo mas sim em termos da

facilidade com a qual os serviccedilos satildeo fornecidos de maneira a atender agraves demandas dos

consumidores (Cearley 2009)

234 Serviccedilos sob demanda

Um consumidor pode unilateralmente dispor de capacidades de computaccedilatildeo tais como

tempo de servidor armazenamento de dados e utilizaccedilatildeo da rede conforme necessaacuterio

automaticamente sem a necessidade de interaccedilatildeo humana com os prestadores de

serviccedilo Ele deve ser capaz de provisionar os recursos automaticamente e de acordo com

sua necessidade

235 Amplo acesso a rede

Recursos satildeo disponibilizados atraveacutes da rede e acessados por meio de mecanismos-

padratildeo que promovam o uso por diferentes dispositivos com qualquer capacidade de

processamento (por exemplo PC tablet smartphone etc)

5 A escalabilidade eacute a habilidade de satisfazer um requisito de aumento da capacidade de trabalho pela

adiccedilatildeo proporcional da quantidade de recursos Uma arquitetura dita escalaacutevel eacute construiacuteda tipicamente

com base em uma infraestrutura baacutesica passiacutevel de repeticcedilatildeo eou modificaccedilatildeo cujo crescimento pode

ser alcanccedilado simplesmente com a adiccedilatildeo repetida do mesmo conjunto baacutesico Dessa forma

usualmente natildeo haacute a preocupaccedilatildeo com a remoccedilatildeo de recursos nem se os recursos estatildeo sendo

plenamente utilizados visto que os recursos jaacute adquiridos satildeo custo consolidado

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 80

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

236 Agrupamento de recursos

Os recursos de computaccedilatildeo do provedor satildeo agrupados para atender muacuteltiplos

consumidores atraveacutes de um modelo multi-inquilino com diferentes recursos fiacutesicos e

virtuais atribuiacutedos dinamicamente de acordo com a demanda do consumidor Haacute um

senso de independecircncia de localizaccedilatildeo em que o cliente geralmente natildeo tem controle ou

conhecimento sobre a localizaccedilatildeo exata dos recursos disponibilizados mas pode ser

capaz de especificar um local em um niacutevel maior de abstraccedilatildeo (por exemplo estado

paiacutes ou datacenter especiacutefico)

237 Serviccedilo mensurado

Sistemas em nuvem satildeo capazes de automaticamente controlar e otimizar o uso dos

recursos aproveitando uma capacidade de mediccedilatildeo em algum niacutevel de abstraccedilatildeo

apropriado de acordo com o tipo de serviccedilo (por exemplo contas de armazenamento

processamento e largura de banda) A utilizaccedilatildeo dos recursos pode ser monitorada e

controlada de modo transparente tanto para o provedor quanto para o consumidor do

serviccedilo utilizado

238 Modelo de pagamento baseado no consumo

Dentro do paradigma de Computaccedilatildeo em Nuvem os consumidores de serviccedilos e

recursos computacionais necessitam pagar aos provedores apenas quando e pelo que

utilizarem de tais serviccedilos A grande vantagem do modelo eacute permitir a contrataccedilatildeo de

novos recursos na medida em que estes se tornem necessaacuterios e a liberaccedilatildeo (finalizaccedilatildeo

dos contratos) dos mesmos quando desnecessaacuterios fazendo com que natildeo seja preciso se

fazer grandes investimentos em infraestrutura e manutenccedilatildeo e um planejamento para

provisatildeo de recursos em longo prazo havendo assim uma grande reduccedilatildeo em custos de

investimento que satildeo convertidos em custo de operaccedilatildeo

239 Vantagens do paradigma de Computaccedilatildeo em Nuvem

Mediante as caracteriacutesticas enumeradas nas subseccedilotildees anteriores podem-se elencar

algumas vantagens dentre muitas outras da utilizaccedilatildeo da Computaccedilatildeo em Nuvem

Consideraacutevel reduccedilatildeo de custos dado que natildeo haacute a necessidade de investimento

em TI tanto em termos de hardware quanto de software mesmo se

necessaacuterias altas capacidades de processamento e armazenamento podem ser

adquiridas da nuvem aleacutem do fato de que softwares podem ser utilizados

sem estarem instalados no proacuteprio dispositivo computacional Em adiccedilatildeo

tecircm-se as reduccedilotildees de custos com manutenccedilatildeo pessoal espaccedilo fiacutesico e

energia

Independecircncia de sistema operacional e hardware

Facilidade de gerenciamento de acesso aos dados e agraves aplicaccedilotildees uma vez que

estes satildeo centralizados na nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 81

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Facilidade de compartilhamento de dados e trabalhos colaborativos

Maior controle de custos uma vez que os serviccedilos satildeo pagos por utilizaccedilatildeo e

natildeo pela licenccedila dos mesmos o que acaba por tambeacutem facilitar os contratos

Elasticidade visto que os recursos de TI satildeo virtualmente infinitos

Possibilidade de os usuaacuterios concentrarem-se na informaccedilatildeo e na loacutegica de

negoacutecio e natildeo na infraestrutura computacional devido agrave abstraccedilatildeo que eacute

realizada

A Computaccedilatildeo em Nuvem possibilita uma grande democratizaccedilatildeo visto que as

barreiras financeiras para entrada no mercado satildeo menores Assim

praticamente qualquer um com uma ideia conhecimentos teacutecnicos e uma

conexatildeo agrave Internet pode usar a Computaccedilatildeo em Nuvem para montar seu

proacuteprio negoacutecio e competir com grandes empresas visto que natildeo satildeo

necessaacuterios investimentos em infraestrutura proveem-se ferramentas para

desenvolvimento tem-se facilidade para publicaccedilatildeo e distribuiccedilatildeo e as

barreiras geograacuteficas satildeo inexistentes

Do ponto de vista de negoacutecio Breitman (2010) aponta dois direcionadores principais

para adoccedilatildeo de Computaccedilatildeo em Nuvem vaacutelido para a adoccedilatildeo de novas tecnologias de

um modo geral (i) reduccedilatildeo de custos e (ii) aumento de capacidade No modelo de

Computaccedilatildeo em Nuvem a reduccedilatildeo de custos tem um caraacuteter evolucionaacuterio baseado

principalmente no pagamento por uso nos casos de utilizaccedilatildeo de um provedor de nuvem

puacuteblica e na virtualizaccedilatildeo dos recursos no caso de uso da adoccedilatildeo de ambiente de

nuvem privada Jaacute o aumento da capacidade proporcionado por esse tipo de ambiente

principalmente por suas caracteriacutesticas de elasticidade e acesso aos recursos via Internet

tem um caraacuteter mais revolucionaacuterio O uso de ambientes de Computaccedilatildeo em Nuvem

viabiliza o surgimento de novos serviccedilos ou aplicaccedilotildees que se beneficiem dessas

caracteriacutesticas (elasticidade no provimento de recursos) independecircncia de localizaccedilatildeo e

dos dispositivos utilizados para acesso que natildeo ficam limitados a computadores apenas

3 Plataformas de computaccedilatildeo em nuvem

Essa seccedilatildeo apresenta trecircs plataformas de computaccedilatildeo em nuvem Duas delas satildeo

plataformas proprietaacuterias (AWS e GAE) e a terceira plataforma permite a instalaccedilatildeo de

nuvens proacuteprias do cliente ou seja nuvem privada (OpenStack)

31 Amazon Web Services

O Amazon Web Services (AWS) (httpawsamazoncom) serviccedilos de nuvem providos

pela Amazon satildeo utilizados largamente por empresas de vaacuterios tamanhos e domiacutenios e

oferecem poder computacional facilidades de armazenamento e vaacuterias outras

funcionalidades que permitem que empresas implantem aplicaccedilotildees e serviccedilos a um

baixo custo com grande flexibilidade escalabilidade e confiabilidade

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 82

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 3 Paacutegina principal do Amazon Web Services (AWS) ndash

httpawsamazoncompt

311 Principais serviccedilos

Essa subseccedilatildeo apresenta os principais serviccedilos da plataforma Amazon Web Services

(AWS) sendo eles (i) Amazon Elastic Compute Cloud (EC2) Amazon Simple Storage

Service (S3) Amazon Relational Database Service (RDS) Amazon SimpleDB

3111 Amazon Elastic Compute Cloud (EC2)

Um dos principais serviccedilos oferecidos no portfolio AWS eacute o Amazon EC2

(httpawsamazoncomec2) um serviccedilo que oferece capacidade de computaccedilatildeo

redimensionaacutevel (ie elaacutestica) na nuvem Esse serviccedilo apresenta-se como um verdadeiro

ambiente de computaccedilatildeo virtual permitindo aos usuaacuterios atraveacutes de uma interface Web

simples criar usar e gerenciar maacutequinas virtuais com sistemas operacionais Windows e

Linux ou mesmo iniciar tais maacutequinas de acordo com as necessidades das aplicaccedilotildees

Como acontece na Computaccedilatildeo em Nuvem o usuaacuterio paga apenas pelos recursos

consumidos por instacircncia-horas eou transferecircncia de dados (cobrado por gigabyte de

dados transferidos)

No Amazon EC2 tem-se AMIs (Amazon Machine Images) que funcionam como uma

espeacutecie de template e contecircm uma preacute-configuraccedilatildeo de software (eg sistema

operacional e aplicaccedilotildees) a partir das quais se podem criar instacircncias (maacutequinas

virtuais) que satildeo coacutepias executaacuteveis da AMI como ilustra a Figura 4 Essas instacircncias

que podem ser muacuteltiplas e inclusive de diferentes tipos satildeo executadas ateacute que sejam

paradas ou finalizadas pelo usuaacuterio se uma instacircncia porventura falhar pode-se criar

uma nova a partir da AMI selecionada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 83

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 4 Criaccedilatildeo de diferentes instacircncias a partir de uma AMI no Amazon EC2

O SLA (Service Level Agreement)6 do Amazon EC2 disponiacutevel em

httpawsamazoncomec2-sla estabelece que a disponibilidade do serviccedilo eacute de

9995 por ano sendo provido ao cliente um creacutedito de 10 do valor de sua conta caso

essa disponibilidade natildeo seja verificada

3112 Amazon Simple Storage Service (S3)

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados Esse serviccedilo provecirc uma

interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket que eacute um container para objetos armazenados no Amazon S3 o qual pode

ser recuperado de maneira uniacutevoca atraveacutes de uma chave de acesso

O SLA do Amazon EC2 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) eacute de 999 por mecircs sendo provido ao cliente um

creacutedito de 10 do valor de sua conta caso essa disponibilidade seja maior ou igual a

99 poreacutem inferior aos 999 estabelecidos por mecircs ou de 25 caso seja inferior a

99

3113 Amazon Relational Database Service (RDS)

Amazon RDS (httpawsamazoncomrds) eacute um serviccedilo PaaS que implementa um

banco de dados relacional em nuvem aleacutem de possibilitar a configuraccedilatildeo e operaccedilatildeo do

banco O Amazon RDS eacute projetado para desenvolvedores ou empresas que necessitam

de todos os recursos e capacidades de um banco de dados relacional ou que desejam

migrar aplicaccedilotildees existentes e ferramentas que utilizam um banco de dados desse tipo

para a nuvem Assim como o Amazon RDS provecirc acesso agraves capacidades de um banco

6 SLA (Service Level Agreement) eacute uma espeacutecie de contrato firmado entre o provedor de um serviccedilo e o

cliente do mesmo sendo descrito o serviccedilo suas metas papeis e garantias de qualidade de serviccedilo

(Verma 1999)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 84

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

de dados MySQL ou Oracle coacutedigos e aplicaccedilotildees bem como ferramentas utilizadas

para esses tipos de bases de dados podem ser utilizados de maneira simples no Amazon

RDS

3114 Amazon SimpleDB

Amazon SimpleDB (httpawsamazoncomsimpledb) eacute um serviccedilo que como o

proacuteprio nome diz implementa um banco de dados simples no sentido em que oferece

um nuacutemero de funcionalidades menor se comparado a bancos de dados relacionais mas

que entretanto pode ser considerado suficiente para vaacuterias aplicaccedilotildees que empregam

dados e natildeo necessitam manipular relacionamentos entre tais dados como em

aplicaccedilotildees de log

No Amazon SimpleDB utiliza-se o conceito de domiacutenios que corresponde ao conceito

de tabelas existente em bancos de dados relacionais Esse serviccedilo provecirc uma API

simples para se fazer operaccedilotildees de acesso e armazenamento em bancos de dados aleacutem

de indexar dados automaticamente facilitando assim as tarefas relacionadas ao

gerenciamento de dados Entretanto como esse serviccedilo eacute bem limitado em termos de

funccedilotildees para aplicaccedilotildees que dependem de desempenho e de sistemas com bases de

dados relacionais comerciais (aleacutem de tipicamente um administrador de banco de

dados) o Amazon RDS seria a melhor escolha para a implantaccedilatildeo desse tipo de banco

de dados

3115 Amazon Elastic Beanstalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo

que provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute

sem a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e

fornece recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java Python PHP e NET utilizando os

servidores Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes

do Elastic Beanstalk basta efetuar o upload dela em um arquivo empacotado (por

exemplo arquivo War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo

empacotada e dos arquivos de log eacute realizado pelo Amazon S3

312 Ferramentas de apoio ao desenvolvimento

O AWS Toolkit for Eclipse (httpawsamazoncomeclipse) eacute um plug-in open-source

para o IDE Eclipse7que tem por objetivo tornar faacutecil o desenvolvimento implantaccedilatildeo

(deployment) e depuraccedilatildeo de aplicaccedilotildees desenvolvidas na linguagem de programaccedilatildeo

Java utilizando os serviccedilos AWS Esse toolkit inclui o chamado AWS Explorer que

permite ao usuaacuterio interagir com os serviccedilos AWS atraveacutes do IDE e tambeacutem possui

7 Eclipse ndash httpwwweclipseorg

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 85

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

suporte para o AWS Elastic Beanstalk para que o usuaacuterio possa implantar a aplicaccedilatildeo

desenvolvida na nuvem da Amazon

O AWS Toolkit for Visual Studio (httpawsamazoncomvisualstudio) similar ao

Eclipse plug-in eacute uma extensatildeo para o IDE Microsoft Visual Studio que tem por

objetivo tornar faacutecil o desenvolvimento depuraccedilatildeo e implantaccedilatildeo de aplicaccedilotildees

utilizando a plataforma NET e os serviccedilos AWS Esse toolkit tambeacutem inclui o AWS

Explorer e possui suporte para o AWS CloudFormation permitindo a implantaccedilatildeo de

aplicaccedilotildees NET na nuvem da Amazon

313 Implantando uma Aplicaccedilatildeo na Amazon

Para demonstrar a utilizaccedilatildeo de diversos serviccedilos da Amazon realizaremos o processo

de implantaccedilatildeo do gerenciador de conteuacutedos Joomla8 utilizando duas abordagens (i)

realizando o processo de configuraccedilatildeo de maneira manual e (ii) utilizando o serviccedilo

Amazon Elastic BeanStalk Para utilizar os serviccedilos da amazona faz-se necessaacuterio

realizar o cadastramento na plataforma seguindo os passos a serem descritos na

proacutexima seccedilatildeo

3131 Criando uma Conta no AWS

Para criar uma conta para utilizaccedilatildeo dos serviccedilos da Amazon faz-se necessaacuterio possuir

um cartatildeo de creacutedito internacional O sistema de faturamento da Amazon eacute baseado no

pague o quanto consumir poreacutem para seguranccedila da proacutepria empresa o usuaacuterio deveraacute

fornecer o nuacutemero do cartatildeo de creacutedito para fins de faturamento Para iniciar o

cadastramento o usuaacuterio deveraacute a acessar httpawsamazoncompt selecionar a opccedilatildeo

cadastrar-se e informar dados como e-mail nome telefone e endereccedilo aleacutem do cartatildeo

de creacutedito internacional Ao final do processo de cadastramento o usuaacuterio iraacute receber

uma ligaccedilatildeo para que seja informado o coacutedigo de seguranccedila para finalizar o processo de

cadastramento A ativaccedilatildeo da conta pode ocorrer de maneira instantacircnea ou demorar

algumas horas

Apoacutes a ativaccedilatildeo da conta o conjunto de serviccedilos oferecidos pela Amazon torna-se

disponiacutevel para o usuaacuterio Com objetivo de permitir que novos usuaacuterios integrem-se a

sua base e permitir que os mesmos possam utilizar os serviccedilos sem compromisso a

Amazon estabeleceu a faixa free que consiste em cotas para utilizaccedilatildeo de uma seacuterie de

serviccedilos da Amazon sem que sejam realizados cobranccedilas no cartatildeo Cada serviccedilo define

os limites como tambeacutem os preccedilos e teacutecnicas de cobranccedila praticada por cada serviccedilo

Para maiores informaccedilotildees sobre as cotas da faixa gratuita acesse

httpawsamazoncomptfree

Ao acessar o sistema de Amazon o usuaacuterio eacute levado ao painel de controle dos serviccedilos

Amazon onde podemos acessar a configuraccedilatildeo de cada serviccedilo disponiacutevel Na figura 5

observamos o painel de controle com link de acesso para cada um dos serviccedilos

disponibilizados pela plataforma

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 86

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 5 Painel de Controle do AWS

3132 Implantando o Joomla ndash Abordagem Manual

Apesar de fornecer um mecanismo para implantaccedilatildeo automaacutetica de aplicaccedilotildees tal

facilidade possui custo adicional aleacutem de natildeo permitir ao usuaacuterio responsaacutevel pelo

processo de implantaccedilatildeo configurar e gerenciar as maacutequinas virtuaisbanco de dados

utilizados pela aplicaccedilatildeo Nesta seccedilatildeo descreveremos o passo a passo necessaacuterio para

configurar o ambiente para implantaccedilatildeo uma aplicaccedilatildeo PHP com acesso a banco de

dados MySQL do ponto de vista de um gerente de redesadministrador de sistemas Na

seccedilatildeo 3133 descreveremos como o desenvolvedor pode realizar o processo de

implantaccedilatildeo de maneira mais transparente

Amazon EC2 eacute o serviccedilo de computaccedilatildeo da Amazon Como visto na seccedilatildeo 311

podemos criar uma maacutequina virtual do zero ou utilizar uma imagem que consiste de

uma maacutequina com preacute-configuraccedilatildeo de software estabelecida Ao criar uma instacircncia do

EC2 devemos utilizar uma das opccedilotildees de configuraccedilatildeo de hardware(memoacuteria RAM

processador etc) disponibilizadas pela Amazon Para criar a instacircncia que iraacute hospedar

nosso gerenciador de conteuacutedo consultamos o Amazon MarketPlace que eacute um

repositoacuterio de imagens para os mais diversos fins variando de imagens preparadas para

hospedar de aplicaccedilotildees web a servidores de banco de dados e assim por diante As

imagens existem nas mais diferentes configuraccedilotildees sistemas operacionais e preccedilos

Custos associados agrave licenccedila de software natildeo estatildeo incluiacutedos dentro do da faixa gratuita

sendo necessaacuterio portanto atenccedilatildeo na escolha da imagem a ser utilizada Para o nosso

estudo de caso iremos utilizar a imagem fornecida pela proacutepria Amazon que consiste

em uma distribuiccedilatildeo Linux da proacutepria Amazon que vem apenas com os softwares

baacutesicos de uma distribuiccedilatildeo Linux A outro configuraccedilatildeo realizada diz respeito a regiatildeo

de implantaccedilatildeo da instacircncia A regiatildeo eacute localizaccedilatildeo fiacutesica da instacircncia Tal configuraccedilatildeo

iraacute impactar em questotildees como preccedilo disponibilidade latecircncia dentre outras

caracteriacutesticas associadas ao acesso a instacircncia Recentemente a Amazon lanccedilou a regiatildeo

Satildeo Paulo que diminui a latecircncia para instacircncias no Brasil poreacutem a preccedilos maiores

Dependendo da aplicaccedilatildeo ainda natildeo vale a pena utilizar a regiatildeo Satildeo Paulo

Antes de criar efetivamente a instacircncia precisamos criar um par de chaves de acesso

Esse par de chaves permite o acesso remoto a maacutequina para que possamos realizar de

maneira adequada o gerenciamento Para criar um par de chaves devemos acessar o

painel de controle da Amazon e selecionar a opccedilatildeo Amazon EC2 Key Pairs Para

criar uma nova chave basta acionar o botatildeo Create Key Pair Devemos entatildeo informar o

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 87

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

nome do par de chaves ao concluir o processo seraacute gerado um arquivo contendo a chave

puacuteblica O referido arquivo deve ser salvo em lugar seguro e realizado o backup pois

para efeitos de seguranccedila natildeo eacute possiacutevel recuperar o arquivo depois de baixado Uma

vez criado o par de chaves podemos passar a criaccedilatildeo da instacircncia

Para criar a instacircncia devemos selecionar a imagem desejada informar a configuraccedilatildeo

de hardware escolhida e o par de chaves associado agrave maacutequina virtual Na figura 6 vemos

a tela de resumo das configuraccedilotildees escolhidas Ao concluir as configuraccedilotildees devemos

pressionar o botatildeo Launch with 1-Click que o processo de criaccedilatildeo e registro da nossa

maacutequina virtual teraacute iniacutecio

Figura 6 Configuraccedilatildeo de Criaccedilatildeo de uma Instacircncia

Uma vez criada uma instacircncia a mesma estaraacute disponiacutevel dentro do gerenciamento do

EC2 na opccedilatildeo Instances Atraveacutes dessa paacutegina podemos iniciar uma instacircncia reiniciar

parar excluir ou mesmo Aleacutem disso temos acesso ao DNS puacuteblico da instacircncia que

seraacute usado para acesso agrave mesma Por padratildeo eacute criado um usuaacuterio Unix chamado ec2-

user que estaacute associado agrave chave puacuteblica criada esses usuaacuterios variam de acordo com o

tipo de imagem (consequentemente Sistema Operacional) selecionado por isso eacute

importante verificar a documentaccedilatildeo da imagem para verificar as informaccedilotildees

relacionadas ao acesso

Uma vez criada agrave instacircncia precisamos realizar o processo de configuraccedilatildeo interna da

mesma ou seja instalar o servidor web (Apache) interpretador PHP bem como copiar

os arquivos necessaacuterios para instalaccedilatildeo do Joomla Caso o usuaacuterio possua um sistema

operacional em sua maacutequina baseado em Unix podemos utilizar ssh para realizar a

conexatildeo com a instacircncia Caso seja uma maacutequina Windows podemos fazer uso de

ferramentas para conexatildeo ssh tais como Putty Para fins de demonstraccedilatildeo de comandos

iremos utilizar o processo atraveacutes do sistema operacional Linux usando uma maacutequina

com distribuiccedilatildeo Linux Ubuntu 1201 O usuaacuterio deve abrir o terminal e entrar na pasta

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 88

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

onde o arquivo contendo a chave puacuteblica para acesso a instacircncia foi salvo Chaves

puacuteblicas devem ter acesso restrito para fins de seguranccedila No Linux utilizamos o

comando chmod para configurar as permissotildees Na figura 7 temos os comandos

necessaacuterios para conectar e instalar o software necessaacuterio para preparar a instacircncia para

iniciarmos o processo de instalaccedilatildeo do Joomla Na linha 1 atribuimos a permissatildeo 400

para o arquivo da chave puacuteblica na linha 2 realizamos uma conexatildeo ssh com a

instacircncia usando seu DNS puacuteblico e a chave de acesso Nas linhas 3 e 4 realizamos a

instalaccedilatildeo dos pacotes httpd(Servidor Web) e do interpretador do PHP Na linha 5

reiniciamos o servidor web

Figura 7 Conectando e instalando serviccedilos em uma instacircncia

Uma vez instalados o serviccedilos devemos baixar a versatildeo mais recente do Joomla e copiar

para pasta de documentos html do servidor web que nessa configuraccedilatildeo fica na pasta

varwwwhtml Uma vez copiado o arquivo podemos proceder com a instalaccedilatildeo do

Joomla poreacutem faz-se necessaacuterio configurar o serviccedilo de banco de dados do RDS para

armazenar os dados da aplicaccedilatildeo

Como visto anteriormente o RDS eacute um serviccedilo de banco de dados relacional que

permite a criaccedilatildeo de instacircncias com dedicaccedilatildeo exclusiva para banco de dados

relacionais Para o Joomla iremos utilizar uma instacircncia do RDS com o banco de dados

MySQL Para iniciar o processo de configuraccedilatildeo devemos acessar a opccedilatildeo RDS no

painel de controle Acessado o painel de controle antes de criar um banco de dados

precisamos criar um grupo de seguranccedila que iraacute definir as poliacuteticas de acesso ao banco

de dados As permissotildees satildeo feitas de duas formas (i)atraveacutes de faixas de IP onde as

maacutequinas com IP dentro da faixa especificada tem acesso liberado ao banco de dados e

(ii) associando um grupo de seguranccedila do EC2 para que as maacutequinas(instacircncias) do

EC2 tenham acesso ao banco de dados Como nossa aplicaccedilatildeo executa dentro de uma

maacutequina EC2 essa permissatildeo eacute suficiente Caso seja necessaacuterio realizar alguma

operaccedilatildeo de administraccedilatildeo do banco de dados deveremos utilizar a permissatildeo de faixa

de IP para permitir que ferramentas de gerenciamento de banco de dados se conectem

ao nosso servidor

Estabelecido o grupo de seguranccedila iremos agora criar uma instacircncia com banco de

dados MySQL Dentro do gerenciamento do RDS selecione DB Instances-gt Launch

DB Instance seraacute entatildeo aberto um assistente para configuraccedilatildeo do banco de dados

Seratildeo requisitas as informaccedilotildees a respeito do nome do banco de dados tamanho inicial

alocado porta de acesso grupo de seguranccedila e usuaacuterio e senha de acesso ao banco de

dados Na figura 8 temos um fragmento das telas do assistente de criaccedilatildeo do banco de

dados Ao final do processo a instacircncia seraacute criada e a mesma possuiraacute um endereccedilo de

DNS puacuteblico que devemos utilizar no processo de instalaccedilatildeo do Joomla

1 chmod 400 ltchavegtpem

2 ssh ndashi ltchavegtpem ec2-userltdnspublicogt

3 sudo yum httpd

4 sudo yum php php-mysql php-xml

5 sudo apachectl restart

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 89

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 8 Configurando acesso ao Banco de Dados

Para concluir a instalaccedilatildeo do Joomla devemos acessar a maacutequina atraveacutes do endereccedilo

ltdnspublicogtjoomla e no momento de configurar o banco de dados informar o dns do

banco de dados usuaacuterio e senha para que seja criada a base de dados inicial do Joomla

3133 Implantando o Joomla ndash Abordagem Automaacutetica ndash BeanStalk

O Amazon Elastic Beanstalk (httpawsamazoncomelasticbeanstalk) eacute o serviccedilo que

provecirc implantaccedilatildeo e gerenciamento de aplicaccedilotildees na nuvem de forma direta isto eacute sem

a necessidade de outros serviccedilos de infraestrutura jaacute configurados Ele aloca e fornece

recursos computacionais balanceamento de carga e monitoramento de status da

aplicaccedilatildeo Atualmente tem suporte a Java PHP e NET utilizando os servidores

Tomcat Apache e Microsoft IIS 75 Para implantar-se uma aplicaccedilatildeo atraveacutes do Elastic

Beanstalk basta efetuar o upload dela em um arquivo empacotado (por exemplo arquivo

War) ou indicar seu repositoacuterio Git O armazenamento da aplicaccedilatildeo empacotada e dos

arquivos de log eacute realizado pelo Amazon S3

Uma vez que o desenvolvedor possua o arquivo empacotado basta acessar

httpsconsoleawsamazoncomelasticbeanstalk a fim de efetuar a upload de sua

aplicaccedilatildeo Dando inicio ao upload da aplicaccedilatildeo eacute exibido um assistente como nas figuras

9 e 10

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 90

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 9 Upload da aplicaccedilatildeo

Figura 10 Configuraccedilatildeo do Ambiente

Como visto na figura 9 o desenvolvedor informa o ldquoApplicaton Namerdquo e a

ldquoDescriptionrdquo bem como seleciona o ldquoContainer Typerdquo e opccedilatildeo de ldquoUpload your Existing

Applicationrdquo Tomando-se por exemplo uma aplicaccedilatildeo em PHP eacute possiacutevel selecionar o

ldquo32bit Amazon Linux running PHP 53rdquo O passo seguinte eacute configurar o ambiente de

execuccedilatildeo e informar a URL conforme figura 10 Logo apoacutes se define o tipo de instacircncia

que a aplicaccedilatildeo iraacute rodar e a chave de acesso caso se deseje acessar a instacircncia Ao fim do

assistente a instacircncia EC2 eacute carregada tornando-se possiacutevel o acesso agrave aplicaccedilatildeo

implantada

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 91

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

314 Utilizando o Amazon S3

Amazon S3 (httpawsamazoncoms3) eacute um serviccedilo que provecirc uma infraestrutura de

armazenamento para lidar com grandes quantidades de dados na internet Ele fornece

uma interface Web simples que pode ser utilizada para armazenar e recuperar qualquer

quantidade de dados a partir de qualquer lugar da Web No Amazon S3 cada objeto (ie

dados e respectivos metadados) cujo tamanho pode ir de 1B a 5TB eacute armazenado em

um bucket

O bucket eacute um container para os objetos armazenados no Amazon S3 Nele definem-se

regras de acesso para upload ou download dos objetos Existem 03 (trecircs) formas de

gerenciamento dos buckets no S3 via interface web

( httpsconsoleawsamazoncoms3) via cliente desktop S3 (por exemplo

https3browsercom) e via Application Programming Interface (API) Utilizando-se da

API o desenvolvedor pode ter acesso a ele de maneira uniacutevoca atraveacutes de uma chave de

acesso Como exemplo apresenta-se a criaccedilatildeo via web em seguida

Figura 11 Criando um Bucket

Utilizando a interface Web pode-se criar um bucket clicando em ldquoCreate Bucketrdquo Logo

apoacutes seraacute exibido uma caixa de dialogo como na figura 1 Basta informar o ldquoBucket Namerdquo

e clicar em ldquoCreaterdquo Logo apoacutes seraacute exibido um tela como na figura 12

Figura 12 Buckets Painel

Como visto na figura 12 eacute possiacutevel explorar os containers criados na secccedilatildeo ldquoBucketsrdquo

Na secccedilatildeo ldquoObjects and Foldersrdquo gerencia-se diretoacuterios e objetos (arquivos) Na secccedilatildeo

ldquoPropertiesrdquo configura-se permissotildees log e outras propriedades do bucket O bucket

pode ser utilizado como um site estaacutetico essa funcionalidade eacute configurada na aba

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 92

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

ldquoWebsiterdquo Com o bucket criado eacute possiacutevel incluir objetos clicando-se em ldquoUploadrdquo

Isso faz com que seja exibida uma tela como na figura 13

Figura 13 Upload de Objetos

Clicando em ldquoAdd Filesrdquo adicionam-se os arquivos a serem enviados Uma vez que

todos os arquivos estejam selecionados clica-se em ldquoStart Uploadrdquo

Qualquer operaccedilatildeo (armazenamento solicitaccedilotildees e transferecircncia de dados) sobre o

serviccedilo Amazon S3 tem um custo associado Eacute importante que os clientes desses

serviccedilos estejam cientes desses valores por isso a Amazon disponibiliza em

httpawsamazoncompts3pricing uma tabela com tais valores

O SLA do Amazon S3 disponiacutevel em httpawsamazoncoms3-sla estabelece que a

disponibilidade do serviccedilo (uptime) corresponde a 999 por mecircs Caso essa

disponibilidade seja maior ou igual a 99 poreacutem inferior aos 999 ao mecircs o cliente

recebe um creacutedito de 10 do valor de sua conta se ela for inferior aos 99 o creacutedito

passa a ser de 25

32 Google App Engine

O Google App Engine (GAE)9 eacute classificado como Platform-as-a-Service (PaaS) priorizando o

suporte a hospedagem de aplicaccedilotildees web Eacute um serviccedilo fornecido pela Google que permite aos

desenvolvedores criar aplicaccedilotildees que podem rodar na sua infra estrutura A virtualizaccedilatildeo e

elasticidade satildeo praticamente imperceptiacuteveis Isto ocorre porque todo o gerenciamento de

virtualizaccedilatildeo e a elasticidade satildeo feitos de forma automaacutetica de acordo com o nuacutemero de

requisiccedilotildees recebidas por uma aplicaccedilatildeo O GAE utiliza o Jetty servlet container para hospedar

aplicaccedilotildees como um mecanismo de interaccedilatildeo com o servidor web oferecendo suporte a API

Java Servlet na versatildeo 24 Quando o GAE recebe uma solicitaccedilatildeo ele determina qual classe de

servlet deve ser chamada atraveacutes de um arquivo de configuraccedilatildeo XML (webxml) conhecido

como descritor de implantaccedilatildeo

O GAE pode ser descrito por meio de trecircs partes Ambiente de execuccedilatildeo datastore e serviccedilos

escalonaacuteveis

321 Ambiente de Execuccedilatildeo

O ambiente de execuccedilatildeo determina o ciclo de execuccedilatildeo de uma aplicaccedilatildeo implantada no GAE

Assim quando o ambiente de execuccedilatildeo recebe uma requisiccedilatildeo HTTP o primeiro passo eacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 93

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

identificar a aplicaccedilatildeo alvo daquela requisiccedilatildeo atraveacutes do nome de domiacutenio De posse do nome

da aplicaccedilatildeo requisitada o ambiente de execuccedilatildeo seleciona um servidor para atender tal

requisiccedilatildeo com base em dados de uso de CPU memoacuteria etc Depois de selecionar um servidor

a aplicaccedilatildeo alvo eacute iniciada no servidor escolhido e recebe a requisiccedilatildeo HTTP encaminhada

inicialmente Finalmente a aplicaccedilatildeo trata a requisiccedilatildeo retorna uma resposta para o cliente e eacute

finalizada Esta sequencia de passos faz com que uma aplicaccedilatildeo implantada no GAE tenha seu

tempo de existecircncia limitado a duraccedilatildeo de um processamento de requisiccedilatildeo Este curto tempo

de vida de uma aplicaccedilatildeo faz com que natildeo seja possiacutevel manter estado entre requisiccedilotildees o que

permite distribuir o trafico de requisiccedilotildees entre vaacuterios servidores

Como vaacuterias aplicaccedilotildees podem estar executando em um mesmo servidor o ambiente de

execuccedilatildeo utiliza o conceito de sandbox para restringir os recursos utilizados por cada aplicaccedilatildeo

O sandbox restringe a utilizaccedilatildeo dos seguintes recursos

Gravar no sistema de arquivos As aplicaccedilotildees devem utilizar o armazenamento de

dados do GAE para armazenar dados persistentes

Abrir um soquete ou acessar diretamente outro host

Gerar um sub-processo ou linha Uma solicitaccedilatildeo da web a uma aplicaccedilatildeo deve ser

manipulada em um uacutenico processo dentro de no maacuteximo 30 segundos Os processos

que ultrapassarem este tempo satildeo encerrados

Fazer outros tipos de chamadas do sistema

O GAE fornece ambientes de execuccedilatildeo para aplicaccedilotildees escritas em Java 60 e Python 25

322 Datastore

Talvez o recurso mais importante que o GAE oferece eacute seu serviccedilo de armazenamento de

dados Com sua infraestrutura gigantesca ndash a mesma do mecanismo de busca da Google ndash seu

sistema de banco de dados BigTable e seu Google File Systems o GAE proporciona um

armazenamento dimensionaacutevel e robusto com mecanismos de consulta e transaccedilotildees atocircmicas

Esse serviccedilo de persistecircncia utiliza uma arquitetura distribuiacuteda

Os dados podem ser distribuiacutedos nessa estrutura de forma otimizada para isso basta descrever o

relacionamento entre os objetos de dados (entidades) como mostrado na Figura 14 e definir

iacutendices para as consultas O GAE para Java inclui suporte a duas grandes interfaces para bancos

de dados JDO (Objetos de dados Java) e JPA (API persistente Java)

Figura 12 Anotaccedilotildees referentes agrave persistecircncia de dados utilizando o mecanismo JDO

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 94

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

323 Serviccedilos Escalonaacuteveis

A relaccedilatildeo do armazenamento de dados com o ambiente de tempo de execuccedilatildeo eacute o de um

serviccedilo A aplicaccedilatildeo usa uma API para acessar um sistema separado que gerencia todas as suas

necessidades de dimensionamento proacuteprio separadamente do ambiente de execuccedilatildeo O GAE

inclui vaacuterios outros serviccedilos auto escalaacuteveis uacuteteis para aplicaccedilotildees web

3231 Memcache

O serviccedilo de Memcache eacute utilizado para acelerar consultas comuns no armazenamento de

dados Por exemplo se muitas solicitaccedilotildees fizerem a mesma consulta com os mesmos

paracircmetros e natildeo for necessaacuterio exibir imediatamente no site as alteraccedilotildees nos resultados a

aplicaccedilatildeo poderaacute armazenar os resultados em cache no Memcache As solicitaccedilotildees

subsequentes podem consultar o cache de memoacuteria e executar a consulta no armazenamento de

dados apenas se natildeo houver resultados ou se eles tiverem expirado Dados da sessatildeo

preferecircncias do usuaacuterio e quaisquer outras consultas executadas na maioria das paacuteginas de um

site satildeo boas candidatas para o armazenamento em cache Para interagir com o cache usamos

uma implementaccedilatildeo da interface netsfjsr107Cache obtemos entatildeo uma instacircncia do Cache

utilizando um CacheFactory atraveacutes de um meacutetodo estaacutetico no CacheManager como mostrado

na Figura 15

Figura 13 Utilizando a API Memcache para obtenccedilatildeo de uma instacircncia do Cache

3232 URL Fetch

Devido agraves restriccedilotildees do sandbox as aplicaccedilotildees do GAE natildeo podem se comunicar diretamente

com outras aplicaccedilotildees Para que isso seja feito o GAE disponibilizou o serviccedilo de URL Fetch

onde atraveacutes dele sua aplicaccedilatildeo faz uma requisiccedilatildeo ao Google para que ele autorize a abertura

de uma porta na sua aplicaccedilatildeo e assim ela interaja com outra aplicaccedilatildeo web ou web service

como mostrado na Figura 16

Figura 14 Obtendo um serviccedilo web atraveacutes da API URL Fetch

Uma aplicaccedilatildeo pode usar o serviccedilo URL Fetch para emitir solicitaccedilotildees HTTP ou HTTPS e

receber respostas Aleacutem disso o serviccedilo dispotildee de opccedilotildees para personalizar suas requisiccedilotildees

atraveacutes da implementaccedilatildeo de meacutetodos da classe FetchOptions como por exemplo

allowTruncate esta funccedilatildeo permite o truncamento de respostas muito grandes

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 95

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

doNotFollowRedirects eacute chamando quando natildeo se pretende permitir redirecionamento

de requisiccedilotildees

validateCertificate se a requisiccedilatildeo for do tipo HTTPS este meacutetodo permite que seja

validado o certificado SSL da aplicaccedilatildeo requisitada

O serviccedilo URL Fetch usa a infraestrutura de rede do Google para proporcionar eficiecircncia e

escalabilidade

3233 Serviccedilo de E-mail

As aplicaccedilotildees do GAE podem enviar mensagens de e-mail em nome dos administradores da

aplicaccedilatildeo e em nome de usuaacuterios com Contas do Google As aplicaccedilotildees podem receber e-mails

em vaacuterios endereccedilos Elas enviam mensagens usando o serviccedilo de E-mail e recebem mensagens

na forma de solicitaccedilotildees HTTP iniciadas pelo GAE e postadas para a aplicaccedilatildeo

Para enviar uma mensagem de e-mail a aplicaccedilatildeo prepara um objeto MimeMessage e o envia

com o meacutetodo send() na classe Transport A mensagem eacute criada usando um objeto de Sessatildeo

JavaMail A Sessatildeo e o Transporte trabalham em conjunto com o serviccedilo de E-mail do GAE

sem qualquer configuraccedilatildeo adicional como mostrado na Figura 17

Figura 17 Utilizando a API Serviccedilo de E-mail

3234 Mensagens Instantacircneas

Uma aplicaccedilatildeo do GAE pode enviar e receber mensagens instantacircneas para qualquer serviccedilo de

mensagens instantacircneas compatiacutevel com XMPP como o Google Talk Uma aplicaccedilatildeo pode

enviar e receber mensagens de bate-papo enviar convites de bate-papo e solicitar informaccedilotildees

de status Mensagens XMPP de entrada satildeo processadas por manipuladores de solicitaccedilatildeo

semelhantes a solicitaccedilotildees da web

Alguns usos possiacuteveis de mensagens instantacircneas incluem participantes de bate-papo

automatizados (bots de bate-papo) notificaccedilotildees instantacircneas e interfaces de bate-papo para

serviccedilos Um cliente avanccedilado com uma conexatildeo a um servidor XMPP (como o Google Talk)

pode usar XMPP para interagir com uma aplicaccedilatildeo do GAE em tempo real inclusive para

receber mensagens iniciado pela aplicaccedilatildeo Observe que esse tipo de cliente usando o Google

Talk deve usar a senha do usuaacuterio para fazer uma conexatildeo XMPP e natildeo pode usar um cookie

das Contas do Google

Atualmente uma aplicaccedilatildeo natildeo pode participar de bate-papos de grupo Uma aplicaccedilatildeo soacute pode

receber mensagens dos tipos bate-papo e normal Uma aplicaccedilatildeo pode enviar mensagens de

qualquer tipo definido em RFC 3921

Para ativar o serviccedilo XMPP para uma aplicaccedilatildeo Java editamos o arquivo appengine-webxml

como mostrado na Figura 18

Figura 18 Ativando o serviccedilo de Mensagens Instantacircneas

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 96

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3235 Task Queue

Com a API Task Queue aplicaccedilotildees podem desempenhar trabalho fora do escopo de uma

solicitaccedilatildeo web Se uma aplicaccedilatildeo precisar executar algum trabalho em segundo plano pode

usar a API Task Queue para organizar esse trabalho em unidades pequenas e discretas

chamadas Tarefas A aplicaccedilatildeo entatildeo insere essas tarefas em uma ou mais filas O GAE

detecta novas tarefas automaticamente e as executa quando os recursos do sistema permitem

Para enfileirar uma tarefa eacute necessaacuterio obter uma Queue usando o QueueFactory e em

seguida chamar o meacutetodo add() Eacute possiacutevel obter uma fila nomeada especificada no arquivo

queuexml usando o meacutetodo getQueue() da faacutebrica ou obter a fila padratildeo usando o meacutetodo

getDefaultQueue() Eacute possiacutevel chamar o meacutetodo add() de Queue com uma instacircncia

TaskOptions (produzida por TaskOptionsBuilder) como mostrado na Figura 19

Figura 19 Adicionando uma tarefa a uma fila com opccedilotildees

3236 Blobstore

A API do Blobstore permite que sua aplicaccedilatildeo exiba objetos de dados chamados blobs que satildeo

muito maiores que o tamanho permitido para objetos no serviccedilo do Armazenamento de dados

Blobs satildeo criados fazendo upload de um arquivo atraveacutes de uma solicitaccedilatildeo HTTP Em geral

suas aplicaccedilotildees faratildeo isso apresentando um formulaacuterio com um campo de upload de arquivo

para o usuaacuterio Quando o formulaacuterio eacute enviado o Blobstore cria um blob a partir do conteuacutedo

do arquivo e retorna uma referecircncia opaca ao blob chamada de chave blob que vocecirc pode usar

mais tarde para exibir o blob (no caso da Figura 20 a chave do blob estaacute representada pela

variaacutevel blobkey) A aplicaccedilatildeo pode exibir o valor do blob completo em resposta a uma

solicitaccedilatildeo do usuaacuterio ou pode ler o valor diretamente usando uma interface de fluxo contiacutenuo

semelhante a arquivo

Blobs satildeo uacuteteis para exibir arquivos grandes como arquivos de imagem ou viacutedeo e para

permitir que usuaacuterios faccedilam upload de arquivos de dados grandes

Figura 20 Criando um arquivo blob utilizando a API Blobstore

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 97

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3237 Images

O GAE oferece um recurso de manipulaccedilatildeo de dados de imagens atraveacutes de um serviccedilo de

imagens dedicado O serviccedilo de imagens permite redimensionar girar inverter e recortar

imagens Tambeacutem eacute possiacutevel aperfeiccediloar fotografias atraveacutes de um algoritmo predefinido

O serviccedilo Images pode aceitar dados de imagem diretamente da aplicaccedilatildeo ou pode usar um

valor do Blobstore Quando a fonte eacute o Blobstore o tamanho da imagem a ser transformada

pode ser igual ao tamanho maacuteximo de um valor do Blobstore Entretanto a imagem

transformada seraacute retornada diretamente para a aplicaccedilatildeo e por isso natildeo poderaacute ser maior que

1 megabyte Isso pode ser uacutetil para criar imagens de miniatura de fotos enviadas para o

Blobstore por usuaacuterios

Para transformar uma imagem do Blobstore eacute preciso criar um objeto Image chamando o

meacutetodo estaacutetico ImageServiceFactorymakeImageFromBlob() passando a ele um valor

blobstoreBlobKey como mostrado na Figura 21 O resto da API funciona normalmente O

meacutetodo applyTransform() retorna o resultado das transformaccedilotildees ou lanccedila um

ImageServiceFailureException se o resultado for maior do que o tamanho maacuteximo de 1 MB

Figura 21 Transformando uma imagem com a API Images

3238 User Service

As aplicaccedilotildees do GAE podem autenticar usuaacuterios atraveacutes de um destes trecircs meacutetodos Contas do

Google contas em seus proacuteprios domiacutenios do Google Apps ou identificadores OpenID Uma

aplicaccedilatildeo pode detectar se o usuaacuterio atual fez login e pode redirecionaacute-lo para a paacutegina de login

adequada para que ele possa fazer login ou se a aplicaccedilatildeo usar autenticaccedilatildeo das Contas do

Google criar uma nova conta Enquanto um usuaacuterio estiver conectado a aplicaccedilatildeo pode acessar

o endereccedilo de e-mail do usuaacuterio (ou o identificador OpenID se sua aplicaccedilatildeo estiver usando

OpenID) A aplicaccedilatildeo tambeacutem pode detectar se o usuaacuterio atual eacute um administrador facilitando

a implementaccedilatildeo de aacutereas da aplicaccedilatildeo restritas a administradores

Uma vez que identificadores OpenID satildeo fornecidos por um grande nuacutemero de websites e

serviccedilos populares incluindo o Google oferecer suporte a OpenID eacute uma excelente maneira de

integrar sua aplicaccedilatildeo ao Google App Marketplace e tornaacute-lo amplamente acessiacutevel para

usuaacuterios

Eacute possiacutevel testar se o usuaacuterio estaacute conectado e obter seu endereccedilo de e-mail ou identificador do

OpenID usando a API servlet padratildeo com o meacutetodo getUserPrincipal() do objeto da

solicitaccedilatildeo Eacute possiacutevel usar a API de serviccedilo do Usuaacuterio para gerar URLs de login e logoff

A API de serviccedilo do Usuaacuterio pode retornar as informaccedilotildees atuais do usuaacuterio como um objeto

User Os objetos do usuaacuterio podem ser armazenados na forma de valor de propriedade no

armazenamento de dados

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 98

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Eacute possiacutevel verificar se o usuaacuterio fez login com uma Conta do Google No entanto caso o

usuaacuterio natildeo esteja logado ele seraacute redirecionado para a tela de login das Contas do Google O

meacutetodo userServicecreateLoginURL() como mostrado na Figura 22 retornaraacute a URL da tela

de login

O recurso de login eacute capaz de redirecionar o usuaacuterio de volta para a aplicaccedilatildeo pela URL atraveacutes

do meacutetodo createLoginURL() que nesse caso eacute a URL da paacutegina atual

Figura 22 Utilizando a API User Service para se autenticar como usuaacuterio Google

324 Implantaccedilatildeo

Para fazer a implantaccedilatildeo no GAE eacute necessaacuterio que a aplicaccedilatildeo tenha um registro de ID

fornecido quando se cria uma aplicaccedilatildeo usando o Console de administraccedilatildeo do GAE Depois de

registrado o ID este eacute enviado para o GAE usando o plug-in do Eclipse ou uma ferramenta de

linha de comando do SDK

33 OpenStack

O OpenStack eacute uma coleccedilatildeo de projeto de software coacutedigo aberto (opensouce ) licenciado sob a

Licenccedila Apache na sua versatildeo 20 (License Apache version 20) e fornecido ao puacuteblico pela

OpenStackTM Compute Qualquer organizaccedilatildeo pode utilizar a nuvem OpenStack tanto para

nuvem computaccedilatildeo quanto para armazenamento desde que respeite a licenccedila estabelecida

O OpenStack surgiu de um projeto de desenvolvimento colaborativo entre a NASA (National

Aeronautics and Space Administration) que contribuiu com a parte do projeto Cloud Files e a

Rackspace Hosting grande provedor de hospedagem e de serviccedilos de nuvem o qual contribuiu

com a plataforma Nebula O objetivo era ter no final uma plataforma de nuvem de coacutedigo

aberto que pudesse permitir ao adquirente a possibilidade de implantar nuvens privadas eou

puacuteblicas em sua organizaccedilatildeo de forma simples e escalaacutevel A comunidade de colaboradores do

projeto OpenStack cresce a cada dia e incorpora empresas de renome como ATampT Canonical

Cisco Citrix Dell HP IBM Intel Nebula Rackspace Red Hat Inc entre outrasAtualmente

participam da comunidade de tecnoacutelogos desenvolvedores e pesquisadores do OpenStack cerca

de 6024 pessoas em 87 paiacuteses

Em julho de 2010 a Rackspace e a NASA anunciaram a criaccedilatildeo do projeto OpenStack Em

outubro do mesmo ano a primeira versatildeo do OpenStack foi disponibilizada com o nome de

Austin A Tabela 1 mostra a versatildeo e a data de disponibilizaccedilatildeo do OpenStack

Tabela 1 ndash OpenStack - Versatildeo e data de disponibilizaccedilatildeo

Nome da versatildeo Data da disponibilizaccedilatildeo

Austin 21 de outubro de 2010

Bexar 3 de fevereiro de 2011

Cactus 15 de abril de 2011

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 99

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Diablo 22 de setembro de 2011

Essex 5 de abril de 2012

Folson 27 de setembro de 2012

331 Visatildeo geral do OpenStack

A Figura 23 apresenta uma visatildeo geral do Openstack No OpenStack o administrador da nuvem

interage com a plataforma partir de uma interface web de gerenciamento Openstack

Dashboard de modo que atraveacutes de chamadas de API ele acessa os serviccedilos de processamento

(Compute) de armazenamendo de objetos e imagens (Storage) conectados e disponibilizados

atraveacutes do serviccedilo de Networking

Figura 23 ndash Visatildeo geral de uma aplicaccedilatildeo no OpenStack

Fonte httpswwwopenstackorgsoftware

332 ndash Principais serviccedilos

Os principais serviccedilos do OpenStack satildeo (i) Computaccedilatildeo (ii) Dashboard (iii) Identidade (iv)

Serviccedilo de imagem (v) Rede e (vi) Object Storage

Computaccedilatildeo (Nova Compute) fornece servidores virtuais sob demanda Eacute um controlador

estrutural de computaccedilatildeo que gerencia todas as atividades necessaacuterias para suportar o ciclo de

vida de instacircncias dentro da nuvem OpenStack Recebem os pedidos de gerenciamento pelo

AMQP e as operaccedilotildees correspondentes satildeo executadas atraveacutes de algoritmos de escalonamento

Empresas como o Mercado livre e a NASA utilizam este componente internamente e outras

empresas como a HP e a Rackspace fornecem serviccedilos comerciais de computaccedilatildeo construiacutedas

usando Nova E sua Api nativa propotildee compatibilidade com os encontrados na EC2 da Amazon

e a Api S3

Dashboard (Horizon) provecirc para o usuaacuterio uma interface web para todos os serviccedilos

OpenStack Com esta interface web o usuaacuterio pode realizar a maioria das operaccedilotildees em sua

nuvem como o lanccedilamento de uma instacircncia a atribuiccedilatildeo de endereccedilos IP e definir controles

de acesso ou seja eacute um front-end web para os outros serviccedilos OpenStack

Identidade (Keystone) fornece uma poliacutetica de acesso autenticaccedilatildeo e autorizaccedilatildeo para todos

os serviccedilos OpenStack Ele tambeacutem oferece um cataacutelogo de serviccedilos dentro de uma nuvem

OpenStack

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 100

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Imagem (Glance) concede um cataacutelogo e um repositoacuterio de imagens de disco virtual Estas

imagens de disco satildeo mais comumente usados em OpenStack Compute

Objeto Store (Swift) prover o armazenamento de objetos permitindo o usuaacuterio armazenar ou

recuperar arquivos mas natildeo eacute permitido montar diretoacuterios como em servidor de arquivos

Algumas empresas como Rackspace e Internap se baseiam no swift para fornecer serviccedilo de

armazenamento comercial e outras empresas o utilizam internamente para armazenar seus

dados

333 Virtualizaccedilatildeo

O controlador de computaccedilatildeo virtual nova suporta vaacuterias tecnologias de virtualizaccedilatildeo como por

exemplo KVM Xen VMWare LXC entre outros O controle dessas ferramentas de

virtualizaccedilatildeo eacute realizada a partir da biblioteca libvirt que eacute uma API de coacutedigo aberto Linux

para gerenciar os servidores virtualizados

334 Ambiente de implantaccedilatildeo da plataforma de nuvem OpenStack

Antes de comeccedilar a instalar e configurar a nuvem eacute necessaacuterio conhecer e escolher a

arquitetura de instalaccedilatildeo desejada A cloud Openstack pode-se dividir em quatro tipos de

Nodes

a) Noacute de processamento responsaacutevel por armazenar e hospedar as VMacutes

b) Noacute de Controle Responsaacutevel por gerenciar e direcionar as chamadas de APIacutes aos

serviccedilos corretos

c) Noacute de Rede Responsaacutevel por gerencias os IPacutes da nuvem e criar vlans

d) Noacute de armazenamento Responsaacutevel por armazenar objetos e imagens do Glance

Pode-se ainda planejar uma instalaccedilatildeo a partir das abordagens Single-host ou Multi-host

a) Single-Host Todos os Noacutes anteriormente citados (com exceccedilatildeo do Noacute de

armazenamento) satildeo simulados em uma uacutenica maquina fiacutesica

b) Multi-Host Uma maquina eacute responsaacutevel por ser Noacute de controle e Rede e as demais

ligadas a elas satildeo maquinas de processamento e outras maquinas podem prover o

serviccedilo de armazenamento Esta eacute uma arquitetura mais distribuiacuteda e eacute a que utilizamos

neste minicurso

Outra escolha que deve ser realizada eacute se o ambiente seraacute virtualizado ou natildeo No ambiente

fiacutesico eacute necessaacuterio ter duas interfaces de rede A primeira interface faz a comunicaccedilatildeo com a

rede privada e a segunda interface fica responsaacutevel pela comunicaccedilatildeo com a rede puacuteblica O

Sistema Operacional instalado tem acesso direto ao hardware e o OpenStack eacute implantado neste

SO Jaacute o ambiente virtualizado pode ser divido em duas categorias A primeira seria o

ambiente Nativo onde o OpenStack eacute implantado em cima de um gerenciador de maacutequinas

virtuais (hypervisor) A segunda seria o ambiente hibrido onde o OpenStack ficaria na terceira

camada (SO Hospedeiro ferramenta de virtualizaccedilatildeo (VirtualBox VMWare outros) e

OpenStack) Nestas abordagens eacute necessaacuterio criar interfaces virtuais sendo que na primeira

duas interfaces (uma para a rede privada e a outra para a rede puacuteblica) e na segunda abordagem

seria interessante criar trecircs interfaces (uma realizando NAT com a maacutequina hospedeira uma

para a rede privada e a uacuteltima para a rede puacuteblica)

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 101

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

3341 Instalaccedilatildeo

A implantaccedilatildeo da plataforma de nuvem OpenStack pode ser iniciada com a configuraccedilatildeo da

rede definindo a interface de comunicaccedilatildeo com a rede puacuteblica e a interface de comunicaccedilatildeo

com a rede privada Em seguida inicia-se a instalaccedilatildeo dos softwares baacutesicos necessaacuterios As

etapas seguintes seratildeo para o ambiente single host ou seja todos os serviccedilos seratildeo executados

em um uacutenico servidor Desse modo seraacute necessaacuterio a instalar um SGBD (Sistema de

Gerenciamento de Banco de Dados) pacotes de suporte ao python como python-dateutil

python-mysqldb python-memcache cliente de acesso VNC moacutedulo que usa a api EC2 como

interface com os serviccedilos OpenStack softwares de serviccedilos a virtualizaccedilatildeo volume e outros

Em seguida inicia-se a instalaccedilatildeo dos serviccedilos do OpenStack como nova-api nova-objectstore

nova-scheduler nova-network nova-compute glance glance-api glance-client glance-

common glance-registry python-glance keystone python-keystone python-keystoneclient

openstack-dashboard As tabelas a seguir apontam os pacotes que precisam ser instalados e

configurados para o bom funcionamento da plataforma de nuvem OpenStack e explicam a sua

funccedilatildeo nesta A Tabela 2 mostra os pacotes baacutesicos necessaacuterios a Tabela 3 apresenta os

pacotes do serviccedilo nova a Tabela 4 exibe os pacotes do serviccedilo glance e por fim a Tabela 5

exposiccedilatildeo dos pacotes do serviccedilo keystone

Tabela 2 - Pacotes baacutesicos

Pacote Funccedilatildeo

mysql (server client) Persistir dados do Openstack

novnc Cliente VNC usado no Dashboard

memcachedpyton-memcached

python-dateutil python-mysqldb

Pacotes para suporte ao Pyton O

Openstack foi escrito em Pyton

qemu Emulador usado caso natildeo tenha um

hypervisor instalado

euca2ools Modulo que usa a api EC2 como

interface com os serviccedilos

Openstack

libvirt-bin tgt apache2

libapache2-mod-wsgi ntp

Softwares de suporte a serviccedilos

gerais

open-iscsi open-iscsi-utils Auxiliam na criaccedilatildeo de volumes

Tabela 3 - Pacotes do serviccedilo nova

Pacote Funccedilatildeo

nova-api Interface de interaccedilatildeo com a

nuvem

nova-scheduler Escalonador de mensagens

nova-objectstore Prover Compatibilidade com api

S3(img)

nova-network Responsaacutevel por controlar a

rede

nova-compute Gerenciar ciclo de vida das

instancias

nova-consoleauth nova-console Necessaacuterio para configurar VNC

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 102

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

(noVNC)

nova-volume Gerenciar os volumes

nova-common python-nova e

python-novaclient

Necessaacuterio para instalaccedilatildeo dos

demais scripts

Tabela 4 - Pacotes do serviccedilo glance

Pacote Funccedilatildeo

Glance Gerencia imagens

glance-api api de interaccedilatildeo com o glance

glance-common glance-registry

e python-glance

Pacotes de suporte ao serviccedilo

glance

Tabela 5 - Pacotes do serviccedilo keystone

Pacote Funccedilatildeo

keystone Autenticaccedilatildeo e poliacuteticas de

acesso

python-keystone python-

keystoneclient

Pacotes de configuraccedilatildeo com o

Python

3342 Exemplo de configuraccedilatildeo de arquivo do OpenStack

O exemplo de configuraccedilatildeo abaixo consiste no arquivo novaconf no Ubuntu que se encontra

localizado no etcnovanovaconf As informaccedilotildees a ser adicionadas este arquivo satildeo endereccedilo

IP do servidor de computaccedilatildeo endereccedilo IP do S3 tipo de virtualizaccedilatildeo endereccedilo IP do servidor

mysql configuraccedilotildees de rede(interna e externa) e endereccedilo IP do servidor de imagem (glance)

--verbose

--daemonize

--dhcpbridge_flagfile=etcnovanovaconf

--dhcpbridge=usrbinnova-dhcpbridge

--force_dhcp_release

--logdir=varlognova

--state_path=varlibnova

--lock_path=varlocknova

--libvirt_type=qemu

--libvirt_use_virtio_for_bridges

--connection_type=libvirt

--sql_connection=mysqlnovaopenstacklocalhostnova

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 103

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

--s3_host= localhost

--rabbit_host=localhost

--ec2_host=localhost

--ec2_dmz_host=localhost

--fixed_range=1921681024

--network_size=256

--num_networks=1

--public_interface=eth1

--image_service=novaimageglanceGlanceImageService

--glance_api_servers=localhost9292

--auto_assign_floating_ip

--iscsi_helper=tgtadm

--root_helper=sudo nova-rootwrap

3343 Iniciando uma instacircncia atraveacutes do dashboard

Satildeo necessaacuterios alguns passos para se iniciar uma instancia de uma maacutequina virtual no

OpenStack sendo esses passos

a) Acessar a interface de gerenciamento Uma vez instalado o Openstack e

devidamente configurado a nuvem jaacute estaacute pronta para entrar em produccedilatildeo Para isso

veremos os passos necessaacuterios para instanciar uma Maquina Virtual Ubuntu 1004 LTS

atraveacutes do dashboard Horizon O acesso ao Horizon se daacute por padratildeo atraveacutes da porta

HTTP padratildeo (80) utilizando um browser (http[IP_SERVIDOR]) Apoacutes acessar esse

endereccedilo a tela da Figura 24 eacute apresentada

Figura 24 Tela de login do Openstack DashBoard

b) Criando chave de permissatildeo Em seguida antes de instanciar a VM eacute preciso

criar uma chave de permissatildeo a KeyPair Para isso basta acessar o menu keypair Seraacute

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 104

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

feito o download de um arquivo criptografado de usando na criaccedilatildeo da instancia

conforme Figura 25

Figura 25 Criando chave de permissatildeo

c) Iniciando uma instacircncia Uma vez que o Keypair foi criado deve-se selecionar

o meu Images selecionar a imagem do Sistema Operacional que a VM deveraacute ter e

clicar em Launch passando a chave de acesso conforme a Figura 26

Figura 26 Instanciando VM

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 105

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

d) Acessando a instancia via SSH Jaacute com a Instacircncia iniciada eacute necessaacuterio

verificar se o estado ldquoRodandordquo (Running) conforme a figura X basta olhar qual IP estaacute

associado a ela (Conforme Figura 27) e acessaacute-la passando o keypair usando na sua

criaccedilatildeo via SSH atraveacutes de qualquer software que de suporte a isso conforme a Figura

28

Figura 27 Instacircncia ativa na nuvem

Figura 28 Acessando a instancia via SSH

e) Configurando acesso public O Openstack daacute ao usuaacuterio a possibilidade de

niacuteveis de acesso da nuvem atraveacutes de IPacutes puacuteblicos e privados Ao iniciar uma instancia

eacute atribuiacutedo a ela um IP privado Para que a instancia possa ser visiacutevel eacute necessaacuterio

associaacute-la a um IP publico Para isso deve-se acessar o Menu Access amp Security e na

opccedilatildeo Floating IPacutes escolher qual instancia teraacute seu IP privado associado a um externo e

selecionar Allocate IP seguido de Associate IP conforme a as figuras 29 e 30 Feito isto

temos uma instacircncia Openstack em produccedilatildeo em uma Nuvem

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 106

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Figura 29 ndash Alocando IP externo

Figura 30 ndash Associando IP externo agrave Instancia

4 Conclusatildeo

A adoccedilatildeo da computaccedilatildeo em nuvem permite que o usuaacuterio natildeo se preocupe com o SO e

hardware utilizados aleacutem de permitir que o usuaacuterio acesse os dados e recursos

computacionais independente de sua localizaccedilatildeo Mais do que isso permite ainda a

diminuiccedilatildeo de custos uma vez que possibilita o uso de grandes servidores de terceiros

de modo que o cliente natildeo precisa adquirir tais servidores nem contratar teacutecnicos

qualificados para manter os mesmos Outra caracteriacutestica que permitir a diminuiccedilatildeo de

custos eacute a natildeo exigecircncia de que o cliente adquira licenccedila integral de software

Esse minicurso apresentou os conceitos baacutesicos da computaccedilatildeo em nuvem e ainda

detalhes de uso de trecircs diferentes plataformas que provecircem essa tecnologia sendo elas

Amazon Web Services (AWS) Google App Engine (GAE) e OpenStack

Referecircncias

Armbrust Michael Fox Armando Griffith Rean Joseph Anthony D Katz Randy

H et al (2009) Above the clouds A Berkley view of Cloud Computing ndash Technical

report Reliable Adaptive Distributed Systems Laboratory University of California at

Berkley USA

Bose Sumit Pasala Anjaneyulu Ramanujam Dheepak Murthy Sridhar

Malaiyandisamy Ganesan (2011) SLA management in Cloud Computing A service

providerrsquos perspective In Buyya Rajkumar Broberg James Goscinski Andrzej

(eds) Cloud Computing Principles and paradigms New Jersey USA John Wiley amp

Sons pp413ndash436

Breitman Karin (2010) Computaccedilatildeo em Nuvem In Meira Jr Wagner Carvalho

Andreacute Carlos Ponce de Leon Ferreira de (org) Atualizaccedilotildees em Informaacutetica 2010

Rio de Janeiro Brasil Editora da Pontifiacutecia Universidade Catoacutelica do Rio de Janeiro

Porto Alegre Rio Grande do Sul Brasil Sociedade Brasileira de Computaccedilatildeo

pp11ndash50

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 107

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Buyya Rajkumar Yeo Chee Sin Venugopal Srikumar (2008) Market-oriented Cloud

Computing Vision hype and reality for delivering IT services as computing utilities

In HPCC 2008 ndash 10th IEEE International Conference on High Performance

Computing and Communications 2008 Dalian China Proceedings ofhellip

Washington DC USA IEEE Computer Society pp5ndash13

Cearley David W (2009) The Cloud Computing scenario ndash Technical report Gartner

Group

Cearley David W et al (2009) Hype cycle for application development ndash Technical

report Gartner Group

Galaacuten F et al (2009) ldquoService specification in cloud environments based on extensions

to open standardsrdquo Proc of the Fourth Int ICST Conf on Communication System

Software and Middleware (COMSWARE 2009) New York NY USA ACM

Hu Ji Klein Andreas (2009) A benchmark of transparent data encryption for migration

of Web applications in the clouds In DASC 2009 ndash Eighth IEEE International

Conference on Dependable Autonomic and Security Computing 2009 Chengdu

China Proceedings ofhellip Washington DC USA IEEE Computer Society pp735ndash

740

Jinnan Yang Sheng Wu (2010) Studies on application of Cloud Computing techniques

in GIS In IITA-GRS 2010 ndash 2nd IITA International Conference on Geoscience and

Remote Sensing 2010 Qingdao China Proceeding ofhellip [sl] IEEE pp44ndash51

Keller Alexander Ludwig Heiko (2003) The WSLA Framework Specifying and

monitoring service level agreements for Web Services Journal of Networks and

Systems Management 11(1) pp57ndash81

libvirt Disponiacutevel em lthttplibvirtorggt Acesso 27 out 2012

Mell P and Grace T (2011) The NIST definition of Cloud Computing

httpcsrcnistgovpublicationsnistpubs800-145SP800-145pdf

OpenStack (2012) OpenStack Guide httpwwwopenstackorg

Patel Pankesh Ranabahu Ajith Sheth Amit (2009) Service-Level Agreement in Cloud

Computing In OOPSLA 2009 ndash 24th Annual ACM SIGPLAN Conference on

Object-Oriented Programming Systems Languages and Applications 2009

Orlando USA

Rackspace Disponiacutevel em lthttpwwwrackspacecomgt Acesso 27 out 2012

Rimal Bhaskar Prasad Choi Eumni Lumb Ian (2009) A taxonomy and survey of

Cloud Computing systems In NCM 2009 ndash 5th International Joint Conference on

INC IMS and IDC 2009 Seoul Korea Proceedings ofhellip Washington DC USA

IEEE Computer Society pp44ndash51

Rittinghouse John W Randsome James F (2010) Cloud Computing Implementation

management and security USA CRC Press

Sosinsky Barrie (2011) Cloud Computing Bible Indianapolis USA Wiley Publishing

Inc

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 108

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Vaquero Luis M Rodero-Merino Luis Caceres Juan Lindnet Maik (2009) A break

in the clouds Towards a cloud definition ACM SIGCOMM Computer

Communication Review 39(1) pp50ndash55

Verma Dinesh (1999) Supporting Service Level Agreements on IP networks [sl sn]

Macmillan Technical Publishing

Vouk Mladen A (2008) Cloud Computing Issues research and implementations

Journal of Computing and Information Technology 16(4) pp235ndash246

Wang Lizhe Von Laszewski Gregor Kunze Marcel Tao Jie (2010) Cloud

Computing A perspective study New Generation Computing 28(2) pp137ndash146

Zhang Qi Cheng Li Boutaba Raouf (2010) Cloud Computing State-of-the-art and

research challenges Journal of Internet Services and Applications 1(1) pp7ndash18of

computing In Advances in Computer Science pages 555ndash566 Publishing Press

Bios

Frederico Lopes eacute mestre em Sistemas e Computaccedilatildeo e doutor em Ciecircncia da

Computaccedilatildeo pela UFRN tendo realizado parte de seu doutorado no ISTUTL (Lisboa

Portugal) Eacute professor adjunto da Universidade Federal do Rio Grande do Norte

(UFRN) Atualmente Fred eacute gerente do AltoStratus projeto que envolve pesquisadores

da UFRN UFRJ UFPE UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e com o

objetivo de propor especificar implementar implantar e avaliar teacutecnicas e mecanismos

de middleware para ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem

experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos

atuando principalmente com os seguintes temas computaccedilatildeo ubiacutequa middleware

sistemas sensiacuteveis ao contexto e computaccedilatildeo em nuvem Link para Curriculum Lattes

httplattescnpqbr9177823996895375

Andreacute Almeida eacute professor do Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do

Rio Grande do Norte Eacute aluno de doutorado do PPGSC onde desenvolve sua tese que

tem como tema Adaptaccedilatildeo Dinacircmica de Aplicaccedilotildees Baseadas em Nuvem Andreacute

participa do AltoStratus projeto que envolve pesquisadores da UFRN UFRJ UFPE

UNICAMP PUC-Rio UFRGS UFABC e UNIFOR e tem como objetivo de propor

especificar implementar implantar e avaliar teacutecnicas e mecanismos de middleware para

ambiente de nuvens computacionais hiacutebridas e heterogecircneas Tem experiecircncia na aacuterea

de Ciecircncia da Computaccedilatildeo com ecircnfase em Sistemas Distribuiacutedos atuando

principalmente com os seguintes temas middleware e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr1800962258138555

Thais Vasconcelos Batista possui mestrado em Informaacutetica (1994) doutorado em

Informaacutetica (2000) ambos pela PUC-Rio e poacutes-doutorado realizado na Lancaster

University ndash UK (2005) Atualmente eacute professora associada do Departamento de

Informaacutetica e Matemaacutetica Aplicada (DIMAp) da Universidade Federal do Rio Grande

do Norte (UFRN) e bolsista de produtividade niacutevel 2 do CNPq Suas pesquisas na aacuterea

de Sistemas Distribuiacutedos e Engenharia de Software envolvem middleware computaccedilatildeo

ubiacutequa computaccedilatildeo em nuvem desenvolvimento orientado a aspectos arquitetura de

software entre outros Atualmente coordena o projeto AltoStratus para

desenvolvimento de infra-estrutura de aplicaccedilotildees em nuvem financiado pela Rede

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 109

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012

Nacional de Pesquisa (RNP) Esse projeto conta com o apoio da Amazon para uso no

projeto da infraestrutura de nuvem EC2 Link para Curriculum Lattes

httplattescnpqbr5521922960404236

Everton Ranielly de Sousa Cavalcante eacute aluno de Doutorado em Ciecircncia da

Computaccedilatildeo na UFRN ndash Universidade Federal do Rio Grande do Norte possui

Mestrado em Sistemas e Computaccedilatildeo (2012) e Bacharelado em Ciecircncia da Computaccedilatildeo

(2010) ambos pela UFRN e eacute Teacutecnico em Desenvolvimento de Sistemas para Internet

(2008) pelo IFRN ndash Instituto Federal de Educaccedilatildeo Ciecircncia e Tecnologia do Rio Grande

do Norte Possui experiecircncia na aacuterea de Ciecircncia da Computaccedilatildeo com ecircnfases em

sistemas distribuiacutedos Engenharia de Software desenvolvimento Web linguagens de

programaccedilatildeo e algoritmos experimentais atuando principalmente nos seguintes temas

middleware Computaccedilatildeo em Nuvem Computaccedilatildeo Ubiacutequa linguagens de descriccedilatildeo

arquitetural e linhas de produto de software Link para Curriculum Lattes

httplattescnpqbr5065548216266121

Renato Gondim Renato Gondim Sarmento concluinte do curso de Ciecircncia da

Computaccedilatildeo na UFRNndash Universidade Federal do Rio Grande do Norte foi bolsista da

Gerecircncia de Redes do Departamento de Informaacutetica e Matemaacutetica Aplicada UFRN e

atualmente faz parte do grupo de residecircncia em software na Superintendecircncia de

Informaacutetica ndash SInfo Possui experiecircncia em sistemas distribuiacutedos engenharia de

software e linguagens de programaccedilatildeo Atualmente trabalhando com computaccedilatildeo em

nuvem e teste de software Link para Curriculum Lattes

httplattescnpqbr0362105301851454

Thomas Diniz eacute graduando do curso de Ciecircncia da Computaccedilatildeo pela Universidade

Estadual do Rio Grande do Norte (2008) e graduando do curso de Ciecircncias e Tecnologia

da Universidade Federal do Rio Grande do Norte (2009) Eacute monitor da disciplina

Informaacutetica Fundamental do Projeto Monitoria na ECampT o plano integrado dos trecircs

primeiros semestres do curso Ciecircncias e Tecnologia da UFRN Link para Curriculum

Lattes httplattescnpqbr3931868566871340

Arthur Cassio eacute aluno especial do programa de Poacutes-Graduaccedilatildeo em Sistemas e

Computaccedilatildeo da Universidade Federal do Rio Grande do Norte UFRN Graduou-se em

Tecnologia em Desenvolvimento de Software pelo Instituto Federal de Educaccedilatildeo

Ciecircncia e Tecnologia do Rio Grande do Norte IFRN Possui experiecircncia nas aacutereas de

sistemas web arquitetura orientada a serviccedilos e computaccedilatildeo em nuvem Link para

Curriculum Lattes httplattescnpqbr0936695072170254

Thiago Cesar eacute aluno no curso Engenharia de Software pela Universidade Federal do

Rio Grande do Norte Possui experiecircncia na aacuterea da Computaccedilatildeo com ecircnfases em

programaccedilatildeo distribuiacuteda modelagem de software desenvolvimento Web atuando

principalmente no seguinte tema Computaccedilatildeo em Nuvem Link para Curriculum Lattes

httplattescnpqbr3981406236417839

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012 110

Anais dos Tutoriais da V Escola POtiguar de Computaccedilatildeo e suas Aplicaccedilotildees

V EPOCA - NatalRN Brasil - de 05 a 09 de Novembro de 2012