Temas etiquetados como: ‘cdn’

Utilizar AmazonS3 para descargas

20 agosto, 2009

Un cliente nos pidió que pusiéramos en su web un apartado de descargas de ficheros, nada fuera de lo común si no hubiera sido por el tamaño de los ficheros a descargar: uno de 700MB y otro de 1,5GB

Lo hubiéramos podido poner en su web, por espacio de disco no era, pero para evitar posibles saturaciones de transferencia del servidor y que afectara a otras webs alojadas en el mismo optamos por otra solución: Amazon S3

datacenterPara quien no lo sepa: Amazon S3 es un servicio de almacenamiento de archivos de la empresa Amazon que tiene un coste normal, pero la ventaja que cobra según el espacio consumido y la transferencia (además de otros pequeños conceptos), teniendo la gran ventaja su escalabilidad, es decir, podemos almacenar todo lo que queramos (y podamos pagar) sin preocuparnos de ir añadiendo discos ni contratando más espacio.

Volviendo al problema inicial, optamos también por proporcionar una dirección que no implicara el nombre de amazon S3 (s3.amazonaws.com) para poder cambiar de proveedor o realizar otros cambios sin tener que ir revisando todos los enlaces. Para ello creamos en las entradas de nuestro dominio arcadina.net un CNAME (un alias) llamado “cdn” que apuntara a cdn.arcadina.net.s3.amazonaws.com. De esa forma un fichero que tenga como dirección http://cdn.arcadina.net/descargas/fichero.zip realmente apuntará a http://cdn.arcadina.net.s3.amazonaws.com/descargas/fichero.zip

Pero para que ésto funcione hemos de crear en nuestra cuenta de Amazon S3 un bucket (un contenedor) que se llame exactamente cdn.arcadina.net. Para los puristas, se que S3 no es un CDN como tal, que para eso Amazon tiene otro servicio: CloudFront, pero no se me ocurrió otro nombre ;)

Para subir los ficheros a S3 hemos utilizado un script en PHP que utiliza una clase para gestionar la conexión con AmazonS3. La clase se puede encontrar aqui: http://undesigned.org.za/2007/10/22/amazon-s3-php-class

De esta forma cuando alguien se descargue el fichero de 1,5GB el servidor donde se encuentra la web no se verá afectado de ninguna forma.