Serviços em nuvem para sua infraestrutura virtual, Parte 2: Platform as a Service (PaaS) e AppScale

Esta série explora os principais tipos de serviços em nuvem e os softwares relacionados que podem ser usados para se criar sistemas em escala de Web. Neste artigo, aprenda sobre computação em nuvem Platform-as-a-Service (PaaS) e AppScale Explore os recursos e a arquitetura dessa infraestrutura virtual. É uma ótima maneira de testar seus aplicativos Google App Engine nos seus recursos locais ou infraestruturas em nuvem virtualizadas, como Amazon EC2 ou Eucalyptus.

Prabhakar Chaganti, CTO, Ylastic, LLC

Prabhakar Chaganti photoPrabhakar Chaganti is the CTO of Ylastic, a start-up that is building a single unified interface to architect, manage, and monitor a user's entire AWS Cloud computing environment: EC2, S3, RDS, AutoScaling, ELB, Cloudwatch, SQS, and SimpleDB. He is the author of Xen Virtualization and GWT Java AJAX Programming, and is also the winner of the community choice award for the most innovative virtual appliance in the VMware Global Virtual Appliance Challenge. He is currently working on a book about Amazon SimpleDB, and can be found on Twitter as @pchaganti.



10/Mar/2010

Introdução

Nesta série "Serviços em nuvem para sua infraestrutura virtual", conheça os três principais tipos de serviços em nuvem: Software as a Service (SaaS), Platform as a Service (PaaS) e Infrastructure as a Service (IaaS).

A Parte 1 explora como IaaS fornece um conjunto de blocos de construção ou serviços, como servidores virtuais, armazenamento de dados e bancos de dados. Usando esses serviços, é possível criar uma plataforma para implementar e executar os seus aplicativos. Conheça também o Eucalyptus, uma infraestrutura de software livre para implementar computação em nuvem com clusters ou farms de estação de trabalho.

Neste artigo, aprenda sobre plataformas PaaS. Obtenha uma introdução ao Google App Engine e à arquitetura AppScale. Explore como usar AppScale para executar aplicativos do Google App Engine usando seus próprios clusters ou em infraestruturas virtualizadas, como Amazon EC2 e Eucalyptus.


Platform as a Service (PaaS)

PaaS é um tipo de serviço em nuvem que fornece ferramentas de desenvolvimento de softwares e produtos hospedados pelo provedor na infraestrutura de hardware. O termo PaaS é comumente usado para plataformas com base em nuvem que são alavancadas para criar e executar aplicativos personalizados. Aplicativos PaaS fornecem tudo o que você precisa para criar e implementar aplicativos e serviços da Web acessíveis de qualquer lugar na Internet. Seus usuários finais não precisam fazer download, instalar ou fazer manutenção do sistema.

As ofertas PaaS fornecem um conjunto de serviços básicos, incluindo bancos de dados, armazenamento e servidores virtuais. É possível usar esses serviços para criar um aplicativo sobre a plataforma PaaS com as ferramentas ou APIs fornecidas pela plataforma PaaS. A seguir estão algumas das plataformas PaaS mais populares.

Google App Engine
Permite executar seus aplicativos da Web na infraestrutura do Google. É possível usar tecnologia Python ou Java™ para criar seus aplicativos da Web.
Microsoft® Windows® Azure
Um ambiente com base em Windows para criar aplicativos e serviços em nuvem. É possível usar o Microsoft Visual Studio® para o desenvolvimento e implementação de aplicativos na plataforma Azure. Azure estava disponível na Community Technology Preview (CTP) para avaliação gratuita até janeiro de 2010.
Force.com
É uma iniciativa recente da Salesforce.com. Fornece uma plataforma de desenvolvimento para criar rapidamente aplicativos escaláveis. Um IDE com base em Eclipse pode ser usado para criar, fazer versão e implementar componentes e aplicativos Force.com na plataforma.
Morph
Fornece um ambiente completo chamado Morph Application Platform (MAP) para hospedar diversos aplicativos da Web através das suas infraestruturas de computação em nuvem.
Bungee Connect
Uma plataforma completa de desenvolvimento e implementação de aplicativo para criar aplicativos da Web para a nuvem.

Consulte Recursos para obter links para essas plataformas.

Figura 1. Plataformas PaaS populares
Image shows popular PaaS platforms

Plataformas PaaS normalmente fornecem abstrações escaláveis usando uma interface para infraestruturas como Google App Engine ou Microsoft Azure. Use o Software Development Kit (SDK) de aplicativo fornecido pelo provedor da PaaS para criar e depurar aplicativos.


Google App Engine

O Google App Engine é uma plataforma com base em nuvem que permite executar aplicativos da Web na própria infraestrutura do Google. Os aplicativos que executam no App Engine podem ser escritos na linguagem de programação Python ou Java. A habilidade de executar aplicativos com base em Java Virtual Machine (JVM) abre uma infinidade de possibilidades. É possível criar aplicativos em diversas linguagens que não Java que podem ser executados na JVM:

  • JRuby
  • Scala
  • Clojure
  • Groovy
  • Jython
  • Beanshell

É possível escalar seus aplicativos facilmente conforme seu tráfego aumenta. Há duas camadas diferentes de preço disponíveis para desenvolvedores do App Engine.

Conta gratuita
Pode ser usada para criar aplicativos que consomem até 500 MB de armazenamento e até 5 milhões de exibições de página pode mês.
Conta paga
Para aplicativos que consumirão mais recursos que a versão gratuita. É possível alocar seu orçamento de acordo com as suas necessidades. Você sempre controla a quantidade máxima de recursos que seu aplicativo pode consumir e pode estabelecer limites para o consumo de recursos.

O App Engine fornece abstrações escaláveis de APIs bem definidas para implementações Google proprietárias. Estão disponíveis para programas com base em Python ou Java usando uma API/SDK.

ServiçoProvedor
Armazenamento de dados BigTable do Google, um sistema de banco de dados proprietário de alto desempenho para armazenar grandes quantidades de dados de maneira semiestruturada.
Armazenamento em cacheMemcached, um sistema de armazenamento em cache de objeto de memória distribuída de alto desempenho.
AutenticaçãoContas Google para autenticação e gerenciamento do usuário
CorreioGoogle Mail (Gmail) para enviar e-mail
Figura 2. Implementação de serviços do Google App Engine
Image shows Google AppEngine services implementation

Há algumas restrições adicionais impostas aos seus aplicativos pelo ambiente do App Engine, como segue:

  • Você tem permissão para usar somente um subconjunto das bibliotecas padrão disponíveis com a tecnologia Python ou Java.
  • São impostas cotas para solicitações de CPU, memória, tamanho de arquivos, etc.
  • Qualquer solicitação feita ao seu aplicativo deve retornar dentro de 30 segundos.
  • Você não possui nenhum acesso ao sistema de arquivos e somente pode ler arquivos estáticos transferidos por upload como parte do aplicativo.
  • Não é possível fazer spawn de encadeamentos ou processos no ambiente do App Engine.
  • O backend de armazenamento usado no App Engine é o BigTable, um armazenamento de dados de valor chave sem esquema.
  • O App Engine somente pode executar código acionado a partir de uma solicitação HTTP.

Essas restrições podem ou não estar limitando seu aplicativo. O App Engine é uma ótima maneira de criar aplicativos da Web escaláveis, e o AppScale fornece uma estrutura para emular o ambiente do Google App Engine. AppScale permite executar e depurar aplicativos do App Engine de maneira local e transparente sobre infraestruturas com base em nuvem, como Amazon EC2 e Eucalyptus.


AppScale

AppScale (consulte Recursos) i é uma implementação de software livre de APIs Google App Engine do RACELab na Universidade da Califórnia, Santa Barbara, EUA. É uma plataforma de computação em nuvem que torna fácil executar aplicativos do Google App Engine sobre nuvens IaaS (como Elastic Compute Cloud (EC2) da Amazon ou Eucalyptus, que foram explorados na Parte 1). Consulte Recursos para mais informações.

O AppScale dá a você o poder do App Engine e permite executar aplicativos App Engine usando seus próprios clusters. Também pode executar de maneira transparente sobre plataformas IaaS. De acordo com a equipe RACELab,

"Nossa meta com o AppScale é fornecer uma infraestrutura em nuvem Platform-As-A-Service (PaaS) que possibilite aos usuários não apenas implementar, testar, depurar, medir e monitorar seus aplicativos GAE antes da implementação nos recursos proprietários do Google, mas também facilitar a investigação e a ampliação da implementação PaaS: serviços, tempo de execução, interoperação com malha em nuvem de nível mais baixo, etc."

A Figura 3 mostra a implementação dos serviços com o AppScale.

Figura 3. Implementação dos serviços AppScale
Image shows AppScale services implementation

Arquitetura do AppScale

O ambiente do AppScale consiste em quatro componentes principais. O AppScale complementa as funções fornecidas pelo Google App Engine construindo sobre e ampliando o SDK do Google App Engine e implementando a API aberta exposta pelo SDK. Os diversos componentes no AppScale automatizam a implementação, o gerenciamento, a escalação e a tolerância a falha do sistema para executar aplicativos do App Engine.

Você pode implementar e executar aplicativos do Google App Engine no AppScale sem nenhuma modificação ao aplicativo. O AppScale não tem como objetivo substituir ou concorrer com o App Engine do Google. É uma estrutura para experimentação com infraestruturas em nuvem e não tem como objetivo escalar tanto quanto a louvada infraestrutura do Google.

Os quatro componentes do AppScale, como mostrado na Figura 4, são:

AppServer
O principal componente para executar um aplicativo do App Engine. É uma extensão do SDK do Google App Engine para executar aplicativos do App Engine localmente. Cada AppServer pode executar somente um aplicativo por vez. É possível adicionar diversos AppServers para hospedar diversos aplicativos.
AppLoadBalancer
O componente responsável por distribuir as solicitações iniciais dos usuários. Após o usuário ter efetuado login com sucesso, o balanceador de carga conduz a solicitação ao AppServer adequado para a manipulação real das solicitações para esse aplicativo. Após isso, o balanceador de carga não está mais envolvido e o usuário é conduzido ao AppServer adequado. Nesse sentido, é um pouco diferente de um balanceador de carga tradicional. O balanceador de carga é um aplicativo Ruby on Rails, e a função de balanceamento de carga é fornecida usando o proxy da Web de software livre chamado nginx.
Mestre do banco de dados
A principal interface para o armazenamento de dados. Fornece acesso às diversas implementações de armazenamento de dados disponíveis para MySQL, Cassandra, Voldemort, MongoDB, HBase e HyperTable. Suporte para outros bancos de dados, incluindo CouchDB, está por vir.
Escravos de banco de dados
Um ou mais escravos de banco de dados fornecem o recurso de gerenciamento de dados distribuído, escalável e tolerante a falhas.

Os componentes comunicam-se uns com os outros usando o AppController, que controla a configuração, inicialização e destruição de todas as instâncias do AppScale no ambiente de implementação. O AppController também é responsável pela implementação e autenticação de aplicativos do App Engine.

Figura 4. Componentes do AppScale
Figure 4 shows the AppScale components

Usuários de aplicativos do App Engine interagem com o AppServers usando SSL. A primeira solicitação de login para o ambiente AppScale sempre irá para o balanceador de carga, que a conduzirá para o aplicativo adequado após um login bem-sucedido.

Desenvolvedores criando aplicativos para serem acessados por usuários interagirão com o AppScale usando o conjunto de ferramentas AppScale Tools. Esse conjunto de ferramentas fornece funções que permitem configurar uma instância do AppScale e implementar aplicativos do App Engine no AppScale. É conceitualmente similar às ferramentas Amazon EC2. Alguns dos scripts nesse conjunto de ferramentas estão resumidos abaixo.

ScriptAção
appscale-run-instancesImplementa uma instância do AppScale junto com um aplicativo do App Engine
appscale-upload-app Faz upload de um aplicativo do App Engine em uma instância do AppScale em execução
appscale-describe-instancesRecupera estatísticas de utilização, como utilização de CPU e memória, do AppController e do AppServers
appscale-reset-pwdRedefine a senha do desenvolvedor para o usuário/desenvolvedor raiz
appscale-terminate-instancesLimpa e destrói todas as instâncias do AppScale
Figura 5. Arquitetura do AppScale
Image shows AppScale architecture

O AppScale usa o conceito de nós. Um é uma instância de uma instância de imagem do AppScale. Uma implementação do AppScale consistirá em pelo menos um nó e normalmente de diversos nós. Um nó conterá o AppController para comunicar-se com outros nós, junto com ou mais componentes do AppScale. O nó que implementa o AppLoadBalancer é chamado de nó principal. Há somente uma instância do nó principal na implementação do AppScale.

O AppController no nó principal é o principal controlador e possui algumas responsabilidades adicionais:

  • Monitorar a implementação do AppScale para nós que falharam.
  • Expandir e reduzir a implementação do AppScale de acordo com a demanda do sistema e as preferências do desenvolvedor.
  • Coletar informações de aplicativo e de uso de recursos dos outros nós periodicamente.
  • É responsável por reiniciar componentes que falharam e fazer spawn novamente dos nós se necessário.

A Figura 6 mostra um exemplo.

Figura 6. Nós do AppScale
Figure 6 shows AppScale nodes

A instância de imagem do AppScale também é chamada de guest virtual machine (GVM). Pode executar sobre o software livre Eucalyptus em nuvem IaaS (discutido na Parte 1) ou sobre o ambiente Amazon Web Services EC2. Também pode ser usado em sistemas não virtualizados usando as mais recentes distribuições do Ubuntu. No caso do Eucalyptus, é possível usar Xen, KVM ou VMware como a camada de virtualização subjacente. A Figura 7 mostra o AppScale implementado no Eucalyptus.

Figura 7. AppScale implementado no Eucalyptus
Image shows AppScale deployed on Eucalyptus

Como mostrado abaixo, o Amazon EC2 usa Xen como a estrutura de virtualização subjacente.

Figura 8. AppScale implementado no EC2
Image shows AppScale deployed on EC2

AppScale foi projetado com tolerância a falhas. Pode suportar falhas nos componentes AppServer, Database Slave, AppLoadBalancer e AppController.

A equipe do AppScale está pesquisando diversos cenários de falha e o efeito sobre o sistema. Está trabalhando em maneiras de criar tolerância para essas falhas em um ambiente AppScale implementado.

O AppScale disponibiliza a habilidade de criar uma pilha em nuvem de software livre de ponta a ponta completa que pode favorecer o modelo de computação do utilitário. Isso recentemente recebeu o nome de LEAP (de Linux, Eucalyptus, AppScale e Python) por Tim O’Reilly. Há também projetos futuros que estão tentando fornecer uma solução semelhante. O mais promissor, chamado TyphoonAE (consulte Recursos), é um projeto de software livre para executar aplicativos do Google App Engine com base em Python com módulos que podem ser conectados para armazenamento de dados, sistema de mensagens e armazenamento em cache. No momento em que este artigo foi escrito, o TyphoonAE estava em beta, e o projeto parecia estar desenvolvendo-se rapidamente.


Benefícios do AppScale

O AppScale é uma ótima maneira de testar e depurar aplicativos do Google App Engine localmente. O AppScale e o Eucalyptus juntos fornecem uma fantástica plataforma para explorar e pesquisar computação em nuvem.

Software Livre
AppScale foi criado para pesquisar plataformas de computação em nuvem. Está disponível gratuitamente na forma de origem, ficando mais fácil olhar abaixo das capas ou criar facilmente extensões da plataforma para atender às suas necessidades. O ritmo do desenvolvimento na plataforma é muito rápido. Os recursos e as melhorias estão sendo adicionados rapidamente.
Ótimo para experimentação
O AppScale é uma ótima plataforma para experimentar com ideias e malhas em nuvem. É fácil de testar novas maneiras de executar aplicativos com base em nuvem. A plataforma também é fácil de usar e facilmente ampliável.
Nuvem privada
O AppScale, junto com o Eucalyptus, pode ser instalado no seu datacenter atrás do firewall como uma nuvem de teste privada em execução em sua própria infraestrutura. Você obtém os benefícios de controle completo sobre a segurança e o meio ambiente.
Compatibilidade do App Engine
Os aplicativos do App Engine que você cria e executa na estrutura AppScale podem ser facilmente implementados para o ambiente real do Google App Engine uma vez que os testes forem concluídos.

Conclusão

Neste artigo, você aprendeu como as ofertas de computação em nuvem Platform as a Service (PaaS) fornecem um conjunto de serviços básicos, incluindo armazenamento, bancos de dados e servidores virtuais. É possível usar esses serviços para criar um aplicativo sobre a plataforma PaaS com as ferramentas ou APIs fornecidas pela plataforma PaaS. Você explorou como usar AppScale para executar aplicativos do Google App Engine em infraestruturas virtualizadas, ou em sistemas Infrastructure as a Service (IaaS), como Amazon EC2 e Eucalyptus.

Recursos

Aprender

  • Explore o mundo do Amazon Web Services, que fornece a empresas de todos os portes uma plataforma de serviços da Web de infraestrutura na nuvem.
  • Saiba mais sobre plataforma IaaS, como Amazon Web Services Elastic Compute Cloud (EC2) e Eucalyptus.
  • Siga as atualizações do Eucalyptus em @eucalyptuscloud no Twitter.
  • Para AppScale:
  • Para Google App Engine:
    • A galeria de aplicativos para o App Engine mostra aplicativos de amostra e tipos de aplicativos que você pode criar e implementar.
    • TyphoonAE é um projeto de software livre que fornece um ambiente de serviço produtivo com recursos completos para executar aplicativos do Google App Engine (Python).
    • O guia de Introdução para Python e Java para o App Engine fornece uma documentação abrangente para criar aplicativos usando o GAE SDK. Também possui uma descrição da API.
  • Veja o Force.com, a recente iniciativa da Salesforce.com, que fornece uma plataforma de desenvolvimento para criar rapidamente aplicativos escaláveis.
  • Morph fornece um ambiente completo chamado Morph Application Platform (MAP) para hospedar diversos aplicativos da Web através da sua infraestrutura de computação em nuvem.
  • Saiba mais sobre o Bungee Connect, a plataforma de desenvolvimento e implementação de aplicativo completa para criar aplicativos da Web para a nuvem.
  • Use o Ubuntu Launchpad para controlar alterações aos pacotes AppScale na distribuição Ubuntu.
  • Memcached é um sistema de armazenamento em cache de objeto de memória distribuída de alto desempenho.
  • Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, consulte os podcasts do developerWorks.
  • Mantenha-se atualizado com os eventos e webcasts técnicos do developerWorks.
  • Siga o developerWorks no Twitter.
  • Consulte as próximas conferências, feiras, webcasts e outros Eventos em todo o mundo que sejam de interesse dos desenvolvedores IBM de software livre.
  • Visite a Zona de software livre do developerWorks para obter informações abrangentes sobre procedimentos, ferramentas e atualizações de projetos que simplificam o desenvolvimento de tecnologias de software livre e a utilização destas com produtos IBM; e não deixe de passar pelos nossos artigos e tutoriais mais populares.
  • A comunidade My developerWorks é um exemplo de comunidade geral de sucesso que abrange uma ampla gama de tópicos.
  • Assista e aprenda sobre a IBM e as tecnologias e funções de produtos de software livre com as demos on demand do developerWorks grátis.

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre, Cloud computing
ArticleID=473621
ArticleTitle=Serviços em nuvem para sua infraestrutura virtual, Parte 2: Platform as a Service (PaaS) e AppScale
publish-date=03102010