O paradigma Cloud

Para discutir uma determinada solução de Cloud, devemos primeiro definir ‘Computação em Cloud’. [8] Segundo a NIST (Instituto Nacional de Padrões e Tecnologias dos EUA), para ser caracterizado como tal, são necessarias 5 características essenciais.

Serviço sob demanda

O usuário pode requisitar recursos, como tempo de processamento e espaço de memória, conforme necessário, sem a necessidade de intervenção humana por parte do prestador de serviço.

Agrupamento de recursos

Os recursos disponíveis são agrupados e alocados aos clientes dinamicamente de acordo com a demanda de cada um. Além disso, os clientes normalmente desconhecem características como a localização geografica do provedor e operam em um nivel superior de abstração.

Largo acesso à rede

Os serviços estão disponiveis na rede, permitindo acesso em multiplas plataformas (celulares, laptops, desktops, etc.).

Rápida elasticidade

A quantidade de recursos alocados pode ser rapidamente escalada, atendendo à demanda do cliente e criando a ilusão de recursos ilimitados.

Serviço monitorado

O serviço oferecido é constantemente medido, permitindo não só otimizá-lo, como também avaliar o consumo do usuário, oferecendo transparencia à ambas as partes.

Serviços de Cloud

Atualmente, serviços Cloud são oferecidos em 3 modelos, que diferem quanto o nível de abstração observado pelo usuário. No nível mais alto, é oferecido ‘software como serviço’ (SaaS), ou seja, uma aplicação completa que utiliza a infraestrutura cloud. Em um nivel intermediário, é oferecida uma ‘plataforma como serviço’ (PaaS), ou seja, o usuário agora desenvolve aplicações próprias em uma plataforma fornecida pelo provedor e, através dela, acessa a infraestrutura cloud. Por último simplesmente os recursos são disponibilizados ao usuário, permitindo que ele crie e excecute qualquer tipo de software que desejar. Este modelo é chamado de ‘infraestrutura como serviço’ (IaaS).

OpenStack

Openstack é um software open source para computação em cloud no modelo IaaS (‘infraestrutura como serviço’) cuja missão, de acordo com [10], é “produzir uma plataforma ubíqua e open source de computação em cloud, que atenda às necessidades de provedores públicos e privados, independentemente de seus tamanhos, sendo simples de implementar e massivamente escalável”.

História

[2] Em Julho de 2010, a NASA e a ‘Rackspace Hosting’ lançaram uma iniciativa open source de cloud chamada ‘OpenStack’, que, desde então, cresce e ganha popularidade a cada dia. Quatro meses depois, foi lançada a primeira versão do projeto e em 2011, com seus 2 componentes principais chamados ‘Nova’ e ‘Swift’. Pouco tempo depois, os desenvolvedores da distribuição Ubuntu Linux adotaram-o sem suporte completo em sua nova versão, o Ubuntu 11.04, ganhando suporte completo no lançamento da versão ‘Cactus’ do OpenStack. O projeto tambem foi disponibilizado na distribuição Debian em 2011, Red Hat em 2012 e no HP Helion em 2013. Com o desenvolvimento do sistema, novos componentes foram constantemente adicionados, chegando ao total de 13 presente atualmente.

Arquitetura

O sistema OpenStack adotou uma arquitetura baseada em vários módulos independentes, alguns podendo ou não ser incluidos em determinados projetos. Assim, a criação de novos módulos, assim como a atualização de módulos já existentes é facilitada, incentivando o crescimento do sistema como um todo.

Nova

Computação

O módulo Nova gerencia a alocação e liberação de máquinas virtuais de acordo com a demanda. Uma de suas caracteristicas principais é facilitar ao máximo a introdução de novas funcionalidades, permitindo uma alta escalabilidade, tolerância à falhas e compatibilidade com APIs de outros sistemas.

Swift

Armazenamento

Também presente desde a concepção do projeto OpenStack, o módulo ‘Swift’ é responsável por armazenar dados não estruturados de maneira distribuida, segura e barata. Seu principal foco é a escalabilidade, mas também é otimizado para durabilidade, disponibilidade e resistência à concorrência de acessos.

Glance

Serviço de Imagem

Introduzido na segunda versão do projeto, o módulo ‘Glance’ é responsável por catalogar ‘backups’, criando imagens de todas as maquinas virtuais e armazenando-as em disco. Para requerir estes metadados, é usada a API RESTful.

Horizon

Gerenciamento

Através de uma interface web, o módulo ‘Horizon’ oferece acesso a todos os serviços do OpenStack. Sua GUI abrange desde o gerenciamento imagens do ‘Glance’, às maquinas virtuais do ‘Nova’ de maneira facil e rapida.

Keystone

Identidade

Como o próprio nome sugere, o módulo ‘Keystone’ é responsável por autenticar e autorizar todos usuários, dando a cada um deles os privilégios adequados. Este gerenciamento é realizado através de uma base de dados MySQL.

Neutron

Rede

Inicialmente nomeado de ‘Quantum’, este módulo é responsável por gerenciar interfaces de rede de modo escalável e voltado à APIs. Além de funcionalidades como o balanceamento de carga e gerenciamento do IP de diferentes máquinas virtuais, também oferece segurança atraves de firewalls, sistemas de detecção de intrusão (IDS) e redes virtuais privadas (VPN).

Cinder

Armazenamento em Blocos

Cada instância de máquina virtual armazena dados alocando e desalocando memória RAM, ou seja, com o seu término, todos os dados são perdidos. O módulo ‘Cinder’, permite a elas armazenar dados de forma permanente, utilizando blocos de tamanho fixo, com alta disponibilidade e tolerância à falhas.

Heat

Orquestração

Permite armazenar requerimentos à aplicações cloud em um arquivo que indica os recursos necessarios para o funcionamento de sua aplicação. O módulo ‘Heat’, então, gerencia tais recursos através de uma REST API, nativa ao OpenStack.

Ceilometer

Telemetria

Este módulo monitora o funcionamento de todo o sistema, registrando os recursos gastos. Através dele, pode-se verificar o andamento de uma determinada aplicação, estimando seu custo e escalabilidade além de permitir os serviços de cobrança do OpenStack.

Trove

Banco de Dados

Agregando à natureza IaaS do OpenStack, o módulo ‘Trove’ oferece um banco de dados como serviço (relacional ou não). Através dele, administradores podem acessar quantas instâncias de banco de dados quanto precisarem.

Escalabilidade

O projeto OpenStack foi criado com apenas 2 módulos e hoje funciona com mais de 20 módulos em constante crecimento. Além disso, possui, hoje, mais de 80.000 usuários, entre eles aplicações cloud de larga escala como a BestBuy e o PayPal. Com base nestes dados, sua escalabilidade é evidente e se deve principalmente a uma prioridade presente desde o módulo ‘Nova’ (um dos 2 primeiros módulos): Facilitar a criação e atualização de novas funcionalidades no sistema. Somente assim, foi possível manter-se flexível e crescer de acordo com a demanda.

Segurança

Segurança em redes é um tema complexo e demasiadamente importante, assim, como serviços de cloud fazem uso constante da internet e hospedam aplicações críticas, tais preocupações são herdadas.
A plataforma OpenStack implementa segurança utilizando TLS (camada de transporte segura) na comunicação com as máquinas virtuais, suporte de tokens/certificado x509 para a autenticação de seus usuários e ACLs (Controle de Lista de Acesso) para criar grupos de segurança.
Entretanto, a plataforma (segundo [5]) apresenta vulnerabilidades aparentemente simples, por não possuir nenhum critério de senha segura, além de armazenar estas em forma de texto. Além disso, adota uma arquitetura fragmentada em vários módulos, sem usar nenhum tipo de criptografia na comunicação entre eles.

Conclusões

O paradigma cloud é extremamente poderoso e já permeia grande parte das aplicações desenvolvidas atualmente. Através dele, é possível escalar de acordo com a demanda e ao mesmo tempo abstrair da infraestrutura física necessária para tal. Dentre os sistemas de IaaS atualmente presentes no mercado o OpenStack se sobressai. Sua arquitetura modular em conjunto com o fato de ser open source e possuir uma imensa quantidade de contribuidores (incluindo grandes nomes como a RedHat e IBM) permitem um crescimento constante e acelerado, solidificando sua posição como um dos melhores serviços de IaaS hoje.

Questões


Qual a diferença entre os modelos de serviço IaaS, PaaS e SaaS?

O nível de abstração oferecido. No SaaS, é oferecida uma aplicação completa, que ,por sua vez, utiliza a infraestrutura cloud. Já o PaaS, permite ao usuario criar suas próprias aplicações em uma plataforma oferecida pelo provedor. Por último, no IaaS, somente os recursos cloud são disponibilizados e o usuario pode criar e executar qualquer software que desejar.


O OpenStack utiliza qual dos 3 modelos de serviço cloud?

IaaS.


Como é a arquitetura do sistema OpenStack?

O OpenStack é composto por diversos módulos independentes que possuem funções bem definidas e interagem entre sí.


Qual a vantagem de uma arquitetura modular?

Tal estrutura facilita a criação de novos módulos e atualização dos já existentes, incentivando o crescimento e constante renovação do sistema.


Qual a vantagem dos serviços cloud serem sob demanda?

Assim, o desenvolvedor pode abstrair da infraestrutura física necessária para hospedar um dado serviço e ter garantia de que esta não será desperdiçada e nem sobrecarregada.

Referências

[1] Rohit Kamboj, Anoopa Arya. Openstack: Open Source Cloud Computing IaaS Plataform; ISSN: 2277 128X
[2] Rakesh Kumar, Bhanu Bhushan Parashar. Dynamic Resource Allocation and Management Using OpenStack
[3] Yoji Yamato, Masahito Muroi, Kentaro Tanaka and Mitsutomo Uchimura. Development of template management technology for easy deployment of virtual resources on OpenStack
[4] Rakesh Kumar, Neha Gupta, Shilpi Charu, Kanishk Jain, Sunil Kumar Jangir. Open Source Solution for Cloud Computing Platform Using OpenStack; ISSN 2320–088X
[5] Hala Albaroodi, Selvakumar Manickam and Parminder Singh. Critical Review of Open Stack Security: Issues and Weaknesses; ISSN: 1549-3636
[6] Cigoj, P. and T. Klobucar. Cloud security and OpenStack. Proceedings of the 1st International Conference on CLoud Assisted ServiceS
[7] About Openstack. Openstack. [Online] www.openstack.org
[8] Peter Mell, Timothy Grance. The NIST Definition of Cloud Computing; Recommendations of the National Institute of Standards and Technology; Special Publication 800-145
[9] Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy Katz, Andy Konwinski, Gunho Lee, David Patterson, Ariel Rabkin, Ion Stoica, and Matei Zaharia; A view of cloud computing
[10] Tutorial, OpenStack. CloudCom, IEEE. [Online] 2010. http://salsahpc.indiana.edu/CloudCom2010/slides/PDF/tutorials/OpenStackTutorialIEEECloudCom.pdf.
[11] Demetrius Roveda, Adriano Vogel, Samuel Souza, Dalvan Griebler; Uma Avaliac¸ao Comparativa dos Mecanismos de Segurança nas Ferramentas OpenStack, OpenNebula e CloudStack

Autoria

Este trabalho foi totalmente produzido pelos autores que declaram não terem violado os direitos autorais de terceiros, sejam eles pessoas físicas ou jurídicas. Havendo textos, tabelas e figuras transcritos de obras de terceiros com direitos autorais protegidos ou de domínio público tal como idéias e conceitos de terceiros, mesmo que sejam encontrados na Internet, os mesmos estão com os devidos créditos aos autores originais e estão incluídas apenas com o intuito de deixar o trabalho autocontido. O(s) autor(es) tem(êm) ciência dos Artigos 297 a 299 do Código Penal Brasileiro e também que o uso do artifício de copiar/colar texto de outras fontes e outras formas de plágio é um ato ilícito, condenável e passível de punição severa. No contexto da Universidade a punição não precisa se restringir à reprovação na disciplina e pode gerar um processo disciplinar que pode levar o(s) aluno(s) à suspensão;