Mi experiencia con Amazon S3

La semana pasada cumplí más de tres años utilizando el servicio de Amazon llamado S3. Para el que no lo conoce Amazon cuenta con una muy completa suite de servicios para que los programadores tengamos a nuestra disposición una de las más grandes infraestructuras del mundo para mejorar los servicios que prestamos.

comentarios sobre Amazon S3

De todos los servicios disponibles dentro de Amazon Web Services (AWS) pude probar algunos, pero si tengo que recomendar alguno ese sería S3.

¿Que es Amazon S3?

Amazon S3 es un servicio de almacenamiento para internet. Se encuentra diseñado de tal manera que los desarrolladores pueden utilizar este servicio en cuestión de minutos y con una configuración que la podría crear cualquier persona independientemente de sus conocimientos informáticos.

Amazon siempre se caracterizo por ser una empresa que se preocupa por la satisfacción de sus clientes, muestra de ello es la cantidad de tutoriales disponibles para aprender a utilizar sus servicios. Si todavía no probaron sus AWS no tengan ningún miedo, les garantizo que encontraran un tutorial para lo que quieran realizar.

Este servicio cuenta con una consola de uso muy similar a la de cualquier gestor de archivos de un alojamiento web, pero con algunos detalles que lo vuelven de lo más interesante, por ejemplo, la capacidad de escribir, leer o eliminar objetos con un tamaño que va desde 1 bytes hasta los 5TB. Todo esto sin despeirnarse.

Otro factor que lo convierten en una solución ideal para servicios web es que los archivos se pueden almacenar por regiones, esto favorece la velocidad con la que los diferentes archivos son servidos a nuestros clientes. En USA tenemos muchísimas regiones, Asia, Singapur, Tokio, Sidney y Brasil (Sao Paulo) son algunas de las opciones disponibles. Todo esto favorece reducir la latencia al solicitar un archivo.

regiones de amazon s3

Consumo de Amazon por región (cloudyn)

Nuestros archivos son persistentes, es decir que un archivo no va a abandonar nunca la región seleccionada salvo que nosotros decidamos hacerlo.

Todos los documentos alojados dentro de S3 se encuentran seguros, para ello Amazon cuenta con varios sistemas de cifrados, ademas de tener un excelente sistema a prueba de fallos lógicos, evitando que podamos perder un solo byte de nuestra preciada información.

La estructura de Amazon S3

Gestionar nuestros datos es sumamente simple, no obstante debemos entender algunos detalles para utilizar nuestra cuenta, estos son:

Buckets

Un bucket es una especie de directorio, los mismos cuentan con nombres únicos dentro de toda la infraestructura de Amazon, eso se traduce en que la utilización de un nombre de buckets es única en toda la red de la empresa.

Las limitaciones de los buckets son pocas pero existen, una de ellas es que un bucket es intransferible, solo el propietario tiene control sobre él, no obstante un buckets puede ser eliminado una vez vacío y liberado para que otro usuario dentro de Amazon capture ese nombre.

En cuanto a la creación del nombre de buckets las limitaciones son: un mínimo de 3 caracteres y un máximo de 63. Puede contener números pero por ejemplo no podemos llamarlo como un numero de IP.

Objects

Los objetos son en sí mismo los archivos, ellos se alojan con la forma (llave-valor). Estos objetos se ubicaran dentro de los buckets que creemos.

Además cada uno de estos objetos tienen la posibilidad de recibir la configuración de metadatos, estos son fundamentales de cara a configurar como queramos que se comporten e interactúan con los distintos navegadores. Por ejemplo podemos configurar si deseamos que los objetos sean cacheados por el navegador, algo que se traduce directamente en mejor rendimiento y ahorro de transferencia de datos.

Gestión de archivos

Subir un archivo en Amazon S3 es muy sencillo. La forma básica de hacerlo es utilizando la consola, para ingresar a ella solamente necesitamos nuestros datos de acceso o cuenta de Amazon.

consola amazon

Dentro de ella vamos a subir nuestros documentos como si se tratase de un gestor de archivos de cualquier alojamiento convencional.

Otra forma de hacerlo es mediante el uso del API de Amazon, hay varios programas que funcionan con ella y terminan reproduciendo la metodología que la de un FTP convencional, en Mac me gusta mucho Transmit, colocamos nuestros datos y trabajamos, no tiene complicaciones.

Hay algo que al principio siempre olvidaba hacer y es dar los permisos para que un archivo pueda ser accedido desde el exterior de la cuenta. Esto lo vamos a ver más adelante en el caso practico.

Precios

Los precios de Amazon S3 pueden confundir bastante al principio. Esto se debe a que los servicios se cobran desde tres puntos distintos:

  • Precio por GB de almacenamiento. Se cobra por la cantidad de gb que estamos almacenando.
  • Precio por GB de transferencia. Esto corresponde al total de archivos que transferimos por mes y varia según la región. Se facturan las entradas, salidas.
  • Precio por solicitud. Se cobran por 1000 solicitudes, estas son solicitudes del tipo PUT, COPY, POST o LIST.

Todo esto podría abrumarnos en un comienzo, pero les aseguro que es muy económico. Estamos hablando de gastos de 10 dólares por mes para sitios con miles de visitas.

precios de Amazon S3

Amazon no tiene ningún contrato de permanencia, por lo tanto podemos usarlo unos días y comprobar su funcionamiento y sobretodo sus costos.

Antes de contratar revisen la lista de precios para obtener un estimativo, también pueden utilizar la calculadora de Amazon S3 para facilitar este trabajo.

Utilizar Amazon S3 para un blog con WordPress

Una de las cosas más fantásticas de AWS es que es muy fácil de usar y permite alivianar la carga de nuestro servidor instantáneamente.

Para entenderlo un poco más acerca del funcionamiento de S3 imaginen que quieren aplicarlo a un sitio con WordPress. En S3 alojarían todos los archivos estáticos del theme.

Entonces creamos un bucket y en el subimos todas las imágenes, archivos CSS y JS de nuestro blog. Una vez que subimos nuestros archivos tendremos que darle los permisos de acceso. Para ello desde la consola simplemente vamos a las propiedades del archivo y accionamos en los permisos que el archivo puede ser accedido por cualquier persona, el cuadro que vamos a ver es este:

amazon gestion de permisos

Como se ve en la captura de imagen de la consola ademas de los permisos podemos gestionar otros datos. Uno que nos va a importar es la dirección mediante ella vamos a acceder a nuestro archivo.

Entonces el asunto resulta mucho más sencillo de lo que pensamos. Siguiendo la misma metodología vamos a tener en nuestro theme de WordPress algunos cambios:

En lugar de llamar a nuestras hojas de estilo:

<link href="wp-content/themes/nombre/css/style.css" 
  rel="stylesheet" media="all" type="text/css" />

Vamos a colocar la ruta que obtuvimos en Amazon:

<link href="URL_AMAZON_S3/style.css" 
   rel="stylesheet" media="all" type="text/css" />

La idea es esa, no tiene ninguna ciencia.

Ahora bien, ¿que pasa si queremos utilizar una dirección bajo nuestro propio dominio?

No hay problema, para ello podemos valernos de los registros CNAME y configurarlos de tal manera que en lugar de usar la dirección de Amazon usemos nuestro dominio, por ejemplo: static.kabytes.com.

Si les gusta esta idea les recomiendo un tutorial en inglés para hacerlo. En mi caso es lo que yo decidí hacer en mis proyectos que utilizan S3.

Conclusión:

Les recomiendo plenamente utilizar Amazon S3. Es un servicio económico, fácil de utilizar y que repercute directamente en el rendimiento de nuestros sitios, mejorando los tiempos de descarga y alivianando la carga del servidor.

En lo personal siempre decido utilizarlo cuando el servidor donde alojo mi proyecto comienza a tener problemas de rendimiento o sus limites se acercan, por ejemplo cuando comienzo a quedarme con poca transferencia de datos.

Categorizado en: