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,

Update – Windows Vista corriendo en MacBook Pro

Hace unos días instale en mi Nuevo MacBook Pro windows vista y otros sistemas operativos, ahora algunas actualizaciones de como ha sido la experiencia:

 

1. El teclado me costó un poco de trabajo pero no tanto como pensé, las teclas que más extraño son end, home, delete, etc, pero rápidamente descubir que usando Fn y las flechas puede hacer estas funciones, por ejemplo Fn flecha izquierda es Home, Fn flecha derecha es End, Fn Delete es delete (delete solo es Tab).,etc, las teclas de función también las extraño, pero se usan igual usando Fn y la función que uno quiere. Todas las teclas de función se usan para otras cosas pero todo está muy pensado, como subir el volumen, aumentar el brillo, etc.

 

2. El mouse si fue re fácil, le puse un mouse externo normal y listoJ, botón derecho y todo lo demás habilitado, cuando no estoy usando el mouse externo solo presiono control y click y eso es click derecho, o utilizo los dos dedos en el pad mouse y click. (esta máquina tiene pad mutitouche, estoy tratando de hacer aplicaciones que lo aprovechen del tipo surface… pero eso es otra historia)

 

3. Al principio tuve algunos problemas hibernando y dejando en stand-by, pero después de instalar el SP1 de Windows vista, se han solucionado esto problemas y todo el OS funciona perfecto.

 

4. Actualice mi maquina a 4 gigas de RAM, la compre por Amazon en 90 dólares, para un usuario normal puede no ser necesario, pero yo uso mucho maquinas virtuales con OS completos (incluso la red completa, 3 VMs al tiempo para pruebas de aplicaciones distribuidas) asi que entre más RAM mejor, ahora le puedo poner hasta 1.5 de ram a cada máquina virtual (con 2 maquinas) o 1 mega (con 3 Maquinas).

 

5. Un problema que me estuvo preocupando un rato tenía que ver con la temperatura que alcanzaba la maquina cuando estaba usando vista, se ponía muy caliente ,algunos lo han reportado en Internet, pero era solo en vista, no en Mac OS X, buscando un poco encontré una utilidad que permite configurar la velocidad mínima de los ventiladores del computador, aparentemente en vista están siempre a la mínima velocidad y por eso se calentaba tanto el computador.

 

Todo lo demás ha sido perfecto, la cámara, el audio, etc., ha funcionado de maravilla. Ahora estoy pensado en actualizar el Linux a fedora9, pero eso será tema de otro post.

 

Juan Peláez

Arquitecto de Software.

Visite www.juanpelaez.com  

Keywords: Mac Book Pro, Windows Vista SP1.