Amazon WebservicesLa mayoría de proveedores de hosting nos ofrecen la posibilidad de contratar servidores con gran capacidad de almacenamiento, pero suelen ir ligados una tarifa de pago por transferencia de datos, por lo que si lo que buscamos es servir archivos de gran tamaño como fotos o vídeos, nos encontraremos con que la factura a final de mes será más alta de lo que nos imaginábamos al principio.

Justo en ésta época en la que las nuevas conexiones de banda ancha nos permiten acceder a contenidos cada vez más pesados, y la demanda de servicios de publicación y reproducción on-line de contenidos multimedia se ha visto incrementada, Amazon ha desarrollado AWS (Amazon Web Services), un conjunto de servicios que he hecho la vida un poco más fácil y economizada a los desarrolladores que se han propuesto lanzar proyectos de este tipo, como es el caso de minube.com.

Dentro de AWS encontramos S3 (Simple Storage Service), un servicio de almacenamiento masivo, totalmente transparente, que nos permite colgar todos nuestros datos en los Data Center de Amazon sin preocuparnos por ningún tipo de límite. Fotos, vídeos…

Capacidad, Seguridad y Disponibilidad

Uno de los puntos fuertes de S3 es su transparencia a la hora de alojar nuestros datos. Nunca tendremos que preocuparnos por la capacidad de almacenamiento que tiene nuestra cuenta, ya que dispondremos de un único contenedor con una capacidad virtualmente ilimitada. Cuanto más almacenemos, más pagaremos.

Físicamente, nuestros datos estarán distribuidos por los Data Center de Amazon, pero es algo que permanece ajeno a nosotros y de lo que jamás tendremos que preocuparnos. La escalabilidad es un concepto que con S3 se vuelve superfluo. Amazon ya se encarga por nosotros de disponer de nuevas máquinas y más unidades de almacenamiento, y de hacer que todo funcione sin que estemos al tanto de ello.

Para la organización de nuestros archivos, Amazon ha creado tres conceptos:

  • buckets: son algo parecido a un directorio o carpeta de nuestro sistema operativo, donde colocaremos nuestros archivos. Los nombres de los buckets están compartidos entre toda la red de Amazon S3, por lo que si creamos un bucket, nadie más podrá usar ese nombre para un nuevo bucket.
  • objects: son las entidades de datos en sí, es decir, nuestros archivos. Un object almacena tanto los datos como los metadatos necesarios para S3, y pueden ocupar entre 1 byte y 5 Gigabytes.
  • keys: son una clave única dentro de un bucket que identifica a los objects de cada bucket. Un object se identifica de manera unívoca dentro de todo S3 mediante su bucket+key.

En cuanto a seguridad, Amazon ha implementado un sistema de permisos de acceso a archivos por usuario (un poco simple pero suficiente para cualquier propósito), a los que podremos dar capacidad de “Lectura”, “Escritura” o “Control Total”.

Por defecto tendremos tres usuarios: Owner (referente al usuario que alojó el archivo), Authenticated Users (referente a usuarios autenticados en Amazon), Everyone (referente a todos los usuarios no autenticados, es decir, cualquier cliente en todo internet). Aunque podremos añadir nuevos usuarios de S3 con permisos específicos para nuestros datos.

Amazon nos asegura un 99,9% de disponibilidad, lo que iguala cualquier sistema de alta disponibilidad que podamos contratar, y nos llegaría a devolver hasta un 25% de lo facturado en caso de una una disminución de disponibilidad por debajo del 99%.

Metodos de Acceso, Upload y Download

Amazon dispone de una API para la comunicación de nuestras aplicaciones con S3, que acepta peticiones mediante HTTP Request cifradas con Crypt/HMAC. Cada acceso que hagamos a esta API deberá estar validado mediante dos claves que nos proporciona Amazon y que, junto a un hash basado en una semilla temporal, información de acceso, y la key de destino, generan una firma que el sistema validará.

Estas peticiones HTTP nos permitirán el upload de archivos, modificación de permisos, eliminación de objects, creación de buckets… En definitiva, todas las acciones necesarias para administrar nuestro S3. Toda la información en cuanto accesos y códigos de ejemplo se pueden encontrar en la documentación oficial.

Para el “download” de archivos tendremos dos opciones :

  • HTTP Requests para archivos con acceso exclusivo de usuarios validados o propietario.
  • URL HTTP para archivos con acceso a lectura habilitado para el usuario “Everyone”

Cada archivo en S3 posee una URL única, lo que nos facilitará mucho el poner a disposición de nuestros clientes todos los datos que almacenemos.

Integración con aplicaciones y limitaciones de S3

S3 permite el acceso al servicio mediante HTTP Request, lo que lo hace virtualmente accesible desde cualquier aplicación que nos propongamos integrar.

S3 es sólo un servicio única y exclusivamente de almacenamiento, por lo que intentar colgar aplicaciones web en S3 nos será prácticamente imposible, ya que no dispone de intérpretes de lenguajes dinámicos y no nos será útil más que para colgar páginas estáticas.

Tarifas y Servicios

El servicio S3 se factura de cuatro maneras distintas, y conjuntas:

  • Almacenamiento mensual: cuanto más almacenemos en S3, más pagamos. Se trata de una tarifa por GB almacenado/mes.
  • Transferencia de Datos: una tarifa decreciente en la que cada GB transferido nos costará más barato cuanto más transfiramos.
  • Accesos GET : solicitudes de archivos. Cada acceso a un archivo nos cobrarán.
  • Accesos PUT/LIST: solicitudes de envío o solicitud de listados.

A pesar de todo el desglose de facturación, que nos pueda parecer que nos cobran por todo, los servicios de Amazon son ridículamente baratos. Para que os hagáis una idea, unos 2,5 GB de datos almacenados y una transferencia de 15GB al mes, no llegarán a los 4 dólares (2,69€) mensuales.

Podéis hacer el cálculo de cuánto nos podría costar esto, o una cantidad mayor proporcional, en un servicio de hosting tradicional.

S3 en el Escritorio

Una herramienta que seguro ayudará mucho a cualquier desarrollador que empiece a trabajar con S3 es S3Fox, una extensión de Firefox que nos da acceso a nuestra cuenta S3 con una GUI muy similar a un cliente FTP (con muchísimas menos funcionalidades por supuesto).

Sobre todo será útil para acceder a nuestra cuenta y comprobar si nuestra integración funciona correctamente, aunque también se presta muy bien como interfaz gráfica para administrar nuestro S3 como si de una unidad de almacenamiento virtual se tratase. Su punto negativo es el de depender de Firefox para poder usarlo.

Existen también herramientas estrictamente de escritorio, que nos permiten montar nuestra cuenta S3 como una un unidad de red, para poder navegar por nuestro S3 como si estuviese integrado en nuestro propio Sistema Operativo, como Jungle Disk. Es una herramienta de pago, pero si necesitas disponer de tus archivos en varias máquinas distintas y buscas modo transparente de tener acceso a ellos, vale la pena los 20$ que cuesta.

Aunque existen algunas otras aplicaciones para integrar S3 en nuestros escritorios de casi todos los Sistemas Operativos del mercado, no hay que olvidar nunca que S3 es un servicio pensado para su uso e integración en aplicaciones, que es donde obtendremos siempre los mejores resultados.

Yo personalmente he tenido bastantes problemas con aplicaciones que integran S3 en escritorio y, aunque es verdad que algunas funcionan muy bien y cumplen perfectamente su cometido, no recomiendo su uso para operaciones críticas.

Casos de Éxito

El caso de éxito que mejor conozco es el del proyecto minube.com. Si no fuera por AWS no podríamos haber lanzado nuestra comunidad de la manera que la hemos lanzado.

Todos nuestros contenidos multimedia son almacenados en S3 y disponemos de varios GB de imágenes y videos almacenados que, si hubiésemos intentado alojarlo en alguna empresa de hosting o montar un DataCenter propio, habría supuesto una inversión económica enorme, incluso poco asumible.

Los gastos de almacenamiento de más de 16000 imágenes y varios cientos de videos, servidos para, pongamos, por ejemplo, más de 3000 usuarios diarios apenas llegan a los 5 dólares mensuales. Si hacemos cuentas podríamos darnos cuenta rápidamente que un proyecto que acaba de comenzar se ahorraría no sólo una inversión inicial que podría estar entre los 10,000 y 20,000 dólares , así como unos pagos mensuales de más de 500 dólares.

Otro caso de éxito de S3 ha sido Smugsmug. Ofrecen almacenamiento ilimitado de fotos para sus usuarios y utilizan S3 tanto para el alojamiento de las mismas, como a sus backups (más de 100Terabytes). Smugmug ha anunciado en su blog que en su primer año de servicio han estimado su ahorro en más de 1,000,000 dólares.

Conclusiones

Desde mi punto de vista, Amazon ha dado un gran empujón a todos los desarrolladores para facilitarnos una revolución del mundo web. A partir de ahora, los costes de mantenimiento e infraestructura no será un problema para todos aquellos que piensen en desarrollar un proyecto con una gran necesidad de almacenamiento de datos. Por un precio casi ridículo tendremos un servicio de almacenamiento masivo, de alta disponibilidad, y del que no tendremos que preocuparnos por escalar.