Seguimos repasando las últimas tendencias en desarrollo de aplicaciones web y hoy le toca a la que en mi opinión es la alternativa más interesante aparecida en los últimos años, los Amazon Web Services. De ellos se ha escrito ya mucho y poco o nada voy a descubrir: los aparecidos después de su primera etapa (aquellos que atacaban a su base de datos de productos) son los que articulan un nuevo y revolucionario modo de plantearse la arquitectura de una aplicación online. Muchos los meten en el mismo saco que a desarrollar sobre APIs de terceros, pero en este caso no se accede a datos o funcionalidades ajenas, por lo que creo oportuno distinguirlos. Veamos.
La propuesta de S3 y EC2 son la de externalizar dos aspectos del hosting de nuestro proyecto web. S3 es un sistema de almacenamiento al que sólo se puede acceder a través del web service mientras que EC2 es algo más complicado de explicar, lo que ofrecen es capacidad de procesamiento. Con S2 “subes” una imagen de tu servidor y la ejecución queda delegada en las máquina de Amazon. En el primer caso se paga en función de la información almacenada y descargada, en el segundo del tiempo de ejecución consumido.
Las ventajas de apostar por los Amazon Web Services son múltiples y variadas:
- Costes: la palabra mágica. S3 y EC2 salen más baratos de un hosting comparable en calidad a lo que ofrece Amazon.
- Escalabilidad: almacenamiento “infinito” según la necesidad, capacidad de proceso también bajo demanda. Lo bueno además es que se pagan según uso ¿qué sales el primer dÃa, va a ser una bomba y vas a tener millones de visitas? Estarás preparado sin necesidad de pagar por un servidor que te sobre durante el resto del ciclo de vida del proyecto. Lo que nos lleva a otra ventaja: respuesta a picos de demanda.
- Foco en tu servicio: externalizar significa – cuando se hace bien – que puede despreocuparte de lo que no es el foco de tu servicio porque de eso se encargará el especialista. Olvidarse de balanceo de carga, CPDs, mantenimiento de grandes servidores, contratación del hardware y de la adquisición del conocimiento para todo ello.
- Disponibilidad y velocidad: es posible que seamos muy buenos administrando y montando servidos, es poco probable que en eso seamos mejores que Amazon. Algunas pruebas que he consultado no lo sitúan como la opción más eficiente en tiempo de respuesta, pero “casi” y a precios más competitivos que tener una supermáquina gestionada por nosotros.
Creo que resulta evidente de que la propuesta de los Amazon Web Services me parece realmente revolucionaria y que presenta muchas ventajas. En el “debe” podrÃamos anotar que de momento supone depender de un único proveedor por lo que la alternativa, si nos presentan problemas, serÃa encargarnos del hosting por nosotros mismos, algo para lo que, de la noche a la mañana, nadie está preparado. Otro problema es que no se firma por contrato el nivel de servicio que provee Amazon, por lo que de aparecer problemas de rendimiento, te los comes.
Y poco más, en realidad Amazon hizo una jugada genial con los Amazon Web Services. Ellos por su parte tenÃan un gran conocimiento para construir grandes sistemas de alto rendimiento (recuerdo la primera vez que entré hace años en la tienda y cuando volvÃ, ¡se acordaba del carrito que habÃa rellenado!, ¡lo guardaban en base de datos!) y por otro también están sobredimensionados para no pasar problemas. Juntas ambas cosas y lo comercializas en forma de estos web services que te permiten rentabilizar tu almacenamiento y capacidad de procesamiento sobrante. Sencillamente, genial.
Enlaces relacionados:
- Amazon Flexible Payments disponible: el nuevo web service de Amazon, para habilitar pagos dentro de nuestra aplicación web.
- Amazon S3 y el ahorro de costes: un caso de éxito por parte de Smugmug.
- Meebo permite compartir ficheros tirando de Amazon S3 y EC2: otro caso de uso.
- Albert Armengol analiza la apuesta de Amazon.
- Uberbin: Mariano sobre “la nube” de Amazon.
- Horaci y las pruebas de EC2. Hay que reconocer que la no persistencia de los datos es una limitación importante de este servicio.
- blog oficial: toda la información y los enlaces a la documentación.
Hola:
He creado un tutorial sencillo sobre como crear instancias de EC2 con muchas imagenes y bien explicado. Espero que os guste:
http://www.bandin.info/2012/04/manual-de-uso-de-amazon-ec2-creando-maquina-virtuales-gratis
Saludos
El tema de la persistencia lo comparto, de hecho es una limitación importante. La detección de necesidad de instancias en EC2 no lo habÃa pensado, la verdad, implica monitorizar el servicio para ello y es trabajo extra (aunque compartido con la detección de que te quedas corto de máquina si el hosting es tuyo)
Hola!
Me parece interesante la alternativa de Amazon, tiene algunas pegas al respecto. La información almacenada en EC2 no es persistente, con lo que se pierde tras la caida de la instancia. Esto te obliga a tener algún master externo a Amazon para mantener la información.
Otras de las cosas que me planteo es ¿como detectar que necesitas más capacidad de computo?, es decir, en que basarse para saber cuando levantar una nueva instancia en EC2 y cuando eliminarla, para automatizar el proceso.
Existe un motor de almacenamiento para MySQL [1], con el que desde tu base de datos local, puedes utilizar el servicio de S3 para almacenar los videos, fotos, en general, los archivos de gran tamaño (blobs).
Puede ser útil par utilizarlo desde EC2, como forma de hacer persistente nuestro datos, a la espera de que las transacciones entre EC2 y S3 sean gratuitas [guiño].
[1] http://fallenpegasus.com/code/mysql-awss3/
Saludos! (joer que largo quedó)
Lo de como saber cuando necesitas mas computo lo solucionas monitorando con Zabbix
Nos parece un servicio innovador, gracias por el análisis.