Usando redes de Distribución de Contenido.

Desde hace algunos meses vengo participando en un Proyecto Grande para Dunkin Donuts en Estados Unidos, básicamente la construcción del sitio www.DunkinDonuts.com y otros sitios afiliados como www.myicedcoffee.com, estos sitios utilizan diferentes tecnologías como Flash, JavaScript, WebServices, Certificados Digitales, y otra lista de cosas que son interesantes de poner a trabajar juntas y que son probadas en todos los sistemas operativos y navegadores populares.

 

Estos sitios esperan tener cantidades masivas de visitantes todo el tiempo con picos muy altos en ciertas campanas publicitarias y días especiales, así que hay que enfrentar el problema de la alta disponibilidad en serio, y si se le agrega que se usan muchas películas de flash (corriendo contra servicios web) algunas de ellas muy pesadas, entonces se tiene una combinación un poco complicada.

 

En este sitio se han implementado diferentes soluciones como un cluster de BD, un Cluster de servidores de presentación, cada servidor con 4 Gigas de RAM y sistemas redundantes de acceso a datos, etc, incluso tarjetas de red dedicadas para la comunicaciones entre las maquinas, la salida a internet e incluso la que me permite conectarme para tareas de administración.

 

Sin embargo, una de las tecnologías más interesantes que hemos empleado tiene que ver con la Red de Distribución de Contenido (CDN por Content Distribution Network) que se ha implementado, aquí algunas líneas al respecto. (No es la única, muchas decisiones de arquitectura de la aplicación, de infraestructura y de negocios deben tomarse e implementarse correctamente para que un sitio realmente soporte un tráfico fuerte, empezando por tener una idea de cuánto trafico se estima tener).

 

Que es una CDN?

 

Una red de distribución de contenido es un montón de infraestructura generalmente distribuida por todo el mundo (al menos puntos claves para internet) que guardan copias locales de ciertos tipos de archivos para entregue a los usuarios que los solicitan usando ventajas geográficas (están más cerca). (Usted de verdad no creía que youtube tenía los discos duros más grandes del mundo o sí?). De esta forma cuando un usuario solicita (a través del browser) un video, canción, imagen, o incluso una de las películas de flash, esta le es enviada desde el servidor que se encuentra más cerca. Más referencias e información en ingles aquí

Como toda esa infraestructura es arrendada se obtienen importantes beneficios en costos de hardware y uso del ancho de banda de su proveedor de hosting, y para los usuarios la experiencia es muy buena porque siente que su sitio es mucho más rápido de lo que en realidad es.

 

Como se usa?

 

Una de las cosas realmente increíbles de esto es la forma como funciona desde la perspectiva del desarrollador (es decir la mía) (la otra cosa increíble es como selecciona quien en realidad está cerca, pero ese es otro tema), para mi es transparente la localización del archivo, es decir no me importa.

 

Por ejemplo:

Supongamos que tengo unas imágenes muy grandes que quiero que se suban a esta red CDN, en mi estructura de archivos están en una carpeta images y yo las referencio como src=”images/imagengrande1.jpg” bueno, al afiliarse a la red de distribución de contenido ellos le van a crear un apuntador para su dominio del tipo assets.midominio.com, así que ahora en vez de apuntar el scr de la imagen como antes usted pone scr=http://assets.midominio.com/images/imagengrade.jpg, la magia ocurre cuando al hacer la solicitud un usuario por primera vez, la CDN busca en su propia lista de archivos, como no la encuentra va hasta su servidor y se la manda al usuario, pero al mismo tiempo saca una copia y la almacenan en sus propios servidores, es decir que entre más personas visiten el sitio de diferentes partes del mundo o del país, mas rápido funciona al sacar copias del contenido al momento de distribuirlo.

 

Es decir, usted no sube nada a la red, ella sola se alimenta a medida que sus usuarios piden los archivos, y no hay problemas de crosssite scripting por que los archivos si están en su dominio, solo que en otras maquinas.

 

Esto genera dos problemas, ambos fáciles de solucionar y que bueno, por el beneficio puedo vivir con ellos.

 

1. Obviamente si hay un cambio en el archivo que está cargado en la red, de alguna forma hay que notificarlo para que se actualice el archivo, sino la red de CDN va a seguir enviando el archivo desactualizado. Sin embargo todas estas redes tienen una consola de administración donde usted puede ver reportes de uso, pero también puede solicitar que un archivo sea actualizado, es un proceso automatizado generalmente basado en colas pero que dependiendo del trafico del sitio puede tomar desde minutos hasta horas, así que procure evitar los cambios.

 

2. Como en el proceso de desarrollo muchas veces hay que cambiar cosas (no debería ser, pero así es), es mejor tener alguna forma de “prender y apagar” el servicio, asi que una buen opción es poner en el archivo de configuración la ruta que se va a usar o en el load del control o en una función de JS o en CSS donde se pueda hacer el cambio en un solo sitio y afecte todos los archivos que se están cambiando.

 

Para tener una?

 

Los proveedores de este servicio son Akamai, LimeLight Network (ya que estoy usando) (por cierto que Akamai demando a LimeLight por 45 millones de dólares, según ellos Limelight violo la licencia concedida por MIT para usar la tecnología que permite hacer la reconstrucción de los URL de los archivos que se usan en la CDN), así que solo hay que ir y suscribirse, pagar el servicio mensual y listo hay diversos servicios incluido el de tener televisión de HD por internet hospedada en la red.

 

Espero que esto le ayude a salvar algunas horas y a construir sitios de altísima disponibilidad.

 

Juan Carlos Peláez

Arquitecto de Software

visite www.juanpelaez.com

 

Keywords: Arquitectura, CDN, Content delivery Network, Content Distribution Network,

4 comentarios sobre “Usando redes de Distribución de Contenido.”

  1. Aunque pueda ser una paradoja, por experimentación para futuros trabajos que no lleguen a requerir el uso de CDN pero que necesiten algo más de rendimiento, creo que podría ser interesante esto para, como digo, desarrollos sin tanto presupuesto:
    Como siempre: p2p al rescate! ^^!

    http://coralcdn.org

    Y lo cierto es que es una idea, a priori, genial, solo falta ver como va. Yo ya lo estoy probando en http://www.laguardiadejaen.com/
    😉

  2. Excelente articulo, muy interesante. La verdad es que aun no me acabo de enterar muy bien de como funcionan, pero bueno, ahora que google ha puesto a disposicion la suya, estare al tanto de ir haciendo pequeños tests.

  3. Buena la información, lastima el tono tan pedante de don Juan Carlos, por lo que a mí respecta la grandeza radica en la humildad. En cuanto a lo de las DCN, son todo un paso en la evolución de Internet y vale la pena probar sus servicios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *