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