0
UNIVERSIDADE SÃO FRANCISCO
Engenharia de Computação
CARLOS EDUARDO XAVIER DUARTE
DESENVOLVIMENTO DE APLICAÇÃO PARA
CONFIGURAÇÃO DE SERVIÇOS CLOUD COMPUTING
BASEADO EM VIRTUALIZAÇÃO.
Itatiba
1
2011
CARLOS EDUARDO XAVIER DUARTE – RA: 002200600352
DESENVOLVIMENTO DE APLICAÇÃO PARA
CONFIGURAÇÃO DE SERVIÇOS CLOUD COMPUTING
BASEADO EM VIRTUALIZAÇÃO.
Monografia apresentada ao curso de
Engenharia de Computação da Universidade
São Francisco, como requisito parcial para a
obtenção do título de Bacharel em Engenharia
de Computação.
Orientador: Prof. Fábio Andrijauskas
Itatiba
2011
2
Carlos Eduardo Xavier Duarte
Desenvolvimento de aplicação para configuração de serviços Cloud
Computing baseado em virtualização.
Orientador: Prof. Fábio Andrijauskas
65 páginas
Palavras-chave: Virtualização, Nuvem, GNU/Linux
3
A família de um homem é sua base, seu conforto e sua fortaleza.
4
AGRADECIMENTOS
Aproveito para registrar aqui o quanto prezo o amor materializado em gentilezas,
agradecendo.
Primeiramente meus pais, Carlos Antonio e Maria Imaculada, pela educação e pelas
oportunidades.
Ao Prof. Fábio Andrijauskas, que desde o inicio compreendeu minha ideia.
Principalmente, agradeço pela torrente inesgotável de ideias, pelo rigor científico, pela
conduta acadêmica, pela curiosidade científica e pelo exemplo inesquecível de professor,
pesquisador e orientador.
Ao Prof. Dr Marcos Henrique Degani , mais que um professor, um amigo que
compartilhou comigo seus conhecimentos ao longo de minha vida acadêmica, sem isso tudo
seria mais difícil.
A Ana Cláudia, minha esposa, pelo incentivo no ingresso desta longa jornada, pela
colaboração em meus estudos, pelas sugestões e críticas a este trabalho. A ela e aos meus
filhos, Murillo Henrique e Maria Eduarda, agradeço por toda a compreensão de minhas
ausências.
E finalmente a Deus, nosso Pai, e a Jesus, nosso mestre, pela oportunidade do trabalho,
pela vitalidade, habilidade, tempo e ferramentas a mim concedidas para dizer o já dito sob um
novo prisma e experimentar o doce sabor do acréscimo.
5
RESUMO
Este trabalho visa elucidar os conceitos de cloud computing e virtualização, explorando
os tipos, provedores de nuvem e softwares de virtualização, além de abordar exemplos de
serviços e empresas que fazem seu uso, o objetivo é desenvolver uma aplicação para
configurar servidores e desktops no processo de cloud computing, utilizando a virtualização,
tendo como foco a facilidade de configuração e administração, com todos os softwares e
pacotes necessários.
A linguagem utilizada foi o Python em conjunto com a framework Django, as
bibliotecas que fizeram parte deste trabalho foram a Libvirt e o Boto, para administração do
banco de dados foi utilizado o MySql, todas as ferramentas são open source.
Palavras chave: cloud computing, softwares, bibliotecas, Django e administração.
6
ABSTRACT
This work aims to elucidate the concepts of cloud computing and virtualization
exploring types, cloud providers and software virtualization and also covers services and
examples of companies that make their use, the purpose is developing an application to
configure servers and desktops in the process of cloud computing, using virtualization,
focusing on the facility of setup and administration, with all required software and packages.
The language used was in conjunction with the Python Django framework, the libraries
that were part of these works were libvirt and the boto, for administration of the database was
used MySql. All tools are open source.
Key words: cloud computing, softwares, libraries and administration.
7
LISTA DE ILUSTRAÇÕES
FIGURA 1 – Crescimento do uso da TI.................................................................................. 13
FIGURA 2 – DATACENTERS alocado nas empresas....................... ................................... 15
FIGURA 3 – Desafios e oportunidades para os desenvolvedores: Integração de todas as
“nuvens” de forma simples e segura........................................................................................ 16
FIGURA 4 – Cloud Computing............................................................................................... 17
FIGURA 5 – Mainframes IBM serie Z .................................................................................. 19
FIGURA 6 – Mainframes na década de 60, seus recursos eram virtualizados através do
software VM CMS.html........................................................................................................... 19
FIGURA 7 – SaaS, Software as a Service............................................................................... 21
FIGURA 8 – Serviços oferecidos por empresas que exploram o conceito PaaS......................22
FIGURA 9 – Amazon Aws fonece soluções IaaS................................................................... 23
FIGURA 10 – A Amazon AWS oferece o serviço chamado SimpleDB, no qual é possível
armazenar suas informações na forma de banco de dados...................................................... 24
FIGURA 11 – A Amazon Aws oferece um serviço chamado Amazon S3, no qual é possível
armazenar informações na forma de backup............................................................................ 24
FIGURA 12 – Nuvem pública + Nuvem privada = Nuvem Hibrida....................................... 25
FIGURA 13 - infraestrutura eucalyptus................................................................................... 27
FIGURA 14 – Amazon AWS.................................................................................................... 28
FIGURA 15 – Google App Engine.......................................................................................... 28
FIGURA 16 – Nuvem da IBM.................................................................................................. 29
FIGURA 17 – Ambiente virtualizado...................................................................................... 30
FIGURA 18 – Esquema de virtualizado utilizando o QEMU................................................. 33
FIGURA 19 – Ambiente implementando com a virtualização completa.................................33
FIGURA 20 – Ambiente paravirtualizado................................................................................34
FIGURA 21 – virtualização em nível de sistema operacional..................................................35
FIGURA 22 – Hypervisors de virtualização Xen.....................................................................37
FIGURA 23 – Esquema do bytecode escrito em python..........................................................38
FIGURA 24 – Arquitetura utilizando API Boto adaptado de...................................................41
FIGURA 25 – Arquitetura utilizando a API Libvirt adaptado de:............................................41
FIGURA 26 – LCP – Linux Cloud Platform............................................................................42
FIGURA 27 – Framework Django............................................................................................44
8
FIGURA 28 – LCP Tela Inicial................................................................................................48
FIGURA 29 – Botão para Adicionar Máquinas Virtuais.........................................................49
FIGURA 30 – Criação de máquinas virtuais(imagem esquerda), console em produção de vm
(imagem direita) em um ambiente privado...............................................................................51
FIGURA 31 – Funções para o usuário interagir com a máquina virtual..................................52
FIGURA 32 – Criação de novas chaves de conexão................................................................53
FIGURA 33 – Cria chave tccii-usf.pem no ambiente Amazon AWS........................................54
FIGURA 34 – Imagens de Vms no ambiente Amazon AWS...................................................54
FIGURA 35 – Iniciando vm no ambiente Amazon Aws..........................................................55
FIGURA 36 – Configuração da Vm criada no ambiente da Amazon EC2..............................55
FIGURA 37 – Vm criadas no ambiente Amazon AWS...........................................................56
FIGURA 38 – Conexão feita em uma máquina virtual............................................................57
FIGURA 39 – Comparação(ambiente privado): Shell, LCP, Virt-manager.............................59
FIGURA 40 – Comparação entre ferramentas(ambiente público)..........................................59
9
LISTA DE ABREVIATURAS E SIGLAS
TI – Tecnologia da informação
VM – Virtual Machine
EC2 – Elastic Cloud 2
SAAS – Software as a Service
PAAS- Platform as a Service
DAAS – Data Base as a Service
BAAS- Backup as a Service
AWS – Amazon Web Service
SO – Operation System
10
SUMÁRIO
1.
INTRODUÇÃO .............................................................................................................. 13
1.1. OBJETIVO ...................................................................................................................... 16
2
DESENVOLVIMENTO................................................................................................. 17
2.1 FUNDAMENTAÇÃO TEÓRICA ................................................................................... 17
2.1.1 Cloud Computing .......................................................................................................... 17
2.1.2 História ........................................................................................................................... 19
2.1.5 PaaS - Platform as a Service - Plataforma como serviço ........................................... 21
2.1.6 IaaS - Infrastructure as a Service - Infraestrutura como serviço ............................. 22
2.1.7 DaaS - Database as a Service - Banco de dados como serviço ................................... 23
2.1.8 BaaS - Backup as a Service - Backup como serviço ................................................... 24
2.1.9 Nuvem pública, privada ou híbrida. ............................................................................ 25
2.1.10 Software para Cloud Computing ............................................................................... 26
Tecnologias ...................................................................................................................... 26
2.1.11 Provedores e Serviços .................................................................................................. 27
Amazon AWS: ................................................................................................................ 27
Google: ............................................................................................................................. 28
IBM: ................................................................................................................................. 29
2.2 VIRTUALIZAÇÃO .......................................................................................................... 30
2.2.1 Conceitos ........................................................................................................................ 30
2.2.2 História ........................................................................................................................... 31
2.3 TIPOS DE VIRTUALIZAÇÃO ...................................................................................... 32
2.3.1 Emuladores .................................................................................................................... 32
2.3.2 Virtualização Completa ................................................................................................ 33
2.3.3 Paravirtualização ........................................................................................................... 34
2.3.4 Virtualização ao sistema operacional .......................................................................... 34
2.3.5 Software de Virtualização (Hypervisor) ...................................................................... 35
3 METODOLOGIA................................................................................................................ 37
3.1 RESULTADOS ................................................................................................................. 42
4 LCP – LINUX CLOUD PLATFORM ............................................................................... 42
4.1 Funcionalidades do LCP: ................................................................................................. 42
4.2 Ambiente de desenvolvimento ......................................................................................... 43
11
4.3 Aplicações Django ............................................................................................................. 45
4.4 Interface WEB .................................................................................................................. 48
5 TESTES REALIZADOS..................................................................................................... 57
5.1 Introdução ......................................................................................................................... 57
5.2 Ambiente de Testes ........................................................................................................... 58
5.3 Testes ................................................................................................................................. 58
6
CONCLUSÃO................................................................................................................. 60
7
TRABALHOS FUTUROS ............................................................................................. 61
8 REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................. 62
13
1. INTRODUÇÃO
Na medida em que as atividades das empresas e da sociedade em geral passam a
depender em escala crescente dos sistemas de informação, as questões de seu desempenho e
continuidade se tornam sinônimos de sobrevivência das organizações. O autor Cezar Taurion
(2009), faz analises de vários provedores brasileiros e estrangeiros e constata que o Universo
On-line(UOL) por exemplo, recentemente incorporou seu data center com novos servidores
blades(servidores com design modular e otimizado para minimizar o uso de espaço físico e
energia), redundância de energia e segurança para suprir a demanda de hospedagem, acessos
e outros serviços. A última consulta realizada no site¹ mostra que o data center UOL foi
construído sob os mais modernos conceitos tecnológicos e estruturais, incluindo os
parâmetros de Green Computing(refere-se a TI ecologicamente sustentável) para garantir o
menor consumo de energia e a redução na emissão de resíduos. A figura 1 mostra este
crescimento em vários segmentos segundo Gartner no período de 2010 a 2011.
Crescimento do uso de TI
60
50
em %
40
30
20
10
0
Saúde
Bancos
Governo Nac/Inter
Governos Locais
Transporte
Comércio
Crescimento
Figura 1 - Crescimento do uso da TI.
Fonte: http://www.gartner.com/technology/br/about.jsp
Segundo Dr. Manoel Veras (2009), o avanço acontece também nas empresas cujo foco
principal não é o sistema de informação, mas precisam dessa tecnologia. Essa evolução
também se reflete no aumento contínuo dos dispêndios com a infraestrutura e operações de
TI, colocando para os administradores sérios desafios de eficiência e eficácia na alocação dos
recursos.
¹Seu projeto atende com excelência a todas as demandas do mercado e as rígidas normas de segurança, disponibilidade, densidade e
conectividade. Disponível em :<http://www.uolhost.com.br/data-center/data-center-uol.html>.Acesso em 16 de junho de 2011
14
Em um ambiente de rápida evolução tecnológica, esse desafio é ampliado, de um lado,
pelos riscos de obsolência e, por outro, da ameaça de perda de competitividade se os
investimentos não acertarem a qualidade e o tempo adequado.
Se não bastassem essas dificuldades o contínuo aumento da dimensão e da
complexidade das infraestruturas de redes, bem como da necessidade de convivência com
grandes sistemas legados (sistemas computacionais que fornecem serviços essenciais de
gerenciamento de informações), impõe requisitos de interoperabilidade e escalabilidade
importantes.
O cloud computing, ou computação nas “nuvens” em tradução livre, é uma tecnologia
que promete ajudar os administradores de TI, na infraestrutura de redes, sistemas legados e
distribuídos, grandes organizações e o usuário final. Em contra partida é uma tecnologia
recente, citada em 2006, em uma palestra de Eric Schimidt do Google, descrevendo como sua
empresa gerenciava seus próprios data centers. Alguns meses depois é que o termo cloud
tornou-se mais popular, quando a Amazon anunciou sua oferta de EC2(Elastic Computing
Cloud) Taurion (2009, p.10).
Taurion - 2009 enfatiza que cloud não é apenas um avanço tecnológico, mas uma
mudança de paradigma em como fornecemos e utilizamos recursos computacionais dos data
centers. Hoje provisionamos e utilizamos servidores, no modelo baseado em nuvem, o
servidor é uma central de dados completa, ou seja, nele podemos concentrar diversos serviços
administrativos que são essenciais em uma infraestrutura de TI. Cloud computing implica uma
mudança significativa na maneira como vendemos e consumimos produtos e serviços de
tecnologia da informação.
Em contrapartida, as decisões de quando adotar o modelo baseado em nuvem demanda
uma análise dos benefícios versus riscos e os efeitos da tecnologia na empresa que pretende
fazer seu uso. A decisão tem relação direta com o grau de maturidade da tecnologia
disponível no mercado, da organização e cultura da empresa.
Segundo Cezar Taurion (2009), se por um lado as decisões para adoção dos modelos
demandam tempo, por outro as empresas podem tirar vantagem do Cloud Computing.
Analisando o modelo baseado em nuvem, a entrega de recursos de TI se assemelha ao modo
como era a energia elétrica no princípio do século passado. As indústrias tinham que construir
e manter suas fontes geradoras de energia, que não eram seu negócio. Hoje a maioria mantém
seu próprio data centers (um exemplo pode ser visto na figura 2), mesmo que não seja seu
campo de expertise.
15
Figura 2 - DATACENTERS alocado nas empresas.
Fonte: http://www.stwbrasil.com.br/datacenter-pt.php
Segundo Veras (2009), “muitos data centers são ineficientes”., o modelo de
computação em nuvem pode, potencialmente, mitigar essa ineficiência, permitindo que
recursos como servidores e storage sejam entregues e usados como serviços, assim como a
energia elétrica.
Outro fator de relevância das empresas é a cultura: migrar suas informações para as
nuvens nem sempre é visto de forma positiva, acessar outras plataformas para interagir com
seus dados em outro ambiente na maioria das vezes, é contra a cultura da empresa. Cada
provedor de cloud computing possui suas interfaces, gerenciamentos próprios. Os desafios
encontrados pelos administradores de TI e desenvolvedores de aplicações para infraestrutura é
tão grande quanto as oportunidades de negócios.
Para Taurion (2009, p.24) “é preciso que uma aplicação para nuvens tenha foco na
automação, precisam ser federadas e integradas a diversos provedores e serviços de forma
simples e com segurança”. A figura 3 mostra esses novos desafios encontrados pelos
administradores, integração das nuvens com os provedores e também com a infraestrutura de
uma empresa.
16
Figura 3 - Desafios e oportunidades para os desenvolvedores: Integração de todas as “nuvens” de forma simples
e segura.
Fonte: adaptado de http://olhardigital.uol.com.br/produtos/central_de_videos
1.1. OBJETIVO
Desenvolver uma aplicação para configurar servidores e desktops com os serviços de
cloud computing, utilizando a virtualização, focando a facilidade de configuração e
administração, como objetivo final, implementar uma ferramenta para criação, monitoramento
e gerencia de máquinas virtuais em um ambiente público e privado.
17
2 DESENVOLVIMENTO
Uma tecnologia que aos poucos vem sendo adotado pelas empresas é a computação em
nuvem, sua forma simples de operação faz com que vários serviços e produtos sejam
oferecidos.
2.1 FUNDAMENTAÇÃO TEÓRICA
2.1.1 Cloud Computing
“Cloud computing é o conceito simples de transferir para a nuvem os mesmos dados,
serviços e aplicativos que atualmente estão parados nos computadores ou servidores de TI.
Contudo, essa nuvem não está no céu, trata-se de uma rede de servidores em todo o mundo,
cada um deles detendo fragmentos de informações, os quais se juntam apenas quando se entra
no sistema”(Sosinsky, 2011, p.55).
Segundo Cezar Taurion (2009) é uma maneira bastante eficiente de maximizar e
flexibilizar os recursos computacionais. Além disso, uma nuvem computacional é um
ambiente redundante (capacidade de um sistema superar falhas computacionais com a adição
de componentes espelhos) e resiliente por natureza,
que pode ser definido como a
capacidade de um sistema de informação continuar a funcionar corretamente, apesar do mau
funcionamento de um ou mais dos seus componentes, a figura 4 mostra dispositivos,
aplicações, banco de dados e servidores sendo movidos para nuvem no sentido de armazenar
suas informações em data centers espalhados pelo mundo.
Fonte: http://www.winky.net/what-is-the-cloud
Figura 4: Cloud Computing
18
Em uma infraestrutura de TI a redundância dos equipamentos, a capacidade de
planejamento, a consolidação de servidores, manutenção, disponibilidade, elasticidade,
provisionamento, desperdício e custo são fatores estudados em seu projeto de implementação.
O cloud computing é uma tecnologia que veio para ajudar os administradores de TI a
solucionar este problema.
Em uma implementação convencional todos esses fatores consomem tempo para
conclusão do projeto. Com a tecnologia podemos por exemplo locar servidores virtuais que
rodam na infraestrutura de terceiros e agregarmos a rede da empresa.
Quando contratamos este serviço alguns fatores não são preocupações da empresa pois
o provedor é responsável pela infraestrutura e possui recursos para solução de problemas tais
como redundância de energia, manutenção, etc.
Por se tratar de uma tecnologia recente, o assunto é muito relevante e existem várias
definições a seu respeito porém todas definem que “cloud computing” é um modelo
conveniente de fornecimento sob demanda de acesso via rede a um conjunto configurável de
recursos computacionais(tais como redes, servidores, armazenamento, aplicativos e serviços),
que podem ser rapidamente provisionados e descartados com mínimo esforço ou de interação
com o provedor de serviços.(National Institute of Standards and Technology – NIST)”(Guia
de TI – 2011).
“Na verdade, o conceito de computação em nuvem vem se aprimorando ao longo do
tempo, mas essencialmente refere-se à mesma ideia básica: processar aplicações e armazenar
os dados fora do ambiente corporativo. As instituições financeiras, como bancos, utilizam
esses conceitos há tempos para armazenar e processar informações de seus clientes” (Taurion,
2009, p.2).
Quando pensamos em cloud computing, a virtualização de servidores é uma ferramenta
muito usada para fazer sua implementação, principalmente na infraestrutura de redes no
ambiente de TI.
Esta tecnologia é o elemento chave dessa nova forma de computação. O objetivo é que
as máquinas virtuais possam rodar em qualquer parte da nuvem, buscando a otimização do
ambiente em relação ao uso dos recursos: contudo ela vem sendo resgatada pois sua origem
foi na década de 60, nos mainframes da IBM.
Com a virtualização podemos consolidar milhares de servidores em poucas dezenas de
máquinas virtuais. Um exemplo é o da IBM, com seu projeto de consolidação dos seus quase
4.000 servidores usados nas aplicações internas em pouco mais de 20 mainframes, rodando
basicamente Linux (Taurion, 2009, p.84), A figura 5 mostra um Mainframe da IBM serie Z
19
Fonte: http://www-03.ibm.com/systems/z/
Figura 5: Mainframes IBM serie Z
Computação em nuvens ainda tem muito a amadurecer, os provedores precisam o
oferecer segurança e disponibilidade. Em contra partida, pode ser vista como o estágio mais
evoluído do conceito da virtualização, a virtualização do próprio data center.
2.1.2 História
O conceito de cloud pode se arremeter a algum tempo passado, Barrie Sosinsky (2011)
define que, o termo cloud computing surgiu em 2006, porém na década de 60 quando os
mainframes eram utilizados com frequência pela IBM essa tecnologia era notada e assim
surgiu a virtualização.
Na utilização dos mainframes a virtualização era empregada para criar diversas
máquinas virtuais utilizando dessa maneira todo o recurso oferecido por eles.
Este processo pode ser considerado uma forma de cloud computing, Segundo Manoel Veras
(2009). Na figura 6 operadores trabalham em um mainframes nos anos 60.
Figura 6 - Mainframes na década de 60, seus recursos eram virtualizados através do software VM CMS.html
Fonte: http://www.gruppen.com.br/virtualizacao/virtualizacao_servidores
20
Hoje o conceito já é comum em algumas empresas mais famosas da Internet como o
Google, Amazon e o Yahoo, que mantêm parques computacionais com centenas de milhares
de máquinas, completa o autor, citado acima.
De acordo com Taurion (2009, p.154), estima-se que, o Google tenha cerca de uma
dúzia de data centers espalhados pelo mundo e que sua infraestrutura, chamada de gooplex,
compreenda mais de 200 petabytes de disco em cerca de 500.000 servidores, que conseguem
processar mais de 100 milhões de queries por dia.
A tecnologia oferece diversas formas de comunicação que utilizam a rede, dessa forma existe
uma taxonomia especifica para classificar cada tipo.
2.1.3 Tipos de CLOUD COMPUTING
Os tipos variam muito para cada aplicação, sendo necessária a compreensão de cada um
deles, pois cada uma apresenta características diferentes que levam a usos e diversas
implementações.
2.1.4 SaaS - Software as a Service - Software como serviço
“SaaS é um modelo que entrega software como serviço, de forma diferente do modelo
tradicional, no qual a empresa adquire uma licença de uso e instala o software nos seus
próprios servidores, em saas a aplicação está prevista para o cliente através de uma interface
(um navegador, geralmente)”(Sosinsky, 2011, p.10).
SaaS, refere-se à troca de um modelo baseado em venda de licenças, por um modelo
baseado no uso do software como serviço, em um ambiente operacional completo, com
aplicações, gerenciamento e interface para o usuário.
Transformando a maneira como o software é comercializado, também não são mais
necessários os contratos de manutenção, pois estas atividades ficam a cargo do provedor e não
mais da empresa. O usuário passa apenas a usar software, sem se preocupar com as atividades
de instalação, manutenção e upgrades. As aplicações são acessíveis a partir de diversos
dispositivos, ate mesmo através de uma interface como um navegador web, por exemplo.
A mudança para a computação em nuvem é interessante por vários fatores, iniciando
pela simplicidade de acesso (tudo que você precisa é de um navegador), a facilidade de gestão
(um usuário com pouca experiência é capaz de operar um modelo baseado em saas), o
investimento é reduzido (solução empresarial acessível implantado na forma de: pague aquilo
21
que você usa). Esse conceito é aplicado para hardware e software de sistemas fornecidos
pelos prestadores de cloud computing, completa Sosinsky.
Além disso, a computação em nuvem oferece muitas vantagens para aos provedores de
acesso, como a infraestrutura facilmente gerenciada, possível por conta de o data center ter
hardware e software de sistemas homogêneos. A figura 7 mostra um exemplo de uma
tecnologia de nuvem saas, vários serviços que normalmente rodam e armazenam informações
da forma convencional são transferidos para a nuvem saas.
Figura 7: SaaS, Software as a Service
Fonte:http://blog.redehost.com.br/dicas/saas-em-cloud-server-redehost.html
2.1.5 PaaS - Platform as a Service - Plataforma como serviço
O modelo PaaS se propõe a criar uma plataforma para o desenvolvimento de aplicações
já voltadas para o cloud computing, diz Sosinsky (2011). A sua definição é “uma plataforma
para criar e operar aplicações incluindo ferramentas de desenvolvimento, administração e
gerenciamento além dos serviços runtime, tudo na modalidade paas” completa o autor. Em
contrapartida o modelo pass é uma camada de tecnologia incipiente, explica Sosinsky, suas
ofertas ainda representam restrições significativas, tal como a linguagem de programação para
a aplicação gerada que só funciona na nuvem do provedor de serviço paas.
A plataforma como serviço, refere-se ao uso de ferramentas de desenvolvimento de
softwares gratuitas, oferecidas por provedores de serviços, onde os desenvolvedores criam
aplicações e as desenvolvem utilizando a internet, utilizando máquinas virtuais, sistemas
operacionais, aplicações, serviços, ferramentas de desenvolvimento, operações e estruturas de
controles.
Ainda pode-se implementar suas aplicações na infraestrutura de cloud computing e os
aplicativos rodam utilizando linguagens e ferramentas que são oferecidas pelo provedor de
serviços paas.
22
O provedor de cloud computing gerencia a infraestrutura e os sistemas de operações e o
desenvolvedor é responsável por instalar e gerenciar a aplicação que está sendo
implementada. Um exemplo da arquitetura paas é mostrado na figura 8, provedores de
serviços baseado em nuvem oferecem sua infraestrutura.
Figura 8: Serviços oferecidos por empresas que exploram o conceito PaaS
Fonte: http://www.ibm.com/developerworks/opensource/library/os-cloud-virtual2/
Google, Microsoft, SalesForce,
são empresas que apostam nessa tecnologia,
oferecendo aos desenvolvedores serviços e plataformas para rodar e implementar suas
aplicações.
2.1.6 IaaS - Infrastructure as a Service - Infraestrutura como serviço
Segundo Curtis Franklin Jr.(2009), é o conceito de fornecer máquinas virtuais,
armazenamento virtual, infraestrutura virtual, ativos de hardware e outros recursos que são
necessidades do cliente final.
O prestador de serviços iaas gerencia toda a infraestrutura do cliente, enquanto ele é
responsável por todos os outros aspectos da implantação. Isso pode incluir o sistema
operacional, aplicativos e interações do usuário com o sistema.
Suas principais características, segundo Taurion (2009), são:
O cliente não precisa dispor de hardware e software nos moldes tradicionais, ou seja,
em seu data center. As capacidades de processamento e de armazenamento são obtidas
remotamente na nuvem.
Todos os recursos computacionais estão na nuvem do provedor, que os alocará de
forma dinâmica e elástica, para atender ás demandas de flutuação do cliente.
O acesso á nuvem é via internet. Portanto, banda larga é fundamental.
Todo o pagamento é pelo volume de utilização. Usou pagou pelo que foi usado.
23
A oferta de acesso é baseada na web para armazenamento e poder computacional. O
cliente não precisa gerenciar ou controlar a infraestrutura baseada em cloud computing, mas
tem controle sobre os sistemas de operações, armazenamento e aplicativos implantados. Uma
arquitetura baseada em iaas é mostrada na figura 9, no exemplo a infraestrutura do provedor
Amazon é oferecida para seus clientes rodar e locar suas aplicações.
Figura 9: Amazon Aws fonece soluções IaaS
Fonte: http://www.visionsolutions.com/world/Portuguese/Products/DT-Cloud.aspx
2.1.7 DaaS - Database as a Service - Banco de dados como serviço
Refere-se ao uso de uma nuvem para armazenar e acessar informações usando
infraestrutura de terceiros, que vai suportar um banco de dados SGBD(Sistema de
gerenciamento de banco de dados).
No modelo daas segundo Brian J. S. Chee (2009), uma empresa pode por exemplo
usar uma nuvem para armazenar e acessar informações sem se preocupar com a infraestrutura
que vai suportar os bancos de dados. Neste modelo o usuário paga pelo volume de dados
armazenado e pela quantidade de dados transmitidos para a nuvem.
Os custos de
infraestrutura e suporte ficam a cargo do provedor da nuvem que mantém o daas.
Outra atratividade dessa tecnologia é que o usuário pode facilmente utilizar este
modelo como a cópia de seu banco de dados e o provedor oferece processos de backups
automáticos, a figura 10 mostra este ambiente,
no exemplo um serviço oferecido pela
Amazon Aws o SimpleDB é instanciado na forma de gerenciar os dados do usuários como:
24
armazenar as informações, escalabilidade dos dados, organização em forma de tabelas e
através de uma API é possível a interação com esses serviços e informações.
Figura 10: A Amazon AWS oferece o serviço chamado SimpleDB, no qual é possível armazenar suas
informações na forma de banco de dados
Fonte: http://aws.amazon.com/solutions/case-studies/webservius/
2.1.8 BaaS - Backup as a Service - Backup como serviço
É a execução de uma cópia de segurança dos dados de uma empresa ou organização,
armazená-la na nuvem do provedor e ter acesso para resgate somente quando for necessário.
A tecnologia, conforme aponta-nos Franklin (2009), é parecido com o conceito daas,
quando o pagamento é feito em relação aos quantidade de dados armazenados, se houver 100
GB de cópia, por exemplo, a cobrança é feita em cima desse tamanho. Em contrapartida, a
segurança também será realizada sobre 100 GB de dados armazenados, a tecnologia baas e
mostrada na figura 11, os dados do cliente são armazenados na infraestrutura do provedor.
Figura 11: A Amazon Aws oferece um serviço chamado Amazon S3, no qual é possível armazenar informações
na forma de backup.
Fonte: http://www.zmanda.com/backup-Amazon-S3.html
25
2.1.9 Nuvem pública, privada ou híbrida.
Nuvem pública não significa necessariamente uma nuvem gratuita, mas uma nuvem
que pode ser acessada pela internet. A gratuidade ou não vai depender do modelo de negócios
do provedor de nuvem, que pode subsidiar seus serviços para oferecê-los gratuitamente em
troca de receitas de outras fontes, diz Taurion (2009).
“As nuvens privadas são aquelas em que toda a infraestrutura pertence à empresa, a
principal, e diferença com a nuvem publica é que a própria empresa é responsável pela
manutenção, gerenciamento e instalação da nuvem” Brian J. S. Chee(2009). Sendo assim, a
nuvem privada oferece maior segurança, porém exige maiores investimentos. As nuvens
híbridas combinam os modelos das nuvens públicas e privadas, permitindo que uma nuvem
privada possa ter seus recursos ampliados a partir da reserva de recursos de uma nuvem
pública.
Essa característica possui a vantagem de manter os níveis de serviço mesmo que haja
flutuações rápidas na necessidade dos recursos. A conexão entre as nuvens pública e privada
pode ser usada até mesmo em tarefas periódicas que são facilmente implementadas nas
nuvens públicas, por exemplo.
O termo “computação em ondas” é, em geral, utilizado quando se refere às nuvens
híbridas, completa Sosinsky. Um exemplo de uma nuvem híbrida pode ser visto na figura 12,
uma empresa conecta seus serviços em provedores e em sua infraestrutura privada.
Figura 12: Nuvem pública + Nuvem privada = Nuvem Hibrida
Fonte: adaptado de http://www.cloudave.com/6/perform-the-hybrid-cloud-dance-easily-with-newscale-rpathand-eucalyptus/
26
A diversidade tecnológica é uma enorme barreira para o mundo de TI, o cloud
computing apresenta uma tipagem que tende a resolver diversos problemas encontrados.
Problemas com infraestrutura, energia, espaço, pessoas e processos são os maiores desafios.
2.1.10 Software para Cloud Computing
Existem diversos softwares e produtos baseados e que são utilizados em computação
nas nuvens, seguir existem diversos exemplos de implementações que usam os conceitos
explicados anteriormente.
Tecnologias
Segundo Dr. Manoel Veras (2009) com ela é possível a criação máquinas virtuais e
armazenamentos virtuais para rodar as aplicações necessárias. Um exemplo do uso da
virtualização para criação de um ambiente em nuvem é o eucalyptus.
Uma plataforma de software baseada em GNU/Linux para criar sistemas de computação
em nuvem na tecnologia dos conceitos IAAS. O projeto tem uma interface que pode conectarse a sistemas de computação e armazenamento da Amazon Cloud (EC2 e S3), por exemplo, e
manter uma nuvem privada como proteção para os desenvolvedores trabalharem dentro das
técnicas oferecidas pela plataforma com um número de tecnologias para a virtualização de
sistema, incluindo vmware, xen e kvm.
O eucalyptus é uma sigla tirada da expressão "elastic utility computing architecture for
linking your programs to useful systems." (arquitetura de computação elástica com utilidade
para a ligação de seus programas e sistemas , em tradução livre). A maioria dos distribuidores
linux apoia este projeto, que é baseado na obra original de Rick Wolski, da Universidade da
Califórnia em Santa Bárbara, os sistemas da empresa de eucalyptus foram formados em 2009
para apoiar a comercialização da plataforma de computação em nuvem. A iniciativa da
empresa
não é de forma única, vários outros projetos estão em andamento para criar
plataformas em nuvem open source. A figura 13 mostra a infraestrutura eucalyptus, diversos
hypersors rodam em sua infraestrutura oferecem flexibilidade e segurança a empresa que faz
seu uso.
27
Figura 13: infraestrutura eucalyptus
Fonte: http://fgonit.blogspot.com/2009/09/eucalyptus-pioneira-em-redes-privadas.html
2.1.11 Provedores e Serviços
A disseminação das nuvens afetará o mercado de servidores, segundo Cezar Taurion
(2009). As principais empresas de software têm o desafio de preservar o seu negócio já
estabelecido, ao mesmo tempo que buscam se posicionar na liderança dos novos modelos.
O Cloud Computing abre grandes oportunidades, mas também oferece grandes desafios
para as empresas provedoras de serviços e tecnologias.
Amazon AWS:
A Amazon criou uma subsidiária chamada Amazon Web Services para disponibilizar
serviços de computação em nuvem. Segundo Barrie Sosinsky (2011), a Amazon oferece o
EC2(Elastic Computing Cloud), para locação de máquinas virtuais Linux, nas quais o usuário
possa alugar dezenas, centenas ou até milhares de CPU’s; o S3, serviço de
armazenamento(storage) em nuvem, o SimpleDB, oferta de Database-as-a-Service e o
SQS(Simple Queue service) para serviços. Com o S3 e EC2, o objetivo é que os usuários
possam operar seus negócios sem ter a necessidade de investir em infraestrutura, como
servidores e storage.
A plataforma computacional oferecida é a própria plataforma que roda os aplicativos da
Amazon, uma infraestrutura de tecnologia que inclui dezenas de milhares de servidores e que
levou anos para ser construída e ajustada. A tecnologia de cloud computing oferecida é a IaaS
e o usuário faz seu uso da forma adequada ás suas necessidades. A figura 14: logotipo dos
serviços oferecido pela empresa Amazon o AWS, Amazon Web Service.
28
Fonte: http://aws.amazon.com/
Figura 14: Amazon AWS
Google:
Dr Manoel Veras (2009) afirma que “uma simples consulta no Google demanda o
acesso a milhares de megabytes e consome dezenas de bilhões de ciclos de processador.” Na
verdade, o google mantém em seus data centers uma cópia de grande fração da internet, cópia
esta continuamente atualizada através de software “spiders” que percorrem a rede, link por
link, vasculhando o conteúdo das bilhões de páginas, uma nuvem computacional que é
utilizada frequentemente e que passa despercebida.
Outro exemplo de uso de computação em nuvem é o Google AppEngine, o qual
permite que o desenvolvedor crie sua própria aplicação sem necessidade de possuir
infraestrutura e software específicos para isso.
Todo tratamento é feito na nuvem e a aplicação resultante também é projetada para rodar
especificamente no Google. Uma restrição era que o AppEngine suportava apenas linguagens
Python, contudo recentemente foi projetado suporte também para Java. Outra restrição é que
as bases
de dados são criadas no bigtable, sistema de armazenamento de dados de
propriedade do Google. A figura 15 mostra serviços _IM_le app engine.
Figura 15: Google App Engine
Fonte : http://google.com.br
29
IBM:
A IBM entrou no setor de computação em nuvem em novembro de 2007 com uma
oferta diferenciada, chamada Blue Cloud, Segundo Cezar Taurion (2009). Esta oferta é um
conjunto de tecnologias, algumas proprietárias como o Tivoli Provisioning Manager e outras
open source como o Xen e o Haddop ( versão open source do ambiente de computação
paralela do Google, o MapReduce), que permitem a uma organização construir sua própria
infraestrutura de nuvem. Com ela, a empresa pode utilizar o conceito de computação em
nuvem para o uso interno ou prover serviços para clientes externos. A figura 16 mostra um
exemplo de nuvem da IBM.
Figura 16: Nuvem da IBM
Fonte: http://startupmeme.com/ibm-partners-with-universities-in-qatar-for-cloud-computing/
Autores de obras sobre cloud computing abrem uma discussão em relação aos desafios
encontrados pelas empresas e provedores de nuvem.
“A computação em nuvem abre grandes oportunidades, mas também oferece imensos
desafios para as empresas provedoras de serviços e tecnologias” _IM Mather (2009, p.109).
Por exemplo, a disseminação de nuvens afetará o mercado de servidores, também as
principais empresas de software têm o desafio de preservar o seu negocio já estabelecido, ao
mesmo tempo em que buscam se posicionar na liderança dos novos modelos de negócios. O
cloud computing possui tipos muito bem definidos e cada um tem uma finalidade apropriada.
A Virtualização também possui uma taxonomia característica.
Na teoria de Gatner (2011), o cloud computing junto da virtualização será a tecnologia
com maior impacto em operações e infraestrutura de TI até 2012, mudando drasticamente
como o departamento de TI gerencia, compra, desenvolve, planeja e cobra por seus serviços.
Todos esses serviços e produtos têm como base a virtualização de sistemas operacionais, essa
tecnologia garante diversas vantagens.
30
2.2 VIRTUALIZAÇÃO
A virtualização de servidores vem ganhando espaço com o passar do tempo,
acompanhado também da virtualização de desktops. Com isso é preciso diversos tipos de
softwares que atendam suas reais necessidades tais como disponibilidade e provisionamento
de hardware em um curto espaço de tempo.
2.2.1 Conceitos
Segundo Luciano Siqueira Jeans (2008), a virtualização é o processo que permite a
execução de vários SO (Sistema operacional) operando em um único servidor ou desktop,
através do compartilhamento de hardware. É a junção de ambientes operacionais físicos e
virtualizados, através da transformação de hardware em software, ou seja, em um único
servidor podemos criar e administrar vários outros servidores virtuais com sistemas
operacionais distintos.
Figura 2: Ambiente virtualizado
Fonte: http://www.vembajr.wordpress.com/category/wake-up-africa/
A figura 17, mostra um ambiente virtualizado, 7 máquinas virtuais, operando em um
único servidor acompanhado de uma unidade de armazenamento(Storage).
Tradicionalmente, os servidores x86 são executados em um único sistema operacional e
em um único aplicativo, diz Jeanna N. Mathews (2009). A virtualização quebra essa barreira e
permite que um servidor seja executado de forma segura em várias “máquinas virtuais” ao
mesmo tempo, cada uma com seu próprio sistema operacional e aplicativo, completa a autora
citada acima. A virtualização é uma tecnologia de software comprovada que está
transformando o cenário de TI e alterando a forma na qual a computação é tratada.
Para oferecer uma alta disponibilidade de serviços flexíveis e, devido à maturidade da
tecnologia de virtualização, as máquinas virtuais são utilizados como padrão para a
31
implantação de um objeto na nuvem. As máquinas virtuais separaram a infraestrutura
virtualizada da física.
Além disso, as máquinas virtuais permitem a personalização da plataforma para atender
às necessidades do usuário final.
Por exemplo, no amazon elastic compute cloud (EC2), o cliente escolhe a sua imagem
preferida vm (máquina virtual) em uma lista de várias versões de servidores Gnu/Linux e
windows configurado para atender diversos servidores web e/ou bancos de dados.
“Alternativamente, eles podem personalizar um sistema para melhor atender às suas
necessidades e implantar o novo aplicativo nesse ambiente virtualizado” Dr. Manoel Veras
(2010, p.204). A amazon oferece um conjunto básico de serviços web que podem ser criados
para suportar a demanda, conforme necessário, mas isso requer mais administração e gestão
do sistema. Assim, algumas organizações desenvolvem ferramentas para infraestrutura virtual
a fim de gerenciar e monitorar as máquinas virtuais em um pool de recursos distribuídos.
A aplicação de terceiros, empresas de hospedagem de serviços surgiu para proporcionar
maior nível de ferramentas de implementação do aplicativo em cima do EC2, reduzindo assim
os encargos administrativos para o cliente.
Atualmente, o conceito de virtualização vem sendo e aplicado praticamente em todos os
data centers, as empresas de tecnologia e ás que fazem o seu uso, para minimizar custos com
equipamentos e garantir uma eficiência energética, ações que veem sendo resgatadas
conforme a necessidade tecnológica. Assim como Cloud Computing, a virtualização também
possui diversos tipos e software que variam de acordo com a aplicação, sendo possível
escolher uma ferramenta que se encaixe à necessidade.
2.2.2 História
A virtualização é a ideia de separação ou divisão dos recursos de um único servidor em
vários segregados de máquinas virtuais. A tecnologia de virtualização tem sido proposto e
desenvolvido a um período relativamente longo.
“O primeiro uso da virtualização foi realizado pela IBM em 1960, destinada a alavancar
os investimentos em computadores mainframe expansivos” Jeanna N. Mathews (2009,
p.103). A ideia era permitir a multitarefa e executar várias aplicações e processos para
diferentes usuários simultaneamente.
Robert P. Goldberg (1974) descreve a necessidade de máquinas virtuais: “Os sistemas
de máquinas virtuais foram originalmente desenvolvidas para corrigir algumas das
32
deficiências da típica arquitetura de terceira geração e exploração de multiprogramação e
sistemas operacionais”.
Durante os anos 1980 e 1990, a abordagem predominante para a computação foi
distribuído a sistemas, aplicações cliente servidor, e o servidor x86 de baixo custo.
Recentemente, devido ao rápido crescimento da infraestrutura, temos visto o surgimento de
processadores multicores e uma grande variedade de hardwares, sistemas operacionais, e
softwares.
Segundo, Gillam Lee (2010) neste ambiente, a virtualização tem tido um ressurgimento
da popularidade. Ela proporciona grandes benefícios para um sistema de computação,
incluindo o aumento da utilização, eficiência energética, implementação rápida, melhor
capacidade de manutenção, isolamento e encapsulamento. Sendo assim, oferece
gerenciamento de carga flexível e de alta disponibilidade durante a manutenção planejada ou
eventos não planejados.
A virtualização por muitos é considerada uma nova tecnologia, porém em tempos
antigos da computação já se utilizava esses apetrechos por diversas aplicações.
2.3 TIPOS DE VIRTUALIZAÇÃO
De acordo com uma das autora do livro: “Executando o Xen, um guia prático para a arte
de virtualização” Jeanna N. Mathews (2008), “Muitos detalhes técnicos a respeito de
virtualização são similares, e ainda assim existem muitas abordagens para resolver problemas
associados com diferentes implementações”.
Quatro principais arquiteturas para virtualização na computação moderna permitem a
ilusão de sistemas isolados: emuladores, virtualização completa, paravirtualização e
virtualização em nível de sistema operacional.
2.3.1 Emuladores
Nos emuladores, a máquina virtual simula todo o conjunto de hardware necessário para
executar hóspedes sem que nenhuma modificação seja necessária, para diferentes arquiteturas
de hardware.
Segundo Eli M. Dow (2008), os emuladores são usados para criar novos sistemas
operacionais ou microcódigos para novos projetos de hardware, antes que estes estejam
disponíveis fisicamente. Exemplos incluem PearPC, Bochs e as formas não aceleradas do
QEMU, a arquitetura da tecnologia é vista na figura 18.
33
Figura18: Esquema de virtualizado utilizando o QEMU
Fonte: http://www.greensocs.com/Projects/QEMUSystemC
2.3.2 Virtualização Completa
A virtualização completa (também chamada de virtualização nativa) é semelhante aos
emuladores. Como neles, sistemas operacionais sem modificação, executam dentro de uma
máquina virtual.
De acordo com Jeanna N. Mathews (2008), a diferença em relação aos emuladores é
que sistemas operacionais e aplicativos são projetada para executar na mesma arquitetura de
hardware presente na máquina física subjacente.
Isso permite que um sistema em virtualização completa, execute muitas instruções
diretamente no hardware bruto. O hypervisor, neste caso, vigia o acesso ao hardware
subjacente e dá a cada sistema operacional hóspede, a ilusão de ter sua própria cópia desse
hardware. Não é preciso usar software para simular uma arquitetura básica diferente. A figura
19 mostra uma infraestrutura do hypervisor xen em funcionamento.
34
Figura19: Ambiente implementando com a virtualização completa
Fonte: http://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2010_2/luizaugusto/arq_xen.html
2.3.3 Paravirtualização
Uma terceira técnica comum é conhecida como paravirtualização. Em alguns lugares
ela é também chamada de iluminação (enlightenment).
Nela, o hypervisor exporta uma versão modificada do hardware físico subjacente.
Segundo Eli M. Dow (2008), a máquina virtual exportada é da mesma arquitetura, o que não é
necessariamente o caso dos emuladores. A figura 20 mostra um ambiente virtualizado usando
a paravirtualização.
Figura 20: Ambiente paravirtualizado
Fonte: http://virtualizacaoti.blogspot.com/
2.3.4 Virtualização ao sistema operacional
Uma quarta técnica é a virtualização em nível de sistema operacional (também chamada
de (paenevirtualização) para refletir o fato de que ela é “quase virtualização”), nessa técnica
não existe monitor de máquina virtual.
De acordo com Jeanna N. Mathews (2008), tudo é feito inteiramente com uma única
imagem tradicional de sistema operacional. Os SOs que suportam essa técnica, são de
propósito geral e compartilhamento de tempo, com a capacidade de garantir fortemente
espaços de nome e isolamento de recursos.
Os “hóspedes”, criados em tais condições, ainda são percebidos como se fossem
máquinas separadas com seus próprios sistemas de arquivos, endereços IP e configurações de
software. A figura 21 mostra um ambiente ao SO.
35
Figura 21: virtualização em nível de sistema operacional.
Fonte: http://hercules-now.com/2010/07/02/virtualizacao-de-sistemas-operacionais/
2.3.5 Software de Virtualização (Hypervisor)
Os hypervisores foram originalmente desenvolvidos no princípio dos anos 70 quando,
para reduzir custos, se consolidavam vários computadores isolados de diferentes
departamentos da empresa em um sozinho e maior “o mainframe”, capaz de servir a múltiplos
setores.
Segundo Dr. Manoel Veras (2009), ao executar múltiplos SO ao mesmo tempo, o
hypervisor permite uma consolidação, dando robustez e estabilidade ao sistema; se um
sistema operacional parar, os outros continuam trabalhando sem interrupção. A imensa
maioria dos vendedores de sistemas Unix, incluindo Sun Microsystems, HP, IBM e SGI estão
vendendo hardware virtualizado desde o ano 2000. Estes sistemas são eficientes, mas
extremamente caros.
A arquitetura x86 usada na maioria dos sistemas de PC, é particularmente difícil de
virtualizar. Mas as grandes companhias, como AMD e Intel, estão a implementar extensões
que redirecionam as partes ineficientes ou deficientes da virtualização de x86, proporcionando
um apoio adicional ao hypervisor. Isto permite um código de simples virtualização e um
melhor rendimento para uma virtualização completa
“O hypervisor situa entre os domínios hóspedes e o hardware físico, alocando e
controlando recursos, garantindo proteção e isolamento” (Eli M. Dow,2008, p.167). XEN
O hypervisor do Xen se originou no laboratório de computação da universidade de
Cambridge como parte do projeto XenoServer em andamento em 2001. Esse projeto tinha
como objetivo criar uma infraestrutura pública para computação distribuída por amplas áreas.
A intenção do projeto era criar um sistema onde plataformas de execução do
XenoServer estariam espalhadas pelo planeta para uso por qualquer membro no público-alvo.
Quando a infraestrutura do XenoServer estiver completa, seus usuários enviarão um código
36
para ser executado e serão cobrados posteriormente pelos recursos utilizados durante a
execução.
Garantir que cada um dos nós físicos seja usado em sua máxima capacidade possível
exige um hypervisor de alto desempenho, capaz de hospedar múltiplos sistemas operacionais
comuns num único servidor baseado em x86.
Para cumprir tal papel, o Xen foi criado para ser o núcleo de cada nó do XenoServer.
Ele permite estabelecer a responsabilidade pelo consumo de recursos, auditoria e, o mais
importante, o gerenciamento de recursos necessário para a infraestrutura do XenoServer.
Segundo Jeanna N. Mathews (2008) , o Xen foi apresentado ao público pela primeira
vez num artigo acadêmico aceito nos procedimentos de 2003 da Associação de Equipamentos
de Computação (ACM, Association for Computing Machinery) para o Simpósio de Princípios
em Sistemas Operacionais (SOSP, Symposium on Operating System Principles).
A afirmação de ter a capacidade de executar virtualização rápida em máquinas x86
comuns criou um grande interesse na comunidade acadêmica. Essa afirmação foi verificada
independentemente em ambientes acadêmicos, o que serviu para fortalecê-la. Em seguida, um
grande número de grupos se interessou por essa nova abordagem de virtualização. Nos anos
seguintes a essa publicação inicial do Xen, muitas atualizações significativas ocorreram no
projeto, permitindo melhorias na funcionalidade, confiabilidade e performance.
É digno de nota que, durante o desenvolvimento do Xen 1.x, a divisão de Pesquisas
Microsoft, em colaboração com a Universidade de Cambridge, desenvolveu parte do Windows
XP para o Xen. Essa adaptação se tornou possível, em parte, por causa do programa de
licenciamento acadêmico da Microsoft. Infelizmente, devido aos termos dessa licença, a
adaptação nunca foi publicada, embora tenha sido mencionada no artigo original na SOSP
sobre o Xen.
“O hypervisor Xen se situa acima do hardware físico é apresenta aos domínios
hospedes uma interface de hardware virtual. Dessa forma, ele define a máquina virtual que os
domínios hospedes percebem no lugar do hardware físico” (Eli M. Dow ,2008, p.199).
Ele dá a cada domínio hospedes uma porção de todos os recursos da máquina física,
exportando dispositivos simplificados. O hypervisor não esta sozinho em sua tarefas de
administrar os domínios hóspedes no sistema. Um domínio privilegiado chamado de Domain0
serve como uma interface administrativa para o Xen. Ele é o primeiro domínio ativado quando
o sistema é inicializado e pode ser usado para criar e configurar outros domínios hóspedes
comuns. O Domain0 é responsável por executar as requisições de hardware e software vindo
dos domínios comuns. Um domínio de driver é o DomU que executa um kernel mínimo e um
37
backend para um dispositivo particular. Esse processo tem a vantagem de mover a
complexidade e risco de gerenciamento de dispositivo para fora do Domain0. A figura 22 da
um exemplo da dom0 em atendendo a requisitos das domUs.
Figura 22: Hypervisors de virtualização Xen
Fonte: http://xen.org/
3 METODOLOGIA
A linguagem escolhida para seu desenvolvimento será o python “pode ser encontrado
em _in.python.org”, segundo Osvaldo Santana (2011), sua construção começou em 1989 pelo
holandês Guido Van Rossum. Seu nome origina-se do nome da série humorística britânica
Monty Python’s Flying Circus, do grupo humorístico britânico Monty Python.
Guido queria uma linguagem de altíssimo nível, que agregasse características
importantes de diversas linguagens de programação. Além disso, queria que essa linguagem
de programação mantivesse uma sintaxe simples e clara, completa Santana.
“A linguagem de programação python é hoje usada pela maioria dos desenvolvedores e
organizações por ter seu foco a legibilidade, coerência e qualidade do software em geral, o
38
distingues de outras linguagem”(MARK LUTZ ,2003, p.121).
O código em Phyton é
projetado para ser legível e, portanto, fácil de manter. Mais que as linguagens de scripts
tradicionais, o phyton também tem excelente suporte para o mecanismos de reutilização de
código, como a programação orientada a objetos(POO). A figura 23 mostra estágios do
bytecode python.
Figura 23: Esquema do bytecode escrito em python
Fonte: http://grupoweblovers.org/2011/01/18/curso-bsico-de-algoritmos-com-python-01-introduo-ao-python/
“O código-fonte da linguagem em geral corresponde de 1/3 a 1/5 do tamanho do código
das linguagens equivalentes(C++ ou Java por exemplo)”(MARK LUTZ ,2003, p.63). O que
significa menos digitação, menos depuração e uma menos manutenção após seu completo
desenvolvimento. Algumas ferramentas conhecidas como frameworks são integradas a
linguagem para oferecer flexibilidade ao desenvolvedor.
O Django “pode ser encontrado em _in.djangoproject.com”.é uma delas, uma
ferramentas para desenvolvimento web, escrito em Python, que foi criado pelo grupo editorial
“The Wold Company” para criação da versão web dos seus jornais. Posteriormente, em 2005,
foi liberado sob licença BSD, tornando-se assim um software de código aberto.
Osvaldo Santana (2011) , um dos autores do livro “Python e Django – desenvolvimento
ágil de aplicações web, afirma que o django como outros frameworks ágeis para
desenvolvimento web, utiliza o conceito de DRY – Don’t reapeat youself (não se repita), que
trabalha com a _inux de utilizar convenções em substituições ás configurações.
O autor define que, se seguirmos determinadas convenções na maneira de organizar
seu código, não será preciso configurar as características especificas de seu software. Uma
ferramenta bastante ágil para o desenvolvimento, é necessário
que o desenvolvedor utilize
configurações complexas somente em situações nas quais o comportamento padrão do django
não é o esperado ou quando não é possível seguir as convenções criadas pelo framework,
completa o autor.
39
O autor considera o django um “superframework”, pois é composto de vários
frameworks (componentes menores):
ORM –Object- relational mapper (Mapeador de objeto relacional):
Permite o desenvolvedor utilizar objetos sem se preocupar com a persistência desses
dados no seu banco de dados relacional.
Template System :
Fornece uma linguagem para criação de templates(HTML, XML, JSON) usados na
geração de páginas dinâmicas.
Sistema de Administração:
O Django é um framework web que disponibiliza uma interface, gerada
automaticamente, que permite a administração dos objetos de negócios da aplicação em
desenvolvimento.
URL dispatcher :
Cuida do processamento das URLs do sistema executando funções especificas pelo
desenvolvedor e possibilitando o uso de URLs amigáveis pelo usuário.
Internacionalização :
Facilita a internacionalização de seu sistema, permitindo que ele funcione corretamente
com diversos idiomas.
Formulários :
Geração automática de formulários e facilitação na manipulação dos dados enviados
por meios deles.
Segurança :
Gerenciamento de autenticação de usuários e controle de permissões.
Com todos esses recursos, não nos resta dúvida adotar
essa ferramenta para o
desenvolvimento e confecção da nossa aplicação voltada para cloud computing.
A linguagem oferece também APIs para desenvolvimentos que são bibliotecas de
ferramentas integradas, segundo Daniel Berrange (2010), o libvirt é uma delas, um kit de
40
ferramentas para interagir com as capacidades de virtualização das versões recentes do
Gnu/_inux, suporta softwares livres sob a licença Pública Geral GNU Lesser, a ferramenta
possui um conjunto de ligações para várias linguagens de programação. Como resultado,
libvirt “pode ser encontrado em http://libvirt.org/” deve fornecer todas as APIs necessárias
para fazer a gestão, tais como: disposição, criar, modificar, monitorar, controlar, migrar e
parar os domínios – dentro dos limites do apoio do hypervisor para essas operações.
Nem todos os Hypervisors fornecem as mesmas operações, mas, se uma operação é útil
para a gestão do domínio de um mesmo Hypervisor específica vale a pena fazer o uso do
libvirt, completa o autor. Vários nós podem ser acessados com o libvirt simultaneamente, mas
as APIs estão limitados a operações de único nó.
Operações de recursos nó que são necessários para a gestão e aprovisionamento de
domínios e também estão no âmbito da API libvirt, como configuração de interface, regras de
firewall, gerenciamento de armazenamento e APIs de provisionamento geral. O libvirt
também irá fornecer as APIs do monitoramento do estado necessário para implementar
políticas de gestão, obviamente, verificando o estado do domínio, mas também vai expor o
consumo dos recursos locais do nó.
Outra biblioteca também integrada ao python será utilizada no projeto,
Prabhakar
–
Chaganti
2010,
O
Boto
“pode
ser
segundo
encontrado
em
http://code.google.com/p/boto/” é uma biblioteca de código aberto python para se comunicar
com todos os serviços da Amazon AWS. Foi originalmente concebido por Mitch Garnaat e é
atualmente mantida e reforçada por ele e uma comunidade de desenvolvedores. Uma interface
totalmente integrada para os atuais serviços de infraestrutura oferecidos pelo provedor de
nuvem, também existe uma lista crescente de opções de configuração para a biblioteca boto.
Muitas dessas opções podem ser passados para os construtores para objetos de alto
nível, tais como conexões. Algumas opções, tais como credenciais, também pode ser lida a
partir
de
variáveis
e
ambiente
(por
exemplo,
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY ).
A figura 24 mostra um ambiente com a python+django+boto em funcionamento.
e
41
Figura 24: Arquitetura utilizando API Boto adaptado de
Fonte: http://www.lev.ieav.cta.br/erad2011/up/ERAD-SP2011-AIC28-Katekawa.pdf
A utilização da biblioteca libvirt acorre da mesma forma, uma combinação de códigos
escritos em python com a ajuda da framework django se encarregam de executar a tarefa. A
figura 25 mostra um exemplo em forma de diagrama.
Figura 25: Arquitetura utilizando a API Libvirt adaptado de:
Fonte: http://www.lev.ieav.cta.br/erad2011/up/ERAD-SP2011-AIC28-Katekawa.pdf
42
3.1 RESULTADOS
Os conceitos da computação em nuvem e virtualização serão incorporados nesta
aplicação. A linguagem python em conjunto com framework django farão o trabalho de
conexão com os hypervisors e gerenciamento das máquinas virtuais em funcionamento.
4 LCP – LINUX CLOUD PLATFORM
O LCP – Linux Cloud Platform é uma aplicação que tem como objetivo oferecer
ferramentas para o administrador de uma rede ou até mesmo um usuário avançado gerenciar
de uma forma simples seus servidores e máquinas virtuais.
4.1 Funcionalidades do LCP:
Este projeto propõe implementar conceitos estudados sobre a tecnologia de cloud computing e
virtualização, tal como criação de vms, gerenciamento e monitoramento em uma
infraestrutura privada, a também a mesma _déia para uma infraestrutura pública: criar,
gerenciar e monitorar Vms em ambiente de terceiros, aplicando assim o conceito cloud
computing. A aplicação da à possibilidade de integrar nuvens de vários provedores, a
ferramenta terá acesso via browser a todos esses recursos. A figura 26 mostra aplicação em
ambiente de produção.
Figura 26: LCP – Linux Cloud Platform
43
4.2 Ambiente de desenvolvimento
A Framework Django possui comandos que facilitam a criação de uma aplicações web.
O Código Fonte 1, mostra os passos para criação de um projeto django, com um exemplo na
pratica.
1.
2.
3.
eduardo@debian-xen:/#django-admin.py startproject LCP
eduardo@debian-xen:#ls
eduardo@debian-xen:# __init__.py manage.py setting.py
urls.py
Código Fonte 1: Criação projeto Django.
O comando #django-admin.py startproject LCP é responsável pela criação da
aplicação, ele disponibiliza um conjuntos de arquivos que são de configurações e
desenvolvimento do projeto, no exemplo LCP é nome do projeto em questão.
Cada arquivo tem sua função especifica na aplicação:
__init__: Arquivo vazio que indica ao python que o projeto pode ser usado
como um pacote para outras aplicações;
Manage.py: Utilitário usado para auxiliar nas tarefas específicas do projeto;
settings.py: Arquivo de configuração do projeto. É aqui que o Django busca as
informações
de configurações de projeto. Informações sobre como conectar
no banco de dados, como enviar e-mail, quais idiomas a nossa aplicação
suporta, quais aplicações ela usará.
Urls.py : definições de URLs do projeto. A figura 27 mostra uma arquitetura
django, o exemplificando os passos de uma requisição.
44
Figura 27: Framework Django
Fonte: http://www.djangobrasil.org/
A configuração de inicio que é feito no Django é a de banco de dados, diz Osvaldo
Santana (2011).Como o projeto esta em fase de desenvolvimento o banco usado para a
aplicação é o SQLite 3, que é contido nos pacotes do Python, o autor completa que para
aplicações em operação é recomendado ou banco de dados como por exemplo o MySQL. O
que será aplicado o projeto estiver em um ambiente de produção. Código Fonte 2,
configurações do banco de dados no django, apresenta a configuração do banco de dados do
projeto, nela são inseridos parâmetros de configurações para fazer conexão, com nome de
usuário, senha, etc.
1.
2.
3.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql',
'sqlite3' or 'oracle'.
4.
'NAME': '/home/useredu/Projects/LCP/lpc.db',
5.
'USER': '',
6.
'PASSWORD': '',
7.
'HOST': '',
8.
'PORT': '',
# caminho da base de dados.
# parâmetro de usuário não usar para sqlite3.
# parâmetro de senha não usar para sqlite3.
# parâmetro do servidor host da base de dados. não usar para sqlite3.
# parâmetro de porta de conexão . não usar para sqlite3. } }
Código Fonte 2: Configuração do Banco de Dados no Arquivo settings.py.
45
4.3 Aplicações Django
O Django divide cada projeto em aplicações: cada aplicação, dentro do seu projeto,
pode ser estendida como um componente desse projeto. Cada componente deve possuir um
conjunto bem definido de funcionalidades.
O Projeto LCP de será composto de várias aplicações, por hora é feita a criação de uma
aplicação inicial com o nome de lcp_manager e tem a seguinte forma:
1.
2.
3.
eduardo@debian-xen:/#python manage.py startapp lcp_manager
eduardo@debian-xen:#python manage.py startapp aws
eduardo@debian-xen:# __init__.py views.py models.py
Código Fonte 3: Criação de aplicação Django.
O comando manage.py startapp inicia uma nova aplicação a Código Fonte 3, criação de
aplicações com o comando específico, um exemplo prático, com o seguintes arquivos:
__init__: Diz que essa aplicação é um pacote Python.
models.py: definição das tabelas de banco de dados da aplicação.
views.py : Aonde é criada as e funções para nossa aplicação.
Depois de criar a aplicação, e necessário ativar essa aplicação no projeto. Para tanto, é
preciso adicioná-la à lista de INSTALLED_APPS do arquivo settings.py. Código Fonte 4 –
Liberação de aplicação no ambiente django, um exemplo da liberação das aplicações que
compõe o projeto.
1.
INSTALLED_APPS = (
2.
...
3.
'django.contrib.messages', ##aplicação para envio de mensagem
4.
'lcp_manager', ##aplicação para infraestrutura privada
5.
'aws', )##aplicação para infraestruta pública Amazon Aws
46
Código Fonte 4: Configuração do Banco de Dados no Arquivo settings.py
Segundo Osvaldo Santana (2011), as aplicações web funcionam sempre da mesma
forma. O cliente (browser)faz uma requisição (request)para um servidor por meio de um
endereço(URL), e esse servidor devolve uma resposta(response) a essa requisição. Essa é a
essência do funcionamento do protocolo HTTP.
O Django possui um mecanismo que permite ao desenvolvedor criar mapas em que
pode definir quais URLs chamarão quais funções(views) da sua aplicação. Tal mapeamento é
feito dentro do arquivo urls.py, que foi criado anteriormente pelo comando django-admin.
Código Fonte 5 – Configurações das funcionalidades do projeto, um exemplo de como liberar
tal funções para uso na aplicação.
Que possui a seguinte forma:
1.
##Liberando as funções para o aplicativo lcp_manager
2.
(r'^$', 'lcp_manager.views.index'), ##Liberação da função da pagina inicial da aplicação
3.
(r'^vm/(?P<nr_vm>\d+)/$', 'lcp_manager.views.vm'),##Liberação da função criar vm privada
4.
(r'removevm/(?P<nr_vm>\d+)/$', 'lcp_manager.views.removevm'),##Liberação da função remover vm
privada
5.
(r'suspendvm/(?P<nr_vm>\d+)/$', 'lcp_manager.views.suspendvm'),##Liberação da função suspender
vm privada
6.
7.
...
)
Código Fonte 5: Configuração do URLs no Arquivo urls.py
O arquivo views.py será composto com as seguintes funções:
Nuvem Pública e privada : Funções que vão interagir com as máquinas virtuais
criadas em um ambiente público e privado, uma empresa, um provedor de nuvem.
LigarInst(): ligar uma instância(VM) selecionada na Amazon AWS.
Após as definições das funções é possível criar interfaces robustas, seguras e eficientes,
a Código Fonte – 6 mostram um trecho de um código usado para ligar uma máquina virtual
instanciada no ambiente da Amazon AWS. A simplicidade e a eficiência do código levam a
aplicação a ser ágil.
47
1.
import boto
2.
import boto.ec2
3.
from boto.ec2.connection import EC2Connection #Biblioteca boto
4.
def ligarinst(request, nr_aws):
5.
ec2 = boto.connect_ec2(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)#Conectando na Amazon AWS
6.
7.
8.
9.
10.
...
if request.method == "POST":
ligar = ec2.start_instances(instance_ids=instance)## ligando a Vm na Amazon
return HttpResponseRedirect("/listinstances/")
return render_to_response("ligarinst.html", c )
Código Fonte 6: Uso da biblioteca boto na aplicação LCP.
As configurações ou parâmetros para criação das Vms serão armazenadas em forma de
tabela que serão administrada por um SGBD, o SQLite que ao final do projeto será
implementando em MySQL.
De acordo com Osvaldo Santana (2011), uma classe que modele os dados de criação de
Vms no ambiente público e privado (disco, memória, etc) é recomendado. As classes desse
tipo são conhecidas como classe Model e ficam localizadas em um arquivo chamado
models.py dentro do diretório de cada aplicação. Código Fonte 7 – Modelagem de dados da
aplicação, um exemplo prático para criação de tabelas com a framework django. Essa classe
terá a seguinte forma:
1.
# -*- coding: utf-8 -*-
2.
from django.db import models
3.
from django.contrib.auth.models import User
4.
class ConfVmXen(models.Model):
5.
hostname = models.CharField(max_length=50) #Hostname da VM
6.
tam_men = models.CharField(max_length=20) #Tamanho da memória da VM...
Código Fonte 7: Exemplo de configuração do Banco de Dados no Arquivo settings.py
48
4.4 Interface WEB
Nesta etapa do projeto o objetivo é o desenvolvimento das telas para interação com
usuário via web de forma simples, segura e eficiente. Elas irão auxiliar ao uso correto da
aplicação, criar e gerenciar máquinas virtuais no ambiente público e privado.
Figura 28: LCP Tela Inicial
A aplicação LCP, possibilita identificação de usuário através da inserção de Username
e Password para ingresso no sistema totalmente via browser. A figura 28 mostra este evento.
O código para funcionalidade desta função é mostrado na Código Fonte 8, no exemplo
a linha return render_to_response("index1.html", {}) retorna ao usuário a pagina mostrada
na ilustração que tem o nome de “index1.html”.
1.
##Função da Pagina Index
2.
@login_required##Para pedir login
3.
def index(request):
4.
return
render_to_response("index1.html",
{})Retorna a pagina index1.html ao
usuário
49
Código Fonte 8: Função para autenticação de usuário.
Apenas uma chamada garante com que a função estabelece conexão entre o usuário e a
aplicação, a framework django oferece bibliotecas para garantir a autenticidade do usuário
que irá interagir com a aplicação:
from django.contrib.auth.decorators import login_required
@login_required
A aplicação é dividida inicialmente em dois ambientes: público e privado.
Ambiente Privado:
No ambiente privado o usuário pode fazer a criação de sua máquina virtual apenas
clicando em simples botão, como mostra a figura 29 .
Figura 29: Botão para Adicionar Máquinas Virtuais.
50
O código para criação desta tela pode ser visualizado nos Código Fonte 9 e 10.
1.
<img src="/media/imagens/rodape.png" />
2.
<p><a href = "/">Início<a/></p>
3.
<p><a href = "/logout/">Logout</a></p>
4.
<p><a href = "/addvm/">Adicionar Máquinas Virtuais</a></p>
5.
<p><a href = "/listhypersbd/">Configurações do Hypervisor Xen</a></p>
6.
<p><a href = "/">Ambiente KVM</a></p>
Código Fonte 9: Códigos para listar máquinas virtuais criadas.
A criação de máquinas virtuais é feita de forma simples, com a inserção das configurações
básicas de um computador real é possível criar sua VM. A figura 30 mostra uma máquina
virtual sendo criada logo após a confirmação de suas configurações.
1.
2.
3.
4.
{% for vm in lista_vm %}
<li>
<a href="/removevm/{{ vm.id }}">
<img src="/media/imagens/lixeira2.png" />
5.
</a>
6.
<a href="/vm/{{ vm.id }}">
7.
VM : {{ vm.hostname}} - {{ vm.tam_men }}b RAM
8.
</a>
9.
</li>
Código Fonte 10: Códigos para listar máquinas virtuais criadas.
Código Fonte 11 - Código para criação de máquinas virtuais, um exemplo de codificação.
51
Figura 30: Criação de máquinas virtuais(imagem esquerda), console em produção de vm(imagem direita) em um
ambiente privado.
O usuário clica no link “Criar VM” na tela que envia o usuário para a URLS /addvm.
Isso gera uma requisição(GET) que, por estar mapeada no url.py, executará a função
addvm()(definida em views.py).
A
expressão
:
form
=
FormConfVmXen(request.POST,
request.FILES),
if
form.is_valid(): e dados = form.cleaned_data , valida os parâmetros das máquinas virtuais e
faz sua criação, armazenando suas configurações no dicionário form.cleaned_data.
1.
@login_required##Para pedir login
2.
def addvm(request):
3.
if request.method == 'POST': #Máquina enviada a criação
4.
form = FormConfVmXen(request.POST, request.FILES)
5.
if form.is_valid():
6.
dados = form.cleaned_data
7.
return render_to_response("salvo.html", {"vm" : vm})
8.
else:##Acessada via link método GET
9.
form = FormConfVmXen()
10.
return render_to_response("addvm.html", {'form':form},
context_instance=RequestContext(request))
Código Fonte 11: Exemplo de função para criação de máquinas virtuais.
52
A linguagem python oferece uma ferramenta na qual é possível executar programas
escritos em shell scripts(lotes de comandos que funcionam em linux)o Código Fonte – 12
mostra o código do script criavm.sh.
1.
#!/bin/bash
2.
sudo xen-create-image --hostname=$nomevm --size=$diskvm --swap=$swapvm --dist=$distvm -memory=$menvm --dhcp --lvm=$nomelvm
3.
#Cria a VM propriamente dita
4.
sudo xm create /etc/xen/$nomevm.cfg
Código Fonte 12: Exemplo de código do script criavm.sh.
Figura 31: Funções para o usuário interagir com a máquina virtual.
Com a máquina virtual criada é possível fazer sua gerência como, ligar, desligar, salvar
uma cópia desta máquina. Este processo é feito com ajuda da biblioteca libvirt que fornece
funções escritas em python para essas tarefas, tornando a aplicação simples e ágil. A figura 31
mostra as para a tela com a máquina virtual e também. O Código Fonte – 13 mostram o
código das funções:
53
1.
def suspendvm(request, nr_vm):
2.
## Conectando no Hypervisor Xen
3.
conn = libvirt.open("xen:///")
4.
domvm = conn.lookupByName(vm.hostname)
5.
if request.method == "POST":
6.
domvm.suspend()/suspender VM, para ligar é usado o comando: domvm.resume() e para desligar:
domvm.shutdown()
7.
return HttpResponseRedirect("/lista/")
8.
return render_to_response("vmsuspensa.html", c)
Código Fonte 13: Exemplo de função para Hibernar máquina virtual.
Ambiente público:
No ambiente público, foi possível fazer a conexão com a infraestrutura da empresa
Amazon AWS. Neste ambiente é necessário a criação de uma chave para identificação com o
usuário e a máquina virtual criada no sistema, um arquivo no formato conexão.pem que
incorporada ao protocolo de conexão remoto SSH(Security Shell), com isso pode-se interagir
com a vm criada no ambiente da Amazon de forma simples e segura. A figura 32 mostra este
evento.
Figura 32: Criação de novas chaves de conexão.
54
Figura 33: Cria chave tccii-usf.pem no ambiente Amazon AWS.
A criação desta chave é feita somente com inserção de seu nome no campo indicado e
clicando no botão “Criar chaves AWS EC2”, a figura 33 mostra este evento.
O LCP oferece uma função na qual carregamos todas as informações das imagens de
máquinas virtuais que o provedor Amazon oferece, como por exemplo: tipo de sistema
operacional, arquitetura, tamanho de memória etc. A ilustração 34 mostra a listagem dessas
imagens:
Figura 34: Imagens de Vms no ambiente Amazon AWS
55
Com a chave criada é possível criar uma máquina no ambiente do provedor de cloud
computing, a figura 35 mostra este evento que é feito de forma simples.
Figura 35: Iniciando vm no ambiente Amazon Aws
Com a vm iniciada no ambiente da Amazon, o administrador ou usuário do LCP pode
interagir com ela, como: fazer conexão remota, desligar, ligar, salvar seu estado, etc. A figura
36 mostra as funções de interação com a vm Amazon AWS EC2.
Figura 36: Configuração da Vm criada no ambiente da Amazon EC2.
56
Outra funcionalidade que a aplicação oferece é a listagem de todas as máquinas virtuais
que foram criadas através da conta do administrador que faz o uso da ferramenta. A figura 37
mostra algumas vms iniciadas no ambiente da Amazon.
Figura 37: Vm criadas no ambiente Amazon AWS.
Com o comando “ssh -i TCCII-USF11.pem [email protected]” em um ambiente bash shell pode-se realizar uma conexão remota à
máquina virtual que esta em funcionamento no provedor Amazon AWS. Nota-se que “TCCIIUSF11.pem” é a chave criada para conexão remota. A figura 38 mostra a conexão feita em
uma máquina rodando no ambiente da Amazon.
57
Figura 38: Conexão feita em uma máquina virtual.
Feita a conexão nesta máquina virtual pode-se fazer seu uso da mesma forma que uma
máquina real padrão, é possível criar serviços para administração de rede, como por exemplo:
um servidor de Web(Apache), um servidor de bando de dados(MySql ou PostgreeSQL), um
servidor de arquivos(Samba) e também é possível associar essa máquina virtual a outros
serviços oferecidos pelo provedor Amazon AWS. Outros sistemas operacionais como
Windows e outras versões do Linux também funcionam na aplicação.
Funcionalidades como trabalhar com outros hypervisores(VirtualBOX, VMWare,
OpenVZ) e conexões com outros provedores de nuvem(GoGrid, Locaweb, SalesForce, etc) é
o próximo passo do desenvolvimento.
5 TESTES REALIZADOS
5.1 Introdução
Os testes realizados baseiam-se na criação e gerencia de máquinas virtuais em um
ambiente público e privado, para analisar seu desempenho em relação a tempo e simplicidade.
58
5.2 Ambiente de Testes
O ambiente de testes utilizado foi:
Computador AMD Quad Core 2.8, 8 GB de memória RAM
Notebook Intel i3 2.27, 4 GB de memória RAM
GNU/Linux Debian 6.0
5.3 Testes
Os primeiros testes de criação de máquinas virtuais foram feitos utilizando o download
da imagem de instalação do sistema operacional. Este método torna a aplicação um pouco
lenta pois a velocidade de conexão com a internet é levada em conta. Porém a interação com a
vm após sua criação é feita de forma simples e com rapidez em relação com a forma
convencional, utilizando a ferramenta o usuário apenas clica nas funções como ligar, desligar,
salvar, etc e o evento é realizado. No modo convencional esses comando tem de ser escritos
em um ambiente shell e/ou através de um programa para virtualização(virt-manager por
exemplo “pode ser encontrado em http://virt-manager.org/ “).
No ambiente público o tempo para criação das vms no ambiente do provedor de nuvem
foi relativamente baixo, pois a imagem do SO já esta disponível para uso, sendo assim
necessário somente sua escolha e logo após é feita a instância de um novo servidor virtual.
Em relação ao modo convencional no qual o usuário navega no site do provedor faz sua
identificação(login de usuário e senha) escolhe seu produto e só após ele esta hábil a realizar
eventos com as imagens virtuais de SO.
Na aplicação este processo também é feito de forma simples e em um tempo menor,
em contrapartida a interface do provedor de nuvem possui diversas funcionalidades ativas que
são tarefas a serem implementadas no aplicativo LCP. As figuras 39 e 40 mostram que o
tempo utilizado entre uma ferramenta e outra em algumas situações foi alta, porém na
maioria foram relativamente parecidos.
59
Comparação entre ferramentas
Privado
35
Tempo em min
30
25
20
15
10
5
0
Virt-manager
Shell
LCP
Ferramentas
Criar
Salvar
Ligar
Transferência
entre Hosts
Desligar
Figura 39: Comparação(ambiente privado): Shell, LCP, Virt-manager
Comparação entre Ferramentas
Público
5
4,5
tempo em minutos
4
3,5
Criar
Ligar
Desligar
Conectar
3
2,5
2
1,5
1
0,5
0
LCP
Interface Amazon
Interfaces
Figura 40: Comparação entre ferramentas(ambiente público)
60
6 CONCLUSÃO
Ao observar os provedores de serviços de cloud computing, oferecendo vários produtos
que abrangem todas as técnicas dessa tecnologia pode-se concluir que ele, acompanhado da
virtualização é uma tendência a que já esta sendo adotada também pelas pequenas e médias
empresas.
A contribuição dessa iniciativa é sem dúvida muito positivo a TI verde. A economia
financeira é outro fator favorável, pois com a virtualização podem-se criar várias outras
máquinas virtuais. Com o cloud computing é possível fazer uso somente da fatia de tempo e
de processamento que precisamos e o pagamento é proporcional ao seu uso.
Em relação á aplicação, a sua implementação mostrou-se eficaz pois em pocas etapas
foi possível a criação e o monitoramento de máquinas virtuais . Sendo uma ferramenta
bastante útil em um ambiente de TI que exige uma parada de sistema muito pequena. A ideia
de instanciar máquinas virtuais em ambiente de terceiros também contribui muito, pois
diversos tipos de serviços podem ser configurados e agregados na rede interna de uma PME.
Ter acesso á aplicação via browser traz à aplicação todo o conceito de cloud computing,
pois com ela podemos ter acesso a uma infraestrutura pública e privada, com poucos cliques,
com segurança e eficiência.
61
7 TRABALHOS FUTUROS
Como continuação deste trabalho, pode-se citar algumas melhorias a serem feitas na
aplicação desenvolvida. A inicialmente é a implementação de recursos que orientem o
usuário, avisos de segurança enviados para o e-mail do administrador.
Como um modelo de negócio, o desenvolvimento de uma aplicação completa que
ofereça suporte a todos os provedores de nuvem públicos, brasileiros e estrangeiros, suporte
também a todos os dispositivos de conexão, como Smartphones, Tablets e Celulares com
acesso a internet, essa aplicação será totalmente integrada a mobilidade.
Opções de instalações de diversos tipos de sistemas operacionais de diversas arquitetura
e que trabalhem com todos do hypervisors suportados, também são melhorias a ser
implementadas, pois a mercado de TI exige diversidade e compatibilidade, algo que é a
proposta da aplicação.
62
8 REFERÊNCIAS BIBLIOGRÁFICAS
Introdução a Virtualização – Parte I. Disponível em: http://www.scherm.com.br/?p=465.
Acesso em: 5 de ago. 2010
Introdução a Virtualização II – Otimizando a Infraestrutura. Disponível em:
http://www.scherm.com.br/?p=462. Acesso em: 5 de ago. 2010.ambos por Geraldo
Melo(scherm).
Jeanna N. Mathews, Eli M Dow,Todd Deshane,Wenjin HU,Jeremy Bongio,Patrick F.
Wilbur,Brendan Johnson-”Executando o Xen : Um guia prático de virtualização” -584p
Palestra Campus Party 2010 “Cloud Computing e eu com isso ” ministrada por Fábio Kung
(Locaweb)
disponível em http://www.youtube.com/watch?v=wf6Z2ddEmz8
Palestra Campus Party 2011 “Cloud Computing ” ministrada por Fabiane Bizinella Nardon,
Doutora em Sistemas Eletrônicos pela USP e Bruno Souza, criador da Comunidade Mundial
de Grupos de Usuários Java.
Oficina Campus Party 2011 de "Cloud Computing" ministrada por Fabiane Bizinella Nardon,
Doutora em Sistemas Eletrônicos pela USP e Bruno Souza, criador da Comunidade Mundial
de Grupos de Usuários Java.Criação de uma conta amazon aws, compra, criação e utilização
de uma máquina virtual da amazon aws
VERAS,MANOEL “Datacenter, componente central da infraestrutura de TI”347p.
JEANS LUCIANO, CHISTOPH,BRENDEL Linux Pocket Pro “Virtualização, Trabalhando
com Xen” 96p
SOUZA, DENIS AUGUSTOo A. “FreeBsD O poder do servidor em suas mãos”535p.
SIQUEIRA, LUCIANO ANTÔNIO. “Certificação LPI-1 101-102” 246p
SIQUEIRA, LUCIANO ANTÔNIO. “Certificação LPI-2 201-202” 303p
TAURION, CEZAR. “Cloud Computing, computação em nuvem:Transformando o mundo da
TI” 206p
63
Mark Lutz, Davis Ascher. “Apendendo Python” Bookman - 566 páginas disponível em
http://books.google.com.br/books?id=FloUD_kfc1cC&dq=python&hl=ptbr&source=gbs_navlinks_s
Toby Velte, Anthony Velte, Toby J. Velte, Robert C. Elsenpeter. “Cloud Computing: A
Practical Approach” – 352 -p disponível em
http://books.google.com.br/books?id=mf0LMXve2gEC&hl=pt-br
Tim Mather, Subra Kumaraswamy, Shahed Latif. Cloud Security and Privacy: An Enterprise
Perspective on Risks and Compliance O'Reilly Media, Inc., 2009 - 312 páginas. disponível em
http://books.google.com.br/books?id=BHazecOuDLYC&hl=pt-br&source=gbs_similarbooks
Brian J. S. Chee, Curtis Franklin Jr., Curtis Franklin, Jr."Cloud Computing: Technologies
and Strategies of the Ubiquitous Data Center" CRC Press, 2009 - 270 páginas - Disponível
em http://books.google.com.br/books?id=9-WQJvs_pRYC&hl=pt-br
Barrie Sosinsky. Cloud Computing Bible- John Wiley and Sons, 2011 - 672 páginas
Disponível em http://books.google.com.br/books?id=hvv2pDEAbOEC&hl=pt-br
SANTANA. OSVALDO, GALESSI. Thiago. “Python e Django, Desenvolvimento ágil de
aplicações web TI”, 2011 271p
Hourieh, Ayman. “Django 1;0 Web Site Development”, 2010 257p
Chaganti, Prabhakar. “Xen virtualization, A Pratical Handbook”, 2010, 132p
Coulson. Dani, Berrange. Daniel, Veillard. Daniel. “Libvirt 0.7.5 Application Development
Guide” 84p
Chaganti, Prabhakar. Helms, Rich, “Amazon SimpleDB Developer Guide” - 2010, 232p
Vliet van. Jurg, Paganelli. Flavia. “Programming Amazon EC2” - 2010, 163 p
www.xen.org acessado em :2 novembro de 2011
www.amazon.com/aws acessado em : 2 novembro de 2011
http://lxr.xensource.com/lxr/source acessado em 10 de novembro de 2011
64
http://xenbits.xensource.com/ acessado em 10 de novembro de 2011
http://www.python.org/ acessado em 10 de novembro de 2011
http://boto.cloudhackers.com/ec2_tut.html acessado em 10 de novembro de 2011
http://libvirt.org acessado em 10 de novembro de 2011
http://web.unipar.br/~seinpar/artigos/Jose-Pereira-Danilo-Delphino.pdf acessado em 18 de
novembro de 2011
http://www.opensource.org/licenses/lgpl-2.1.php acessado em 18 de novembro de 2011
http://libvirt.org/index.html acessado em 18 de novembro de 2011
http://code.google.com/p/boto/ acessado em 18 de novembro de 2011