Esta semana ha sido especialmente dura en el CERN.
Un campus que alberga una serie de experimentos tan complejos no puede escaparse de los problemas técnicos. Sobre todo cuando dependes tantísimo de la técnica. A estas alturas muchos habréis oído la historia del pájaro y la baguette. Esta semana nuestras instalaciones han sufrido un nuevo corte eléctrico, el cual ha afectado a un gran número de componentes clave en el funcionamiento de la investigación.
En lo que a mí respecta, ha supuesto algo más que un apagón durante la noche…
Colectores de datos
Parte de mi trabajo consiste en estudiar, diseñar y mejorar algunos de los colectores de datos que facilitan la vida a los físicos. Un colector no es más que un programa encargado de recoger datos de diferentes fuentes, procesarlos de alguna manera, y volverlos a guardar de forma centralizada para su uso posterior.
LCG
El LHC Computing Grid es la red de computación del CERN. Es decir, la malla de ordenadores que procesan de manera conjunta los datos generados por el LHC.
El flujo de datos proveniente de los experimentos del CERN (esto es ATLAS, CMS, ALICE y LHCb) es de hasta 300Gb/s. Esta ingente cantidad de información es filtrada hasta su milésima parte, la cual es transmitida al LCG para su procesado. Esto se traduce en 27TB al día, o 10-15 PB al año (así a ojo, unos cuatro mil millones de canciones).
Evidentemente, el CERN no concentra toda la potencia de cálculo necesaria en un mismo lugar. El LCG se distribuye alrededor de todo el mundo en los denominados Tiers. El Tier-0 es el centro de cálculo del CERN, el cual envía los datos al resto de sitios en una jerarquía de 4 niveles.
No resulta complicado entender que esta infraestructura es sumamente compleja, además de esencial para los experimentos. Es necesario mucho trabajo para su funcionamiento, tanto en su tecnología como en su cometido. En el CERN, casi un centenar de personas trabajamos en colaboración con otras entidades para hacer esto posible.
CMS y SSB
Como probablemente sabéis, CMS (Compact Muon Solenoid) (sitio oficial) es uno de los cuatro experimentos principales que rodean el LHC. Es un detector de partículas de carácter general. Como decía el rap del LHC, looking for whatever new particles they can find.
SSB (Site Status Board) es la aplicación del LCG que utilizan los responsables de CMS para comprobar que toda la infraestructura de cálculo y almacenamiento de datos del experimento funciona correctamente. Entre otras cosas, en SSB analizamos el rendimiento de los diferentes servidores repartidos en las organizaciones pertenecientes a cada Tiers.
El problema
En informática es una práctica común desarrollar las aplicaciones en un entorno aislado del oficial o en producción. Esto permite comprobar que el desarrollo no contiene fallos antes de liberarlo. Como es normal, SSB se realiza bajo un entorno de desarrollo, el cual es verificado por los responsables de CMS.
Por desgracia, los entornos de desarrollo y producción de SSB no estaban completamente aislados. Concretamente, se mantienen aislados los servidores web, encargados de analizar los datos y mostrarlos al usuario; pero estos servidores comparten una misma base de datos, y en definitiva, una serie de colectores.
Atando cabos podemos deducir que no es posible desarrollar de manera segura los colectores de datos (¡o resulta muy difícil!), pues el entorno de desarrollo está conectado a la base de datos de producción.
La semana pasada surgieron, como de costumbre, ciertos errores en SSB. A pesar de que es normal recibir unos cuantos informes de mal funcionamiento, no tuvimos mucha suerte al descubrir fallos relativamente severos en un momento en el que el responsable de SSB no estaba disponible.
La urgencia de arreglar estos fallos me puso en una mala situación. El responsable indisponible, y mi sección presionada para arreglar esos fallos cuanto antes. Mi jefa tuvo que pedirme que echara un vistazo e intentara arreglar los problemas… y así lo hice. Arreglé los bugs que nos habían reportado y pedí a los responsables de CMS que verificaran el estado de la aplicación modificada. Estos dieron el visto bueno y nos quedamos todos tranquilos.
¿Dónde está el truco? Por supuesto, un estudiante no debe nunca actualizar un servidor de producción. Consciente de esto, realicé los cambios en el servidor de desarrollo, a espera de que el responsable propagase la actualización a producción en cuanto pudiera. No actualicé el servidor de producción, pero actualicé involuntariamente los colectores de datos. Es decir, puse colectores todavía en desarrollo, de los cuales no había comprobado su validez, en el servidor.
Resulta que debido una mala gestión de la aplicación, los colectores de datos oficiales funcionan bajo el servidor de desarrollo. En esencia no es relevante, puesto que los dos servidores comparten la base de datos oficial. Por supuesto esto, sumado a mi ignorancia y descuido en la actualización, provocó una serie de problemas graves.
Tras el corte de luz se reinició el servidor de desarrollo, cargando los colectores modificados que había situado allí por error. Estos colectores no estaban preparados para funcionar en producción, por lo que empezaron a introducir datos incoherentes en la base de datos oficial. Datos incorrectos significa gráficas incorrectas, y sin gráficas los investigadores son incapaces de controlar el progreso de los experimentos.
Desenlace
El descontrol que había causado generó una serie de emails severos, un par de confrontaciones entre los desarrolladores afectados, y un montón de estrés tanto para CMS como para nosotros.
Afortunadamente, la solución fue rápida y al final del día pudimos dejar todo como estaba. El responsable limpió la base de datos y restableció los colectores correctos. El trabajo se centra ahora en arreglar de una vez por todas el aislamiento de los entornos, para que estudiantes como yo podamos fastidiarla de manera controlada.
Espero que hayan aprendido a no poner a un estudiante en una situación tan delicada, sin tomar las medidas de contención necesarias. Por su parte, yo he aprendido un montón de cosas tanto de la aplicación como de su organización. También he aprendido a tener cuidado incluso cuando trabajo con un entorno de desarrollo… y por último, he aprendido lo que es trabajar en investigación, con un sistema crítico y una cantidad de estrés que tardaré varios días en liberar.
[Escrito por Jacobo Tarragón]