Esta semana me ha tocado pelearme (otra vez) con nuestro proveedor de hosting en Alemania por un disco duro IDE que ha decidido pasar a mejor vida en el servidor dedicado. Tres días de cruce de tickets de soporte, el servidor de desarrollo caído, y yo tirándome de los pelos porque tengo poca paciencia. El clásico drama de la infraestructura física que todos los que administramos sistemas sufrimos en silencio.
Y justo en medio de este caos, he sacado algo de tiempo de madrugada para jugar con el acceso a la beta de un servicio del que vengo leyendo desde agosto en algunos foros y que creo que va a dar muchísimo que hablar: Amazon Elastic Compute Cloud, o simplemente EC2.
Adiós al hierro, hola a la virtualización bajo demanda
A ver, el concepto de virtualizar sistemas operativos no es nuevo; usamos VMware GSX Server desde hace tiempo para separar entornos de pruebas. Pero lo que está haciendo Amazon (sí, la tienda de libros y discos) es una locura. En lugar de atarte a un contrato mensual de 150€ o 300€ por una máquina física, te alquilan "instancias" virtuales y te cobran por hora de uso real.
Concretamente, a 10 centavos de dólar la hora te proporcionan una máquina virtual basada en Xen con el equivalente a un procesador Xeon a 1.7 GHz, 1.7 GB de RAM y 160 GB de disco. Lo mejor de todo no es el precio ridículamente bajo, sino que no hay que llamar a ningún comercial trajeado ni firmar contratos de permanencia: lo controlas todo a través de una API web pura y dura.
Entrando al barro: levantando un servidor con un comando
Para probarlo, me descargué las Amazon EC2 Command-Line Tools. Están desarrolladas en Java, así que necesitas tener una JRE funcionando en tu equipo local. La parte más tediosa es configurar los certificados X.509 y las claves RSA para la autenticación, pero una vez tienes tu entorno bash configurado, la magia ocurre directamente en la consola.
En lugar de meter un CD de instalación o montar una ISO, usas una AMI (Amazon Machine Image). Amazon ofrece un par de ellas oficiales para empezar. Yo he usado una imagen base con Fedora Core 4. Para levantar la máquina, simplemente ejecutas esto:
# Lanzar una pequeña instancia de Fedora Core 4
ec2-run-instances ami-2bb65342 -k mis-claves-ec2 -g default
En menos de tres minutos, tiras un ec2-describe-instances y ves que Amazon te ha asignado un hostname público dinámico. Abres tu cliente SSH favorito (PuTTY en mi caso), apuntas a ese host con tu clave privada, y de repente el prompt te devuelve el control. Eres root en un servidor Linux en la nube, recién salido del horno.
Una vez dentro, he tirado de yum install httpd mysql-server php para montar un entorno LAMP básico. He subido una base de datos y los archivos de una de mis instalaciones de WordPress y estaba sirviendo páginas a toda velocidad en un tiempo récord. No tardé nada.
Luces y sombras: ¿qué futuro le espera a esto?
Obviamente, no todo es perfecto. El mayor inconveniente técnico ahora mismo es que el almacenamiento de la instancia es efímero. Si tu máquina hace crash, se reinicia o decides apagarla, pierdes absolutamente todos los datos del disco que no estuvieran "planchados" en la AMI original. Es decir, si metes tu base de datos MySQL ahí y el servidor físico de Amazon se reinicia, te quedas a cero.
Ahora mismo, la única solución viable es hacer un apaño y enviar backups continuos a su otro servicio de almacenamiento, Amazon S3, usando un simple script programado en el cron. Por esta razón, para bases de datos relacionales en producción serias, sigo prefiriendo tener un RAID 1 de discos SCSI físicos en una máquina bajo mi control absoluto.
Sin embargo, como ingeniero, las posibilidades de futuro me vuelan la cabeza. Imagina poder levantar veinte servidores web clonados de forma automatizada mediante un script justo el día que lanzas una campaña importante, ponerles un balanceador de carga delante, y apagarlos por la noche para dejar de pagar al instante. Ese nivel de agilidad es completamente impensable con la infraestructura de hosting que conocemos hoy.
Todavía estamos en una beta muy cruda, pero si Amazon consigue solucionar el tema del almacenamiento persistente, la persistencia de las IPs y la comunidad empieza a empaquetar sus propias imágenes de sistema, esto va a cambiar por completo la arquitectura de nuestras aplicaciones web. El hosting dedicado tradicional tiene los días contados si no espabilan.
¿Vosotros habéis probado ya el servicio o seguís peleándoos con el soporte técnico para que os cambien el módulo de memoria estropeado?
PD: No me paga Amazon.