10 pasos fáciles para usar Google App Engine como tu propia red de distribución de contenido
Cuando los chicos grandes corren sitios web (básicamente nombra cualquier gran marca que puedas imaginar) utilizan CDNs (Siglas en inglés de Redes de distribución de Contenido) para alojar la mayoría de sus contenidos, especialmente imágenes, hojas de estilo, archivos para descargar y otros contenidos estáticos.
La razón por la que hacen esto es debido a que a menor contenido para hospedar en sus servidores, menos carga tendrán y mientras más contenido puedan almacenar cerca del usuario, más rápida será la descarga. El CDN más famoso es probablemente Akamai, quienes casi que corren su propia internet paralela. Akamai y otros proveedores de CDN cuestan mucho dinero, así que no son para nosotros los mortales.
Pero gracias a Google, cualquier persona puede correr su propio CDN de forma gratuita en los servidores de Google. Es realmente fácil de configurar y guardar archivos para descargas, hojas de estilos, etc. En Google en lugar de tu propio sitio, además que toma la carga fuera de los servidores (y por lo tanto consume menos ancho de banda en tu cuenta de hosting) aumentando la velocidad para los usuarios finales.
Es una situación ganar-ganar y además es realmente bueno! Si estás interesado en más información sobre como obtener un desempeño máximo para tu sitio web, te recomiendo que leas este excelente post Despeño por unos centavos en 24ways.
¿Qué es el Google App Engine?
Utilizando el Google App Engine, puedes ejecutar aplicaciones web en los servidores de Google. Esto significa que puedes beneficiarte de la gigante granja de servidores de Google y también significa que es muy fácil escalar e integrar con otras aplicaciones de Google (por ejemplo, utilizar la autenticación de Google para tus aplicaciones).
Actualmente debes escribir tus aplicaciones en Python (no te preocupes: no hace falta codificar para nada si utilizarás Google App Engine como CDN, sigue leyendo), pero esperamos que pronto se expandan a otros lenguajes (personalmente yo quisiera correr PHP y CodeIgniter en Google App Engine!).
El App Engine es la respuesta de Google a los muy exitosos servicios de Amazon S3 (para almacenamiento) y EC2 (para ejecución). Los servicios de Amazon son muy poderosos, pero requieren un nivel de conocimiento técnico más profundo para utilizar que con Google App Engine.
Actualmente Google App Engine es un Preview Release (=beta), pero es gratuito para cualquier persona para registrarse, todo lo que necesitas es una cuenta de Google y un número celular (más sobre esto luego, en particular si no cuentas con un número de Estados Unidos). Lo que obtienes son 500mbs de almacenamiento gratuito y alrededor de 5 millones de páginas vistas gratis al mes.
Si usas más hay un costo bajo (mira el Google App Engine blog para más detalles). El costo para estos recursos extras es casi el mismo que el de Amazon Web Services, y con lo que ya ofrecen gratis y la facilidad de uso que tiene Google App Engine es una ganga.
Cómo configurar tu propio CDN
Para utilizar Google App Engine como tu propio CDN personal necesitas instalar algunas cosas en tu computadora y editar unos archivos de configuración. Todo este trabajo se realiza una sola vez y luego lo que necesitas es correr un simple programa para subir los archivos a Google.
Siento decir que estos scripts que debes bajar son para Windows únicamente, si estás en Mac o usando Linux entonces tendrás que hacer tu propio script que realice las acciones que tiene deploy_digitalistic_cdn.bat
(y si lo haces por favor agrega un comentario a esta nota para que todos lo podamos usar).
1. Ya que el motor de Google App solo funciona con el lenguaje de programación Python, necesitas descargar e instalar Python en tu computadora. Si estas corriendo Mac o Linux, es muy probable que ya cuentes con Python instalado, así que puedes saltar este paso.
Descarga el archivo correcto de instalación para tu sistema operativo para Python 2.5.2 de http://www.python.org/download/ e instala. Usa la configuración por default, excepto instalarlo bajo “Archivos de Programa” en lugar de directamente en el disco C (O instalarlo donde quieras, pero luego tendrás que asegurarte de modificar los scripts a continuación.
2. Descarga el SDK del motor de Google APP desde http://code.google.com/appengine/downloads.html e instalo. Durante la instalación del SDK va a revisar que tengas instalado Python o no, así que si tienes algún problema con la instalación de Python lo sabras en este paso. El Google App Engine SDK es necesario para escribir y subir aplicaciones a Google. Solo utiliza las opciones ya establecidas cuando instales el SDK.
3. Regístrate para el Google App Engine en appengine.google.com. Para esto crear una cuenta de Google (tu dirección de Gmail por ejemplo y si no tienes es gratis crear una).
4. Una vez que hayas ingresado al servicio, crear una aplicación, así que pulsa el botón de “Create an application” y dale a la aplicación un nombre (llamado “application identifier”). Este nombre tiene que ser único dentro de todas las aplicaciones de usuarios, así que puedes tardar un rato en encontrar un nombre único. En mi caso utilicé “digitalisticcdn”.
Guarda la nueva aplicación. Luego de que hayas creado esta primera aplicación, necesitas especificar tu número de teléfono. Google te enviará un mensaje de texto SMS con un código para ingresar al sitio. Esto confirma que eres el dueño de la cuenta de Google App Engine (así que no la uses para enviar spam).
Nota importante para usuarios en Latinoamérica: No se aceptarán números locales, por lo que recomendamos utilizar un servicio como SkypeIn que permite obtener un número de teléfono en Estados Unidos para así tener un número que pueda recibir el mensaje de texto y validar la cuenta.
5. Descarga el archivo http://digitalisticcdn.appspot.com/files/digitalisticcdn.zip (alojado en mi CDN privado!) y descomprímelo en tu disco duro. Si quieres puedes cambiarle el nombre del directorio de “digitalisticcdn” al nombre que quieras, por ejemplo el de tu propia aplicación. No importa realmente y solo te facilita el mantener un registro para el futuro.
6. Utiliza un editor de texto para editar el archivo app.yaml
que se encuentra en el directorio de digitalisticcdn. Cambia “application:digitalisticcdn” a “application:el identificador de tu aplicación” y guarda el archivo. Esto le dirá a Google App Engine que aplicación debe utilizar para cargar archivos.
7. Ahora es tiempo de agregar todas las imágenes, hojas de estilo, archivos, vídeos, etc. que quieras subir a Googleen los folders de digitalisticcdn. Incluye las imágenes en el folder /images, etc. Puedes crear cualquier número de subfolders dentro de imágenes, archivos, hojas de estilo, etc. (Por ejemplo /images/webhostninja.com/ninja.gif). Puedes agregar más archivos en cualquier momento, así que si sólo quieres configurar la aplicación para que funcione puedes saltar este paso. Ya existe una imagen en el folder de /images para que puedas comprobar que está funcionando como debería.
8. Descarga http://digitalisticcdn.appspot.com/files/deploy_digitalistic_cdn.bat y edítalo con un editor de texto. Este archivo debe apuntar a tu instalación de Python, tu instalación de Google App Engine y tu directorio digitalisticcdn. Si has instalado Google App Engine SDK en el directorio original y Python en C:/Program Files/ entonces no tienes que preocuparte por esta configuración. Solo cambia la última parte del archivo para apuntarlo a tu directorio de digitalisticcdn. Ten en cuenta que todas las rutas que tienen espacios tienen que estar encerradas entre comillas.
9. Doble click en el archivo recientemente actualizado deploy_digitalist_cdn.bat para subir todos los archivos dentro del directorio digitalisticcdn hacia Google. La primera vez que hagas esto deberás especificar tu usuario y password de Google.
10. Ahora ya tienes tu propio CDN privado! Ve a (nombre de aplicacion).appspot.com/images/ninja.gif (en mi caso digitalisticcdn.appspot.com/images/ninja.gif) para ver si funciona.
Cómo utilizar tu propio CDN privado
Para usar los archivos que has subido a tu CDN de Google App Engine solo tienes que utilizar el URL hacia el archivo en tu sitio. Si quieres utilizar la imagen de un cool ninja de WebHostNinjna.com deberías utilizar únicamente digitalisticcdn.appspot.com/images/ninja.gif como el IMG source en tu códigmo HTML. Lo mismo para hojas de estilo, archivos para descargar o cualquier otra cosa que quieras compartir en tu CDN.
En cualquier momento puedes agregar nuevos archivos a tu subdirectorio digitalisticcdn (/images, /stylesheets, etc.) y correr el deploy_digitalistic_cdn.bat para subirlos a Google. Si remueves archivos de tu directorio y luego lo ejecutas, estos serán eliminados de tu aplicación en Google.
Puedes revisar las estadísticas de tu aplicación en Google en appengine.google.com/. Por ejemplo, tu puedes ver cuanto ancho de banda y espacio en disco estás utilizando. Tomará muchos archivos y utilización para que te pases de los recursos que tienes gratuitamente, pero si tienes un sitio súper popular será importante revisar ocasionalmente.
Este artículo fue escrito originalmente en inglés y traducido con permiso del autor al español por Christian Van Der Henst S.
Ahora ya no hay excusa para aprovechar todos estos recursos!
Gracias por la información.
Saludos.
Excelente información, gracias por la traducción.
Si es una relación ganar – ganar, entiendo muy bien lo que gana el usuario, pero ¿que es lo que gana Google, al ceder tan “amablemente” sus recursos?
Pepe, App Engine solo te da 500MB de transferencia gratis pasado ese limite te pasarán la factura.
Estos días me ha surgido la necesidad de implementar un CDN para tomar los contenidos de una localización u otra.
Un ISP del interior de mi país quiere implementar un portal para ofrecer contenidos como video y audio. Ellos ofrecen el servicio en varias ciudades, todas interconectadas entre sí a través de su red, y desde allí ofrecen conectividad hacia Internet.
La idea es la siguiente:
Crear un portal con noticias y contenidos multimedia (video, fotografías y audio). Existe una limitación muy importante: el ancho de banda.
Si estos contenidos se colocan en un servidor en Internet, los clientes de este ISP estarían colapsando el ancho de banda de bajada disponible. Así que la idea es colocar estos contenidos dentro de la red del ISP, pero en este caso los usuarios no clientes de este ISP colapsarían el ancho de banda de subida.
Así que, lo mejor es disponer de un CDN que, en el caso de la petición se origine dentro de la red de lSP, el contenido se sirva desde un servidor externo, y si la petición se origina desde otro lugar, se sirva el contenido desde un servidor externo.
La limitación viene dada por los costos en el interior de Argentina de las conectividades que ofrecen los grandes operadores. Estos son hasta casi un 1000% más alto que en las ciudades, y si bien aumentar el ancho de banda disponible sería una opción, esto se trasladaría a los clientes ya que se llegó un techo en este sentido.
¿Es posible implementar esto con esta solución que ofrecés?
Hola Pablo, el servicio de google app engine no esta soportado para Argentina, yo uso The coral CDN para acceder a los CSS y script de mi web.
Es muy facil de usar, agarra tu dominio y al final agregale .nyud.net y listo.
Ejemplo, para acceder al css de este web se usaria la siguiente url;
http://www.maestrosdelweb.com.nyud.net/diseno/css/comun.screen.css?ver=98
Saludos
Y cual puedo usar en mi país, ¿Ecuador?
Excelente articulo, me gustaria que hubiece un link de como para el usuario final
Gracias por la info, le cuento que yo no tuve problemas con la recepción del código enviado a un celular en Bolivia.
[…] Med hjälp av Google App Engine så kan man lätt bygga sitt eget Content Delivery Network (CDN). Ett CDN är ett separat nätverk som alla stora sajter använder för att lagra bilder, stora filer, videos, stylesheets etc. Genom att dessa filer finns så nära användaren som möjligt så kan de laddas ner snabbare till användarens webbläsare. Det mest kända CDN är Akamai som nästan är som ett privat parallellt internet. Problemet med dessa stora CDN är att de är väldigt dyra, och även om det inte kan jämföra sig med den prestanda man får från ett riktigt CDN så kan man lätt bygga ett eget förenklat CDN med hjälp av Google App Engine. Man kan helt enkelt lägga sina stora filer (bilder etc) på Google App Engine och inte på den server som man har resten av sin sajt på. Denna artikel är en översättning av en artikel jag skrev på engelska för min blog http://www.digitalistic.com, därav lite referenser till digitalistic.com. Originalartikeln blev väldigt populär och har bla varit med på delicious most popular list ett par gånger och finns även översatt till spanska på maestrosdelweb.com. […]
[…] aparece de nuevo Google y su App Engine. He leido un documento muy interesante en digitalistic, en maestros del web en castellano, donde te enseñan en 10 pasos a aprovecharte de la enorme granja de servidores de […]
amigos de ante mano felicidade so unos masters jeje yo estoy novato en todo esto delante ustedes y quisiera sabes por que no puedo subir *swf “archivos de flash” a mi app.. estoy a la orden aqui en venezuela Gracias
Correcciones fuck teclado, fuck cansancio… Felicidades / son unos / saber / Venezuela
Alguien sabe como hacer para registrarse desde Argentina?, no me toma el numero de celular de ninguna forma
Tu nombre en el lugar de el logo de Google,Simpsons,Futbol,Juanes,Shakira,Tekken,Juanes,y 500 logos más
miralos en el siguiente enlace:
http://www.googlemanias.webcindario.com/esp/name.htm
Ya lo estoy probando, Gracias, saludos derechoteca
[…] En maestros del web tenemos un ejemplo de como crear una red de distribución usando el App Engine de Google. […]
He seguido al paso Todo! y todo bien Gracias por el tutorial!
Lo que tengo un problema: quiero hacer un “Disable Hotlinks” para que nadie me copie las imagenes que subo a mi CDN
¿Alguien sabe como hacer eso?
es decir como en un .htacces , permitir solo que linken las imagenes SOLO mis propis dominios y evitar el robo de ancho de banda de mi CDN
si alguien lo sabe que eche un cable!
Gracias por todo !
Saludos!
[…] Leyendo y leyendo, hay que aprovechar esta tecnología de Google. Un par de artículos para leer: 10 pasos fáciles para usar Google App Engine como tu propia red de distribución de contenido El futuro es distribuido: Google App Engine Posted in Bitácora, Programar, Web || || || Fatal […]
Hola Pablo!
El servicio de google app engine SI está disponible para la Argentina, la única empresa que soporta los sms es Personal.
La forma de ingresar tu número de celular es la siguente:
54 (sin el +)
9 (necesario para acceso internacional)
XX (Código de área sin el cero)
XXXXX (nro telefónico sin el 15)
Ej de un nro de Buenos Aires:
54 9 11 XXXXXX
Espero que se entienda!..
Saludos!
Yo tengo claro así que no me llegaban los sms. Mandé un mail diciendo que no me llegaban y me contestaron diciendo que me lo habían habilitado. Hice todo como en el tutorial y todo de 10.
Gracias!
chebre por la informacion me ayuda bastante
Es cierto que te librarías de la carga de servir estáticos, pero google appengine app engine no actuaría como un CDN pues no sirve las peticiones de forma distribuida, simplemente sería una caché externa.
Todas las peticiones se sirven desde Mountain view EEUU, por lo que la ventaja de un CDN de distribuir los contenidos y servirlos lo más cerca posible del cliente para reducir latencias no existe sin más.
A pesar de usar la infraestructura de google, por motivos técnicos, de momento, todas las peticiones se sirven desde Mountain view EEUU y no desde un punto más cercano al usuario.
En un futuro sí que servirán las peticiones de forma distribuida o al menos tendrás la opción de elegir un centro de datos más cercano a tus usuarios, pero no han dado fechas.
De momento recomiendo usar un servidor virtual con un ping bajo para servir tus estáticos y de no ser suficiente uno o varios dedicados.
Un ejeplo sencillo de como programar tu propio CDN
http://www.ikeralbeniz.net/2010/01/25/sencillo-mirror-de-imagenes-para-tu-blog-usando-google-app-engine/
No es asi. Al menos en Argentina, se sirve localmente desde la mayoria de los ISPs….
Sabes que pasa en ese caso ? Te perdes todo el trafico que viene de los usuarios que trabajan en una Empresa que filtra el contendio. Todas esas CDNs son consideradas como proxy o similar, por lo tanto, por ejemplo, un smartfilter, te las bloquea… Si hosteaste tus CSS, olvidate de tu site.
Abrazo!
A que direccion de correo deberia enviar el mail para que me habiliten el servicio de google app engine??
Hola.
Este tutorial está muy bueno:
Pude seguir los pasos, tengo instalado todo y creada mi cuenta con la aplicación(sólo para tener los archivos).
Como hago para subir las imágenes y archivos a mi cuenta de GAE?
Lo que necesito es poder acceder desde otro servidor hacia mis archivos, pero no logro conseguirlo.
Digamos que tengo una cuenta: cdn-mundialdt
Tengo que subir mis imágenes al siguiente directorio?
http://cdn-mundialdt.appspot.com/images/
Hice el intento pero no sale ninguna imagen.
Si pueden ayudarme con ésto me serviría de mucho.
Saludos
Marcelo
Listo implementado.
Ya estaba usando Amazon S3 pero este me gusta que sea gratis 😛
Me dio gracias tu comentario sobre el .bat. En linux no hace falta hacer ningun scripts para decir
python /opt/appengine/appcfg.py update /var/www/html/dondejugarpaintball/public/
Tambien si se trabaja mucho podes agregarlo al path.
Para despues solo hacer
python appcfg.py update path del app.yaml
Suerte y muy buen aporte
Muy bien el aporte , pero me pregunto usar el googleappengine para una aplicacion desarrollada bajo asp.net
Google Appengine trabaja únicamente con Java y Python. Las funcionalidades de Appengine son increíblemente ampliadas al habilitar la facturación, y no es una inversión tan grande en comparación con tener uno su propio servidor.
slds
no me sirve el .BAT trate de descargarlo pero solo me sale el comando en el explorador, entonces no se si me falta un pedazo de codigo… por fa ayudenme, ya hice los primeros 7 pasos…. necesito que alguien me muestre el codigo completo del .BAT nada mas…
Hola, lo he puesto en marcha y todo perfecto.
Pregunta:
Con YSlow siguen apareciendo los contenidos del appspot.com como NO pretenecientes a una CDN
¿Tarda google en reconocer el contenido de su app como propia?
¿O que pasa?
Me confunde por otro lado que en tu ejemplo, la imagen del ninja, YSlow la ranquea como A, lo máximo, mientras que a la vez lista los archivos que NO estan en una CDN y lista en este caso tu imagen, es decir el rankin que te asigna es contradictorio a los resultados que da.
¿Alguna idea? MIL GRACIAS