martes, 2 de junio de 2009

Cómo crear tu propio CDN

Content delivery network (CDN) es una red de distribución de contenidos a través de internet que cooperan en forma transparente para trasmitir contenido estático más cercano a los usuarios finales, la mayoría de la veces su propósito es mejorar el rendimiento y escalabilidad.



La mayoría de los sitios web más grandes utilizan redes de distribución de contenidos (CDN's) para hostear la mayor parte de su contenido estático, especialmente imágenes, hojas de estilo, archivos para descargar y otros contenidos. La razón por la cual hacen esto es porque mientras menos contenido hostean tendrán menos carga de trabajo sus servidores, y dichos contenidos estáticos estarán en CDN’s próximas al usuario final mejorando el tiempo de descarga. El CDN más famoso es probablemente Akamai, que casi tiene su propia internet paralela. Akamai y otros proveedores de CDN’s son muy costosos, por lo que resulta complicado acceder a ellos.

Gracias a Google ahora cualquiera puede tener su propia CDN de forma gratuita alojado en los servidores de Google. Es fácil configurar y almacenar imágenes, hojas de estilo, archivos de descargas, etc. Ahora en lugar de almacenar todo ese contenido en tu propio sitio puede hacerlo en los servidores de Google ahorrando carga de trabajo de sus servidores (y consumiendo mucho menos ancho de banda de su cuenta de hosting) y las velocidades de descarga serán mucho mejores para los usuarios finales.

¿Qué es Google App Engine?

Usando Google App Engine
puede ejecutar aplicaciones web en los servidores de Google. Esto significa que puede beneficiarse de la enorme granja de servidores de Google distribuida en todo el mundo, lo cual implica una muy fácil escalabilidad e integración con aplicaciones de Google. Google App Engine es una respuesta los servicios exitosos S3 (para almacenamiento) de Amazon y EC2 (para computing).

Actualmente Google App Engine se encuentra en beta, pero está abierto para que cualquier persona pueda participar, todo lo que necesitas es una cuenta de Google y un teléfono celular. Lo que se obtiene es 500 MB de almacenamiento gratuito y hasta 5 millones de páginas vistas al mes, si utiliza más de esto hay pequeños costos por pagar. El costo de estos recursos adicionales son casi los mismos que los de Amazon S3.

Cómo crear tu propio CDN

Para utilizar Google App Engine como tu propio CDN hay que instalar algunas cosas en el equipo y editar algunos archivos de configuración. Todo este trabajo lleva un tiempo, sin embargo, después de tener todo lo que necesita es muy sencillo para subir nuevos archivos a Google.


Dado que Google App Engine actualmente sólo funciona con el lenguaje de programación Python, usted necesitará para descargarlo e instalarlo. Descargue el archivo de instalación correcto para su sistema operativo desde http://www.python.org/download/ e instale la versión Phyton 2.6.2. Descargue e instale el SDK de Google App Engine de http://code.google.com/appengine/downloads.html. El SDK es necesario para escribir y enviar las solicitudes a Google. Utilice la configuración por defecto al instalar el SDK.

Regístrese en appengine.google.com, para esto necesitas una cuenta de correo de google y un celular. Una vez cumplido los requisitos solo basta con hacer clic en el botón "Crear una solicitud" y dar un nombre a su solicitud (llamado "Identificador de aplicación"). Este nombre debe ser único entre todos los usuarios de aplicaciones, en mi caso usé “4visiones". Guarde su nueva solicitud. Después de esto tiene que especificar su número de celular. Google le enviará un SMS con un código de verificación que deberá ingresar en el sito. Esto confirma que usted es el propietario de la cuenta de Google App Engine.

Descargue el archivo
http://4visiones.appspot.com/files/4visiones.zip (alojado en mi CDN) y descomprimirlo en su disco duro. Si lo desea, puede cambiar el nombre del directorio descomprimido de "4visiones" al nombre de su propia aplicación. No es realmente importante pero ayuda a organizar las cosas para el futuro.

Utilice un editor de texto para editar el archivo app.yaml en el directorio 4visiones. Cambie “application: 4visiones” por “application: " y guarde los cambios. Esto es usado por Google App Engine para especificar que archivos subir. Ahora puede agregar las imágenes, hojas de estilo, archivos, vídeos, etc que desee cargar en Google a las carpetas del directorio 4visiones.

Ponga todas las imágenes en la carpeta /images, las hojas de estilo en /Stylesheets, etc. También es posible crear cualquier número de subcarpetas dentro de las mismas. Una vez que preparó todo descargue
http://4visiones.appspot.com/files/deploy_4visionescdn.bat y ábralo con un editor de texto. Este archivo tiene que apuntar al directorio de instalación de Phyton, al del SDK de Google y a su directorio.

Si ha instalado el SDK de Google y Phyton en C:\Archivos de programa entonces no tienes que preocuparte, sólo cambia la última parte del archivo para que apunte a tu directorio 4visiones.Haga doble clic en el archivo recién cambiado deploy_4visionescdn. bat para subir todos los archivos del directorio 4visiones a Google.
La primera vez hay que especificar su nombre de usuario de google y la contraseña.

Listo, ahora tienes tu propio CDN! Vaya a .appspot.com/images/turnitos.com/forum.gif (en mi caso http://4visiones.appspot.com/images/turnitos.com/forum.gif) para probar que funciona. Para usar los archivos que subas a tu cuenta de Google App Engine sólo tenés que utilizar la URL al archivo (http://4visiones.appspot.com/images/turnitos.com/forum.gif por ejemplo) en tu sitio.

En cualquier momento se pueden agregar nuevos archivos (imágenes, hojas de estilo, etc) o subdirectorios a la carpeta 4visiones, solo ejecute el archivo deploy_4visionescdn.bat para subirlos. Si elimina los archivos de su directorio 4visiones y luego ejecuta el archivo bat, estos se eliminarán de la aplicación Google.

También podés ver las estadísticas de tu aplicación en Google (appengine.google.com). Por ejemplo, la cantidad de ancho de banda y espacio en disco que está utilizando, etc.

Saludos!

2 comentarios: