Por qué utilizar S3, el sistema de almacenamiento de Amazon
Una de los grandes problemas a los que nos enfrentamos los desarrolladores a la hora de lanzar un gran proyecto que incluya el almacenamiento y servicio de una gran cantidad de datos es el de conseguir un sistema rápido, con alta disponibilidad y, además, económico.
La 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.
Daniel, muy buen articulo.
Si bien S3 tiene grandes ventajas a la hora de gestionar contenido estatico por todas las razones que enumeraste, me gustaria remarcar alguna desventaja, ya que no vi que hayas hecho referencia a ninguna de ellas.
El hecho de tercerizar el almacenamiento de las imagenes, te hace perder algo de control sobre ella.
¿Que sucede si por algun motivo necesitamos todas las imagenes para hacer alguna migracion o alguna otra cosa? deberiamos hacer un download…, a que costo?
Otro tema…backups?
Ademas, hay que tener en cuenta que uno queda sujeto a la calidad de servicio de ellos, y que si fallan, a corto plazo no queda otra mas que esperar a que lo solucionen.
Para terminar, otro de los sitios que utiliza Amazon S3 es Twitter.
Saludos!
ojala que los desarrollos nuevos permitan la correcta usabilidad y compatibilidad en los sistemas
[…] podeis leer el artículo sobre S3 de Amazon . Se aceptan críticas y todo tipo de […]
Gracias Pichongol.
Tienes razón en cuanto a si algún día necesitas portar tus contenidos o hacer backup, la cosa está complicada …
En cuanto a la calidad del servicio, debo decir que de momento (a excepción de una única caida de 2 horas desde que yo lo conozco), está siendo excelente.
El ancho de banda es enorme, por lo que los tiempos de acceso son muy buenos.
Si ellos fallan … pues por supuesto , no queda otra que esperar , pero igualmente ocurre si tienes alojado tus archivos en un servicio tradicional de hosting. Para compensar un poco, como dije en el artículo, Amazon ofrece algunas formas de indemnización en caso de disminuir el 99% de disponibilidad. Que no nos soluciona la caida … pero algo es algo.
Aún así, creo que compensa el gasto que supondría otro tipo de servicio o el montar tu propio Data Center.
hey podrias hablar de la aplicacion prefabricada sobre convertir videos, es que alguien me dijo que lo hacia, pero nose como , talvez puedes explicarme algo de eso.
gracias
Que diferencias hay con un servidor dedicado? en the planet por 69 euros tienes 80 gigas de disco duro y 750 Gb de ancho de banda. No le veo sentido alojar archivos ahi, sale mas caro.
He puesto theplanet por ser los mejores pero tienes servidores por 80 dolares en otras compañias con 500 GB y 2000 GB de trafico.
S3 se ha vuelto un importante motor de muchas nuevas startups. Y con los servicios de base de datos y de procesamiento, a futuro podrian consolidarse aún como un motor más importante. Oimos de la caida y aunque fue breve, también demostro que el servicio puede fallar como prometieron, lo que seguramente les ayudará a ir mejorando.
Ahora, Daniel, te quería preguntar en tu experiencia personal con minube, que factores consideraron para utilizar S3 aparte del costo. Cómo debería un usuario evaluar si este servicio es una buena solución para su proyecto. Conoces algo al respecto?
Mi experiencia con S3 es totalmente satisfactoria, tanto desde el punto de vista de un usuario que usa S3 para fines profesionales, como para fines personales.
Los factores que nosotros tuvimos en cuenta desde minube a la hora de usar S3 como plataforma de almacenamiento, además de los motivos económicos, era su sencillez de implementación y la garantía que nos daba el confiar nuestros datos a un gigante de internet como es Amazon.
Es cierto que ha habido algúna caida pero, ¿ qué empresa de hosting no ha sufrido una cadia ?. Incluso si barajasemos la posibilidad de construir nuestro propio Data Center y confiarlo a uno de nuestros propios empleados, ¿nos asegura ésto una disponibilidad del 100%?. Yo creo que no.
Es cierto que si tenemos algún problema técnico no podemos hacer más que esperar, y no podemos emprender ningún tipo de acción para agilizar la recuperación del sistema, pero creo que el resto de beneficios compensan ese pequeño handicap.
Además estoy completamente de acuerdo contigo Christian, la caida de Amazon no conseguirá otro efecto más que el de incentivar una mejora del sistema para evitar volver a sufrirla.
Si un usuario tuviera que evaluar si el servicio es una buena opción, yo le invitaría a tener en cuenta que con S3 no solo ahorrará dinero, sino que evitará esas otras muchas preocupaciones que cualquier otro servicio tradicional nos da, desde la escalabilidad (tanto en almacenamiento, como procesado o ancho de banda), hasta problemas mayores típicos de un DataCenter propio como seguridad, consumo energético o incluso refrigeración de nuestras máquinas…
Creo que S3 es ideal para tanto para los pequeños proyectos, como para los medianos, y ¿ por qué no ?, hasta para los grandes. No es infalible 100%, pero ¿qué sistema lo es?
buen artículo. ha llevado su tiempo leerlo pero muy instructivo. gracias.
No soy ingeniera ni programadora web, pero tengo conocimientos generales… y quisiera saber algo:
1. Éste funciona igual que un servidor dedicado?
2. Permite configurar cuentas de correo?
Hola digital,
en cuanto a tus dos preguntas:
S3 no es, ni funciona como un servidor dedicado. Imagínatelo simplemente como una unidad de almacenamiento masivo on-line, que te permite acceder a sus archivos almacenados a través de una url. NO tiene ningún otro tipo de servicios (servicio web, correo, ftp, etc…), ni tampoco permite su instalación, ya que como te digo, es simplemente lugar de almacenamiento.
Si lo que buscas es algo parecido a un servidor dedicado, echale un ojo a EC2 (Elastic Computing Cloud), también de Ámazon.
He desarrollado una librería en C# para el uso del S3 mediante REST que facilita mucho su uso. El código es totalmente abierto y podeis usarlo y mejorarlo en todo lo posible.
Tiene muy buena pinta
Muchas han sido las empresas que se han beneficiando con S3, entre ellas está la popular comunidad Slideshare.net para compartir presentaciones. Todas ellas se han ahorrado grandes sumas respecto al servicio de alojamiento tradicional.
[…] public links >> amazons3 Por qué utilizar S3, el sistema de almacenamiento de Amazon Saved by kashafrese on Thu 25-9-2008 wordpress MU Saved by urbangermany on Mon 15-9-2008 Elliot […]
Gracias Daniel, dejaste muy en claro que son los servidores S3 de Amazon. Dio la casualidad que me toca trabajar en un proyecto que incluye el uso de este servicio brindado por Amazon y a decir verdad no tenia la más palida idea de lo que era. ¡Pero ahora lo tengo muy claro! ¡Gracias!.
Por favor, puede alguien ayudarme con las siguientes dudas:
1.- Amazon traja de con autores independientes ó solo con Editoriales (libros digitales).
1.- cuánto gana (%sobre el precio de venta) un autor ó editorial de un libro digital vendido en amazon.
Por favor, puede alguien ayudarme con las siguientes dudas:
1.- Amazon trabaja con autores independientes ó solo con Editoriales (libros digitales).
2.- Qué ganancia percibe (%sobre el precio de venta) un autor ó editorial de un libro digital vendido en amazon.
[…] programas que nos pueden ayudar a realizar esta tarea en algunos minutos son Time Machine, S3 de Amazon o servicios gratuitos como […]
[…] programas que nos pueden ayudar a realizar esta tarea en algunos minutos son Time Machine, S3 de Amazon o servicios gratuitos como […]
[…] programas que nos pueden ayudar a realizar esta tarea en algunos minutos son Time Machine, S3 de Amazon o servicios gratuitos como […]
Gracias por tu articulo!
Tengo una pregunta, a ver si me la entiendes.
Data Transfer es la cantidad de datos (jpg, mpg, etc) por mes. Muchos Gigas, en el caso de Amazon. Pero mi problema es con el ancho de banda. Si tuviera un software (2 megas), cuantas personas al mismo tiempo podrian descargar el exe a una velocidad de, por ejemplo, 5 kb/s? Esa es para mi la pregunta mas importante, no tanto el data transfer mensual: es, en un segundo dado, cuantos usuarios aguantaria el servidor de amazon para bajar mi programa a esa velocidad (5 kb).
Por otro lado, ya se que hay limitaciones en cuanto a la velocidad de conexion por parte del usuario a su ISP, pero mi pregunta es la velocidad a la que Amazon pueda servir esos kb a los (mis) usuarios. De verdad, tengo semanas buscando este dato, y como que no se como funciona todo eso.
He estado buscando en wiki, el faq de rapidshare, de megaupload, y no encuentro nada de nada.
Una vez le pregunte a un amigo y me dijo que esos sitios usaban (muchos, pero que muchos) routers que facilitaban todo el proceso a lo interno de ellos.
Para la proxima, a donde apunto para conseguir ese tipo de informacion? Arquitectura de Networking? Realmente no se mucho de esto, lo mio es C#. Cualquier respuesta a mi duda te la apreciaria. Y si prefieres contestar a mi correo, mejor.
Y si te inspiras a escribir tooodo un articulo sobre este punto en concreto, seria excelente. Y me avisas, porfa. Gracias.
Cordialmente,
Josh
P.D.:Otra cosa: en megaupload requieren la introduccion de caracteres (generados por megaupload) para corroborar que quienes acceden a sus archivos son humanos, no bots. No pasa lo mismo con S3, verdad? Porque seria muy poco profesional que antes de que un usuario descargue mi archivo ande tipeando caracteres por ahi…
[…] http://www.maestrosdelweb.com/editorial/por-que-utilizar-s3-el-sistema-de-almacenamiento-de-amazon/ […]
Yo estoy intentando montar un sitio de videos online 2.0 y necesitaría saber si para pasar los videos a FLV para ser visualizados se puede instalar algo en S3 o hay que hacerlo de manera externa (ya que dices que es sólo para almacenamiento)
[…] caso de Amazon Web Services es emblemático y los de Sensepost lo analizaron con detenimiento. El proceso de utilización del […]
[…] Amazon S3: Es un servicio de pago, pero al igual que Google App Engine nos permite escalar paulatinamente a la vez que nuestro proyecto va teniendo éxito sin necesidad de contratar o migrar a nuevos servidores. Por ejemplo Twitter almacena las fotos de los perfiles en Amazon S3, prueba más que suficiente de la garantía de escalabilidad del servicio. También podría citar innumerables pequeños proyectos que lo utilizan, por lo que los precios son relativamente asequibles sin tarifas planas, pagando únicamente por los recursos utilizados. Si aun tienes dudas puedes consultar este excelente post de maestros del web. […]
[…] un proxy en frente de los servidores web, y mover el contenido estático a un CDN profesional como Amazon S3/CloudFront o […]
Hola Fillito, muy buen artículo!
Yo tengo una cuenta creada pero aun no sé como crear un bucket, si me pudieras dar alguna ayuda te lo agradecería pila, ya que me lo estan pidiendo para el trabajo.
Saludos!!!
Aunque llego tarde. Queria agradecer tan buen post.
Ahora estoy migrando algunos servicios a Amazon S3, y a Amazon SQS. Quizas en dos meses migre a Amazon Ec2 Pero para eso necesito un poco mas de tiempo.
DragonDisk is an easy-to-use S3 client for Windows and Linux with an interface similar to the Windows Explorer’s. ( http://www.dragondisk.com )
Muy buen post. Pero tengo un problema a la hora de transpasar archivos entre subcarpetas, es posible esto? Quiero hacer tener un backup dentro del mismo amazon S3 de los archivos, estoy usando la api de s3.
Por favor alguien me puede explicar que significa eso? Porque yo tengo un hosting baby con hostgator y mi transferencia de datos y alojamiento es ilimitado, entonces para que me serviria amazon s3 si al contrario tendria que pagar por cada archivo que usen, en cambio con hostgator tengo todo ilimitado
de que sirve? alguien me explica?
gracias
[…] varias copias de los mismos datos en ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento, además de provocar la falta de consistencia de […]