martes, 12 de mayo de 2009

La revolución del open source

"La estructura de las revoluciones científicas" (Thomas S. Khun, 1962) es un libro sobre historia y filosofía de la ciencia. En él se explica cómo la evolución de las ciencias se produce en forma de revoluciones que suceden a crisis profundas en un campo científico, obteniendo como resultado una nueva visión y entendimiento de dicho campo.

Su lectura me la recomendó Robin, y por ello llegó a mis manos, para aprender a situarse frente al continuo cambio que se experimenta en el mundo laboral, estableciendo un paralelismo con los cambios producidos en la ciencia a lo largo de su historia.

Uno de los puntos que encontré más interesante fue el hecho de que las revoluciones no se dan en un único punto geográfico (país, universidad o centro de estudios) sino que suceden de manera paralela en varios de los lugares donde se estudia el campo científico afectado.

Conversando acerca de esto con mi compañero Mario, descubrí un fenómeno similar en lo que se refiere a las diferentes plataformas open source que he ido utilizando a lo largo de mi carrera profesional:

Zunibal, año 1998: por aquel tiempo me encontraba desarrollando sencillas aplicaciones web en lenguaje C, lo que llamábamos "cegeis". El desarrollo y depuración era un proceso lento y engorroso. Programar sobre emacs; compilar con gcc; ftp al directorio cgi-bin del servidor apache; probar con Netscape; internal server error. Vuelta a empezar. Y qué decir de la integración de código HTML. Otra odisea. Pero aquel año se publicó PHP 3, la primera versión del popular lenguaje de programación open source (aunque se trate de la versión número 3 las anteriores no eran un lenguaje propiamente dicho) . PHP llegó para reducir la complejidad y los tiempos de desarrollo y para facilitar la separación del código de la parte visual, lo que además contribuyó a que los diseñadores entrasen de lleno al mundo internet.

K 2000, año 2002: sitios webs dinámicos, gestores de contenidos, e-commerce... En definitiva, bases de datos puestas en la web donde un administrador sin conocimientos técnicos accedía a una dirección privada y ejecutaba altas, bajas, modificaciones y consultas. Podían ser proveedores, clientes, zapatillas, artículos de subastas,... El proceso siempre era el mismo. Modelar la base de datos, crearla en mysql y adaptar unos cuantos scripts que realizaban las mencionadas operaciones pero sobre la nueva base de datos. Así proyecto tras proyecto. En aquella época otros desarrolladores como yo, atrapados en el día de la marmota, diseñaban y desarrollaban los primeros frameworks open source orientados a resolver este atasco: Ruby on Rails, Zend, Cake... Por desgracia yo tardé algún tiempo más en subirme a esta revolución. Parte de culpa la tiene mi amigo Alex, evangelizador de la filosofía open source, a quien le consulté sobre este problema y no pudo abrirme los ojos en aquella oportunidad. No fue hasta tiempo después que comencé mis primeros desarrollos sobre Cake.

Chilevision, año 2008: después de situar nuestro sitio web entre los más visitados de Chile alcanzando el millón de visitantes únicos mensuales, era el momento de desarrollar nuevos productos para seguir creciendo. Ese mismo año Facebook se masificaba en Chile por lo que tomamos la opción de desarrollar nuestra propia red social. El resultado vio la luz al final del primer trimestre de 2009 bajo el nombre de miTiu.com. La plataforma open source utilizada fue Elgg, coincidiendo con su versión 1.5, optimizada ya para un tráfico elevado. El tiempo de puesta online fue mínimo, tan solo el necesario para integrar el diseño, desarrollar un par de funcionalidades no incluidas y configurar el hosting sobre Amazon Web Services. Ahora es turno de captar usuarios y decidir qué nuevas características queremos integrar en la plataforma.

Esta contemporaneidad que se ha dado entre los proyectos en los que he trabajado y el desarrollo de las plataformas open source con las que he ido desarrollándolos valida el trabajo que he realizado. Además esta conclusión que saco mirando hacia atrás en el tiempo se puede aplicar hacia el futuro, como una regla de validación de nuevos proyectos: ¿qué hay en el mundo open source que esté relacionado con el nuevo proyecto que voy a abordar?

Y hablando de futuro, en cuanto vuelva a Chile tengo que revisar la última recomendación de Alex: Drupal + CCK.

domingo, 22 de marzo de 2009

Incremento en el performance de la nueva portada de chilevision.cl

A primeros de marzo publicamos la nueva portada del sitio web chilevision.cl. Aprovechamos los meses de verano para hacer un trabajo intenso en el nuevo diseño cuyo resultado está a la vista.

Durante la etapa de implementación probamos por primera vez una serie de técnicas dirigidas a mejorar la rapidez de carga y despliegue de los contenidos en los navegadores de nuestros usuarios. Viendo los buenos resultados obtenidos continuamos aplicando modificaciones durante los primeros días al aire, consiguiendo ligeras mejoras que se fueron sumando. El resultado obtenido hasta el momento es objetivamente cuantificable y nos sitúa muy por encima de nuestra competencia.

Cuando un equipo técnico se propone mejorar la velocidad de carga de un sitio web lo habitual es que sus miradas se dirijan a los recursos asignados a sus servidores (hardware, software, ancho de banda,...). En chilevision.cl no éramos una excepción hasta que navegando por el canal tecnológico que tiene Google en Youtube, Google Tech Talks Channel, di con un video en el que el Exceptional Performance Team de Yahoo! exponía al personal de Google una serie de reglas y técnicas que ellos seguían para mejorar los tiempos de carga de sus páginas. Es cierto: ¡un equipo de Yahoo! explicando sus técnicas de mejora de rendimiento en las instalaciones de Google!.

Este equipo lleva trabajando en Yahoo! desde el año 2004 analizando y cuantificando el perfomance de sus aplicaciones web. En sus análilis han identificado que el tiempo que toma una página web en desplegarse en el navegador de un usuario está distribuido entre un 5% en el lado del servidor (backend) y un 95% en el lado del cliente (frontend). Este sorprendente resultado deja claro que los esfuerzos en mejorar el performance deben dirigirse al frontend, todo lo contrario de lo que habíamos estado haciendo hasta la fecha.

Trabajar en la mejora del backend es costoso en tiempo y recursos. Los resultados son complejos de analizar. Las técnicas a seguir dependen de la tecnología que se esté utilizando. La información deducida en los análisis no es extrapolable a otras infraestrucutras. Y resulta que los resultados obtenidos sólo afectan a un 5% del rendimiento.

Todo lo contrario sucede cuando se trabaja en la mejora del frontend.
  • Es barato: los cambios a aplicar se realizan con los recursos ya existentes. Son sencillos y se pueden plantear desde el inicio de un proyecto sin que retrasen su desarrollo
  • Los resultados obtenidos se pueden extrapolar a cualquier otro proyecto web. Yahoo ha publicado sus resultados en forma de 34 reglas a seguir agrupadas en 7 categorías
  • Las mejoras son cuantificables con la herramienta YSlow, un plugin para el navegador Firefox que evalúa el perfomance de cualquier sitio web asignándole una puntuación entre 0 y 100 en función del cumplimiento de las reglas mencionadas anteriormente

Cuando comenzamos las pruebas internas de la nueva portada la calificación obtenida por YSlow era de 38 puntos. En ese momento ya estábamos utilizando algunas de las reglas: contábamos con un dominio dedicado a los elementos estáticos, habíamos utilizado imágenes sprite para todos los fondos, una parte de nuestros archivos JavaScript se cargaban al final de la página y nuestros css estaban correctamente desarrollados.

Proseguimos aplicando reglas, unificando y minimizando archivos JavaScript, llegando hasta una puntuación de 49. Finalmente comprimimos los archivos ASCII y aplicamos técnicas de caché a los archivos JavaScript, llegando hasta la puntuación actual de 58 puntos.

Aún nos encontramos lejos de los 96 puntos que marca la portada de Yahoo!, pero nos encontramos por encima de competidores directos como  canal13.cl (38), beta.canal13.cl (35), tvn.cl (33), emol.com (34), latercera.com(33) y terra.cl(28).

Nos queda camino por recorrer en busca de los 100 puntos y espero informar a medida que obtengamos mejoras en la puntuación. Pero sin olvidar que a finales del año 2008 alcanzamos el millón de visitantes únicos mensuales y nuestro objetivo es superarlo ampliamente, por lo que el trabajo de mejora en nuestros servidores es, además de estimulante y desafiante, algo imprescindible en nuestro desarrollo. Seguro que escribiré sobre ello.