El principal motivo por el que este blog ha estado tan calladito en los últimos meses, es el proyecto en el que he estado inmerso desde Octubre de 2007.

Esta semana el proyecto ha visto la luz: http://noticias.terra.es , ha sido un largo camino, y todavía quedan muchas cosas por hacer, pero ya hemos dado el primer paso: “estar en el aire”.

Aunque a primera vista no parezca muy novedosa, ni siquiera muy complicada de hacer, (por lo que 20 meses es a todas luces un tiempo excesivo), el principal reto se podría titular como:

“Desarrollar un sitio web basado en Sharepoint 2007 que permita gestionar millones de páginas por un equipo de decenas de redactores, para dar servicio a millones de usuarios”.

Para conseguir este objetivo se han tomado muchas decisiones para adaptarse a los requisitos de MOSS, las más importantes han sido:

Taxonomía

En base a los estudios de capacidad de almacenamiento, se ha determinado que una base de datos de contenido por año no se superará el límite recomendado de 80G.

Dentro de cada base de datos de contenido, se ha creado una jerarquía de sub-sitios en base a las secciones, meses y días, de forma que no se almacenen en ningún caso más de 1500 páginas por sitio.

Con todo, las URL resultantes son del tipo:

/genteycultura/2009/0503/actualidad/lenny-kravitz-consigue-que-5500-personas-se-entreguen-a-sus-ritmos-roqueros.aspx

Almacenes de información alternativos

Además de la información gestionada por el equipo de redacción, es necesario considerar la información generada por los usuarios (UGC). En las primeras versiones de la arquitectura, esta información la almacenábamos en listas de MOSS, sin embargo esta aproximación no cubría las exigencias de rendimiento a gran escala.

Finalmente, el sistema cuenta con bases de datos de apoyo para almacenar la información generada por los usuarios.

Abstracción del código de acceso a datos

El sistema de publicación de MOSS permite la creación de plantillas (layouts), que son fácilmente personalizables usando las herramientas estándar que ofrece el producto como el “Content Editor Web Part”, sin embargo la forma de obtener el contenido en base a sentencias CAML sobre la taxonomia descrita, no permite satisfacer los requisitos de un periódico (no se pueden hacer consultas sobre varias bases de datos de contenido, y las consultas sobre jerarquias son muy lentas desde el punto de vista de rendimiento).

Por estos motivos, se decidió crear una capa de acceso a datos, que permitiese abstraer los detalles de la taxonomía y UGC de los controles visuales (webparts).

 

Una vez que se implementó el sistema sobre estos principios tuvimos que esperar algunos parches de producto para ajustar el rendimiento del buscador a los requisitos deseados, así como acometer algunos desarrollos personalizados para cubrir las expectativas de los redactores. Y finalmente lo tienen disponible en noticias.terra.es