A Amazon lançou recentemente a versão beta limitada de um novo serviço web: a Amazon Elastic Compute Cloud (Amazon EC2). Há meses atrás, a Amazon lançou o Simple Storage Service (o S3), um sistema de armazenamento controlado através da web. EC2 é similar ao S3, mas neste caso o que fornece é a capacidade de processo.
O novo serviço da Amazon apresenta um verdadeiro ambiente virtual, que ao uni-lo com o espaço do S3, permite utilizar a interface de serviços web que requeiram as máquinas que são usadas, carregá-las com aplicações de um ambiente normal, manejar as autorizações de acesso à rede e correr as imagens usando quantos sistemas se queira. Basicamente esta beta permite aos desenvolvedores dispor de acesso a poderosos computadores sem ter que gastar grandes somas de dinheiro.
EC2 reduz o tempo requerido para obter e reiniciar as instâncias de um novo servidor em minutos, permitindo uma capacidade de rapidez em escala, dependendo dos requerimentos. EC2 muda a economia da computação, permitindo pagar só pela capacidade que realmente está sendo usada. De fato, é praticamente a solução ideal para os desenvolvedores, já que esta beta da Amazon permite que qualquer um, com capacidade de desenvolver idéias utilizando a programação, possa conseguir de forma praticamente imediata, pagando unicamente pelos recursos de armazenagem e de processo.
Os desenvolvedores alugarão “la nube” (a nuvem) por 10 centavos de dólar por hora, mais 20 centavos por giga de tráfico e 15 centavos por giga de armazenamento mensal. Cada servidor virtual utiliza o equivalente a uma CPU de 1.7 GHz Xeon, com 1.75GB de RAM, 160GB de disco rígido e uma banda larga de 250Mb/s.
E como não podia ser de outra maneira, nós o testamos com GeneXus. Atualmente estamos correndo o exemplo de GeneXus Ajax hosteado em Amazon EC2. Sabrina Juárez, membro da equipe de Suporte Java de GeneXus, responsável por colocar na Internet a aplicação, nos conta como ela fez:
“Amazon EC2 é um web service e seus métodos estão disponíveis através de uma interface command line. Através de ditos métodos se consegue instalar uma aplicação e colocá-la em funcionamento em qualquer das imagens virtuais de Amazon EC2. É possível, da mesma forma, através de ditos métodos levantar várias instâncias virtuais da mesma imagem e fazer o download segundo as necessidades da empresa.
Uma vez publicada a aplicação, a mesma pode ser acessada, administrada e atualizada de forma segura, já que o dono da imagem possui certificados para o acesso a mesma. No nosso caso, em poucos passos, foi possível publicar a aplicação “Ajax Sample” em uma imagem Linux Fedora.
Amazon fornece uma série de imagens Linux pré-configuradas, que podem ser utilizadas para economizar caminho na preparação do ambiente e na colocação em produção.
Teria sido possível preparar nossa própria imagem, instalando o sistema operativo e demais requerimentos, depois instalar o Ajax Sample e fazer o upload para Amazon. No entanto, optamos por pegar uma imagem já pré-configurada, fornecida por Amazon, como ponto de partida para nosso trabalho.
1. Selecionamos uma imagem das fornecidas por Amazon, que já dispõe do sistema operativo Linux instalado (distribuição Fedora), mais o DBMS Mysql. É possível apropriar-se de uma instância dessa imagem, levantá-la e executá-la, para começar a trabalhar sobre ela. Uma vez que esta instância foi levantada, a conexão à mesma é segura y é através de SSH.
2. Instalamos os requerimentos de software necessários de maneira a deixar pronta a imagem para poder executar uma aplicação web Java (JDK de SUN, motor de servlets Tomcat), e configuramos a base de dados e demais autorizações de acesso.
3. Instalamos o.war correspondente à aplicação “Ajax Sample”, que foi previamente armado usando o GeneXus Deployment Wizard. Isto é, transferimos o war à nossa imagem, para que fosse instalada a web apllication correspondente e ficasse correndo sob o Tomcat. A URL de acesso é a seguinte:
http://domu-12-31-33-00-03-5a.usma1.compute.amazonaws.com:8080/ajaxsample/servlet/hhome”.
No Wiki da comunidade existe um guia detalhado dos diferentes métodos fornecidos por EC2 para levar adiante a publicação de uma aplicação e algumas recomendações úteis ao respeito.