Amazon lanzó hace algunos días la beta limitada de un nuevo servicio web: Amazon Elastic Compute Cloud (Amazon EC2). Hace unos meses atrás, Amazon había lanzado el Simple Storage Service (o S3), un sistema de almacenamiento controlado a través de la web. EC2 es similar al S3, pero en este caso lo que provee es la capacidad de proceso.
El nuevo servicio de Amazon presenta un verdadero ambiente virtual, que al unirlo con el espacio del S3, permite utilizar la interfaz de servicios web que requieran las máquinas que se usan, cargarlas con aplicaciones de un ambiente normal, manejar los permisos de acceso a la red, y correr las imágenes usando cuantos sistemas se quiera. Básicamente esta beta permite a los desarrolladores tener el acceso a poderosas computadores sin tener que gastar grandes sumas de dinero.
EC2 reduce el tiempo requerido para obtener y reiniciar las instancias de un nuevo servidor en minutos, permitiendo una capacidad de rapidez en escala, dependiendo de los requerimientos. EC2 cambia la economía de la computación, permitiendo pagar solo por la capacidad que efectivamente se usa. De hecho, es prácticamente la solución ideal para los desarrolladores, ya que esta beta de Amazon permite que cualquiera con la capacidad de desarrollar ideas utilizando la programación, puede hacerlo de forma prácticamente inmediata, pagando únicamente por los recursos de almacenaje y proceso.
Los desarrolladores alquilarán “la nube” por 10 centavos de dólar la hora, más 20 centavos por giga de tráfico, y 15 centavos por giga de almacenamiento mensual. Cada servidor virtual utiliza el equivalente a un CPU de 1.7 GHz Xeon, con 1.75GB de RAM, 160GB de disco duro, y un ancho de banda de 250Mb/s
Y como no podía ser de otra manera, lo probamos con GeneXus. Actualmente tenemos corriendo el ejemplo de GeneXus Ajax hosteado en Amazon EC2. Sabrina Juárez, miembro del equipo de Soporte Java de GeneXus, la responsable de “colgar” dicha aplicación, nos cuenta cómo fue que lo hizo:
“Amazon EC2 es un web service, y sus métodos están disponibles a través de una interfaz command line. A través de dichos métodos se logra instalar una aplicación y ponerla en funcionamiento en cualquiera de las imágenes virtuales de Amazon EC2. Es posible igualmente, a través de dichos métodos, levantar varias instancias virtuales de la misma imagen, y bajarlas, según las necesidades de la empresa.
Una vez publicada la aplicación, la misma se puede acceder, administrar y actualizar en forma segura, ya que el dueño de dicha imagen posee certificados para el acceso a la misma. En nuestro caso, en pocos pasos, fue posible publicar la aplicación "Ajax Sample" en una imagen Linux Fedora.
Amazon provee una serie de imágenes Linux preconfiguradas, que se pueden utilizar para ahorrar camino en la preparación del ambiente y la puesta en producción.
Hubiera sido posible preparar nuestra propia imagen, instalando el sistema operativo y demás requerimientos, luego instalar el Ajax Sample, y subirla a Amazon. Sin embargo, optamos por tomar una imagen ya preconfigurada, provista por Amazon, como punto de partida para nuestro trabajo.
1. Seleccionamos una imagen de las provistas por Amazon, que ya cuenta con el sistema operativo Linux instalado (distribución Fedora), más el DBMS Mysql. Es posible apropiarse de una instancia de esa imagen, levantarla, y ejecutarla, para comenzar a trabajar sobre ella. Una vez levantada esa instancia, la conexión a la misma es segura, y es a través de SSH.
2. Instalamos los requerimientos de software necesarios, de manera de dejar lista la imagen para poder ejecutar una aplicación web Java (JDK de SUN, motor de servlets Tomcat), y configuramos la base de datos y demás permisos de acceso.
3. Instalamos el .war correspondiente a la aplicación "Ajax Sample", que fue previamente armado usando el GeneXus Deployment Wizard. Esto es, transferimos el war a nuestra imagen, para que fuera instalada la web application correspondiente, y quedara corriendo bajo el Tomcat. La URL de acceso, es la siguiente:
http://domu-12-31-33-00-03-5a.usma1.compute.amazonaws.com:8080/ajaxsample/servlet/hhome
En el Wiki de la comunidad hay una guía detallada de los diferentes métodos provistos por EC2 para llevar adelante la publicación de una aplicación, y algunas recomendaciones útiles al respecto.