DevSecOpsARTIGO

Realidades da computação em nuvem de software livre – Parte 02

Provavelmente você já ouviu a frase “grave uma vez, execute em qualquer
lugar”. Mas se quiser gravar um aplicativo que é executado em uma nuvem, é
necessário realmente saber o que está fazendo.

Nesta segunda parte da
série “Realidades da Computação em Nuvem de Software Livre”,
aprenda como gravar um aplicativo usando PHP para executar na
plataforma de computação em nuvem Aptana. Explore algumas das diferenças
críticas de design entre um aplicativo de nuvem e um aplicativo
tradicional N-tier. Os conceitos são ilustrados com um aplicativo
aparentemente simples, usando tecnologias de software livre familiares,
que toca os pontos fortes de computação em nuvem.

Sobre essa série

Nesta série dividida
em três partes, aprenda como determinar se a computação em nuvem pode
ajudá-lo e como planejar sua estratégia de computação em nuvem. Durante a primeira parte nós observamos os benefícios de computação em nuvem, os tipos de nuvens e as
opções de alto nível em plataformas de computação em nuvem, além de cobrir outras partes do ciclo de vida para um aplicativo implementado na nuvem.

Agora vamos aprender a gravar um aplicativo simples usando PHP que será executado na plataforma de computação em nuvem Aptana.
Explore as diferenças de design entre um aplicativo em nuvem e um aplicativo N-tier tradicional.

Arquiteturas de computação em nuvem

Padronizar seu software para o ambiente no qual é executado é
essencial se você quiser que o software seja estável, execute bem e
escale para atender a demanda imposta a ele.

Essa é uma consideração importante independentemente de se você possui o
ambiente no qual seu software é executado ou se você não possui esse
ambiente.
Conforme aprendemos na primeira parte deste artigo, nem todas as nuvens são iguais. Os diferentes tipos de computação em nuvem requerem diferentes considerações.
Será necessário distinguir entre plataformas de computação em nuvem básicas e especializadas.

Arquitetura para plataformas especializadas

Plataformas altamente especializadas são mais intrusivas em relação a arquitetura.
Elas possuem muitas considerações que você precisará abordar ao projetar um aplicativo executado nessas nuvens.
É claro, elas trazem benefícios exclusivos que compensam as restrições.
O Google App Engine é um bom exemplo.

Ao criar um aplicativo para o Google App Engine, a única
coisa que você cria é o código de origem do aplicativo e quaisquer
ativos estáticos (imagens, por exemplo) que precisar.
Não há nenhum controle sobre o servidor de aplicativos ou o acesso a
dados. Há uma boa razão para isso: o App Engine fornece soluções altamente
escaláveis.

No entanto, é necessário entender a infraestrutura fornecida pelo App
Engine.
A Google fornece uma API (a Google Query Language) para acessar o
armazém de dados do App Engine. É intencionalmente muito semelhante ao
SQL, facilitando o início do uso do armazém de dados.
O armazém de dados não é uma banco de dados relacional; é mais próximo
de um sistema de arquivos simples.

O acesso simples é um pouco mais lento do que uma
consulta simples (localizar um único objeto por chave principal) em um
banco de dados.
Consultas relacionais, como junções de tabelas, são possíveis, mas são
implementadas por diversas consultas sequenciais.
São consideravelmente mais lentas do que uma junção em um banco de dados
relacional, mas, como resultado, é muito mais difícil criar uma
consulta que afeta demasiadamente o armazém de dados.

Para tirar proveito do armazém de dados, frequentemente,
é aconselhado cancelar a normalização de seus dados, permitindo que
dados relacionados sejam armazenados e recuperados juntos.

Por exemplo, imagine armazenar informações sobre o usuário onde cada
usuário pode ter diversos números de telefone.
Esse é um relacionamento clássico de um para muitos e, geralmente, seria
modelado para um banco de dados como uma tabela de usuários e uma
tabela de números de telefones, onde a tabela de números de telefones
contém uma chave externa para a tabela de usuários.

Você, certamente, poderia modelá-la da mesma maneira com o armazém de
dados da Google, mas seria mais eficiente para encapsular o número de
telefone como parte do usuário (como uma lista ou uma array de números
de telefones).
Uma única consulta no armazém de dados retornaria todo o necessário.

O Google App Engine não é a única plataforma de
computação em nuvem que usa esse modelo.
Uma das plataformas Amazon, o SimpleDB, funciona de maneira idêntica.

Seria possível executar MySQL, Postgres ou qualquer outro banco de dados
no EC2, mas o SimpleDB é fácil de usar e fornece determinados
benefícios de escalabilidade (escalar horizontalmente é muito mais fácil
quando você essencialmente não permite junções).
A plataforma Ning, outra plataforma especializada, também fornece um
padrão de acesso semelhante.

É possível obtermuitos benefícios usando plataformas
especializadas, mas há características que você simplesmente se lembra
ao projetar um aplicativo que será executado nas mesmas.
Frequentemente, pode ser mais simples usar uma plataforma de computação
em nuvem básica.

Arquitetura para plataformas básicas

Plataformas básicas, como Amazon EC2 ou Joyent Accelerator, fornecem
excelente liberdade para executar qualquer software desejado na nuvem.
Há menos restrições para sua arquitetura.
Se estiver arquitetando para uma plataforma básica, é possível abordá-la
praticamente como se você mesmo possuísse toda a plataforma.
Como projetaria seu aplicativo se fosse executá-lo em seu próprio centro
de dados ou em servidores em lease de um provedor de colocação?
Você provavelmente não precisa alterar muito o design se quiser executar
o aplicativo em uma plataforma de computação em nuvem.

É possível executar aplicativos da Web em plataformas
básicas, assim como o faria com uma plataforma especializada como o
Google App Engine, mas pode usar qualquer servidor de aplicativos ou
banco de dados desejado.
É claro, o lado negativo é que você precisa definir, instalar,
configurar e gerenciar toda essa infraestrutura.
A plataforma de nuvem não vai ajudar muito.

Há algum terreno intermediário lá fora, também. A
plataforma Aptana Cloud fornece muita flexibilidade, pois é como uma
camada sobre o Joyent
Accelerator. Aptana reduz seu trabalho fornecendo
diversas opções de infraestrutura baseadas em software livre nas quais
construir seu aplicativo.
Também possui excelentes ferramentas para simplificar o processo de
implementação.
A chave para o sucesso é usar as opções de tecnologia de software livre.

Usando software livre

Com uma plataforma básica, é possível escolher seu servidor de
aplicativos, banco de dados, etc. Portanto, o que você escolheria?
Se estivesse construindo seu próprio centro de dados, você iria querer
usar tecnologias de software livre.

O mesmo se aplica a uma plataforma de nuvem.
Escolheria um sistema operacional Linux ou UNIX, um servidor da Web
Apache com o módulo apropriado para sua linguagem de programação de
opção e um banco de dados MySQL ou Postgres.
Essas são opções tão comuns que é possível encontrar algumas opções
pré-configuradas.
Uma opção ainda mais fácil é usar o Aptana Cloud.

Aptana Cloud

O Aptana Cloud coloca a tecnologia de software livre em camadas sobre
a plataforma Joyent Accelerator. Joyent usa a tecnologia de
virtualização Xen sobre o sistema operacional OpenSolaris, de forma que a
combinação de Joyent e das tecnologias de software livre usadas por
Aptana é uma plataforma de software livre verdadeiramente pura.

Aptana usa o servidor da Web Apache, o servidor de e-mail Postfix e o
banco de dados MySQL.
Fornece plug-ins do Apache para PHP e Jaxer, que é um contêiner de
software livre para usar JavaScript do lado do servidor.
A partir deste artigo, o Aptana também oferece uma versão beta privada
para Rails no Aptana Cloud.

O uso do Aptana Cloud é muito direto. A plataforma do
Aptana é integrada a seu produto principal, o Aptana Studio IDE.
Simplesmente faça download do Studio, use-o para criar seu aplicativo,
implemente seu aplicativo no Aptana Cloud.

Se você tiver suas próprias
ferramentas que prefere para construir seu aplicativo, isso também
funcionará.
Simplesmente importe-o para o Aptana Studio e use o Studio para
implementar o aplicativo na nuvem.
As seções a seguir verificam a construção e implementação de um
aplicativo no Aptana Cloud.

Construindo um aplicativo

O aplicativo de amostra neste artigo usa PHP no Aptana Cloud. Para
usar o Aptana Studio para desenvolver seu aplicativo, tudo que precisa
fazer é instalar o plug-in PHP, conforme mostrado abaixo.

Figura 1. Instale o Plug-in PHP para o Aptana Studio

Quando o plug-in for instalado, é possível iniciar a gravação de PHP.
É um IDE integral, portanto, é possível executar seu aplicativo PHP,
depurá-lo, etc. Também fornece uma interface para interagir com um banco
de dados.

Para o aplicativo de amostra, você criará um blog
customizado. Esse tipo de aplicativo é bem adequado para uma plataforma
simples, como o
Aptana Cloud. É possível iniciar o aplicativo com um
mínimo de recursos e a um baixo custo. Ainda é possível aumentar os recursos (escalar verticalmente) à medida que o
aplicativo cresce em popularidade.

Mas até mesmo um aplicativo mínimo pode “passar por burst” (aumentará
automaticamente o uso da CPU para tratar de bursts em uso).
Se for necessário sustentar altos números de usuários, será necessário
ter diversos servidores para escalar horizontalmente e provavelmente
você iria querer usar Joyent Accelerator diretamente para tratar uma
arquitetura customizada.

Como o aplicativo de exemplo é um blog, você pode pegar
um atalho. O aplicativo é baseado no software de blog WordPress. Esse é
um aplicativo PHP puro que usa um banco de dados MySQL, sendo muito
adequado para para o
Aptana Cloud. É software livre, portanto, você
simplesmente faz download do código, customiza-o e implementa-o em seu
servidor.
Nesse caso, o servidor é realmente o Aptana Cloud.

Uma das primeiras tarefas para qualquer aplicativo WordPress é configurá-lo editando o script wp-config.php.
Isso configura o acesso ao banco de dados e a segurança de cookie. A Lista 1 mostra um arquivo típico.

Lista 1. Configurando o WordPress

<?php
// ** Configurações do MySQL - É possível obter essas informações de seu host da 
Web ** // 
/** O nome do banco de dados para WordPress */
define('DB_NAME', 'wordpress');

/** Nome do usuário do banco de dados MySQL */
define('DB_USER', 'wpadmin');

/** Senha do banco de dados MySQL */
define('DB_PASSWORD', 'your_password_here');

/** Nome do host MySQL */
define('DB_HOST', 'localhost');

/** Conjunto de Caracteres do Banco de Dados a usar na criação de tabelas de banco de 
dados. */
define('DB_CHARSET', 'utf8');

/** O tipo de Coleta do Banco de Dados. Não altere isso se estiver em dúvida. */
define('DB_COLLATE', '');

/** Mais coisas omitidas. */
?>

Há algumas coisas importantes a serem observadas aqui. Se você
estiver desenvolvendo em sua estação de trabalho local, você
provavelmente tem seu banco de dados MySQL na mesma máquina.
Você configuraria DB_HOST para o host local.

Essa é a mesma configuração
que você usaria no Aptana Cloud. O banco de dados será executado na
mesma máquina que seu servidor de aplicativos.
Não é necessário alterar o código executado em sua estação de trabalho
ao implementá-lo no Aptana Cloud.

Uma razão para o WordPress ser tão popular é ser
extensível. Há diversos plug-ins disponíveis para ele. Por exemplo,
suponhamos que sua empresa não queira somente um blog para interagir com
clientes.
Também queira usar o Twitter para permitir que os clientes saibam quando
há uma nova postagem no blog.

É possível usar o plug-in Twitter Tools para o WordPress para fazer
isso.
É simplesmente um script PHP do qual é possível fazer download e copiar
para o subdiretório wp-content/plugins. Se isso não fizer exatamente o
desejado, é possível modificar o código ou gravar seu próprio PHP.

Também é possível customizar a aparência e a sensação
do WordPress criando um novo tema (um conjunto de scripts PHP, arquivos
CSS e imagens) e colocando o código no subdiretório wp-content/themes.
Ao concluir a customização do código, chega a hora de implementar o
Aptana Cloud.

Implementando o Aptana Cloud

Um dos excelentes benefícios do Aptana é sua implementação. Para implementar, simplesmente escolha
Aptana > Cloud > Implementar Projeto, como mostrado abaixo.

Figura 2. Implementando o Aptana Cloud

A primeira vez que você implementar um projeto no Aptana Cloud, serão
solicitadas algumas informações básicas de registro.
É possível implementar no
Aptana Cloud gratuitamente por três semanas, portanto,
não é necessário inserir nenhuma informação de pagamento inicialmente.
Após inserir as informações básicas, o Aptana irá configurar seu
servidor virtual na nuvem.

Figura 3. Fornecendo o Aptana Cloud

Após seu site ter sido provisionado e configurado, você está pronto para
implementar seu código.
Mais provavelmente, o código não será simplesmente copiado de sua
estação de trabalho para a nuvem, mas você iria querer usar software de
gerenciamento de controle de origem.

Novamente, o Aptana fornece isso e usa software livre.
O Aptana usa o Subversion e configura um repositório de controle de
origem na nuvem. Quando estiver pronto para implementar seu código, ele é
incluído no
Subversion.

Figura 4. Implementando Código – Incluindo no Subversion

Quando o Aptana tiver incluído seu código no Subversion e implementado o
mesmo, é possível usar seu Smart Sync para atualizar quaisquer mudanças
incrementais feitas no aplicativo.

O Aptana também fornece uma interface com o usuário para incluir membros
da equipe no aplicativo para que outros possam efetuar pull do código
do
Subversion e colaborar. Com diversas pessoas trabalhando
em um aplicativo, pode se tornar instável. Felizmente, o Aptana cria um
site intermediário na nuvem, assim como um site de produção.
É possível testar as mudanças no intermediário antes de promovê-las para
a produção.

Implementando dados

O gerenciamento de controle de origem é excelente para implementar código na nuvem, mas e os dados?
Para o WordPress, seria instalado localmente primeiro, o que faz com que o
WordPress insira dados de configuração em seu banco de dados.
À medida que plug-ins, temas e outras alterações de configurações são incluídas, mais dados serão gravados no banco de dados.
Isso é típico para aplicativos acionados por dados.

Alguns dados de configuração ou de valor inicial são necessários.
Felizmente, isso é fácil de implementar na nuvem com o Aptana. Simplesmente pegue o dump de seu banco de dados usando o comando mysqldump. O Aptana possui diversas ferramentas para
gerenciar seu banco de dados, incluindo o popular aplicativo de software
livre phpMyAdmin. Ele pode ser acessado a partir do Aptana, conforme
mostrado abaixo.

Figura 5. Acessando phpMyAdmin a partir do Aptana Studio

A partir do aplicativo phpMyAdmin, é possível fazer upload do arquivo criado.

Figura 6. Fazendo Upload do Dump do MySQL

Agora é possível mover todos os dados criados localmente para seu banco
de dados na nuvem.
Esse processo é útil principalmente para uma configuração inicial de seu
aplicativo.
Também é possível gerar scripts SQL localmente, em seguida, executá-los
em seus bancos de dados intermediário e de produção, assim como faria
para um aplicativo em execução em seu próprio hardware.

Resumo

Projetar e desenvolver aplicativos para a nuvem pode ser difícil, dependendo do tipo de plataforma de computação em nuvem usada.
No entanto, para muitos tipos de aplicativos, usar tecnologias padronizadas de software livre simplificará muito suas tarefas.
Essa abordagem é resumida pelo Aptana Cloud.

Neste artigo, você aprendeu como o Aptana facilita o
desenvolvimento de aplicativos com base em PHP e MySQL e como
implementá-los na nuvem. O próximo artigo desta série “Realidades da Computação em Nuvem de Software Livre” explorará outras partes do ciclo de vida para um aplicativo implementado na nuvem.

Recursos

Aprender

Obter produtos e tecnologias

*

artigo publicado originalmente no developerWorks Brasil, por Michael Galpin


Michael Galpin vem desenvolvendo software Java profissionalmente desde
1998. Atualmente, ele trabalha no Ludi Labs, um negócio novo em Mountain
View, Calif. Ele possui formação superior em matemática do California
Institute of Technology.

é o portal de tecnologia da IBM para profissionais de TI de todo o mundo. Colabore, aprenda a criar aplicativos inovadores e compreenda tecnologias avançadas. Acesse mais artigos e tutoriais em www.ibm.com/developerworks/br

Ver perfil