El caso de los 82 segundos

Escrito por
Xavier GrosCTO
Publicado
6 min de lectura
Etiquetas
Cómo trabajamos

Una búsqueda en la web tardaba 82 segundos y había una primera sospecha sobre la mesa. El caso podía haberse cerrado con un retoque. Lo seguimos hasta el final.

Ilustración en acuarela de un tablero de corcho de investigación. En el centro hay un cronómetro plateado clavado con una chincheta, y de él salen hilos rojos hacia un billete de tren, un mapa con un punto rodeado en rojo, fotos de una estación, un túnel y un pueblo, la silueta de un hombre con sombrero, el dibujo de una mochila y notas manuscritas.
Una búsqueda de 82 segundos nos llevó hasta un fallo de hace años (DB/IA).

El aviso llegó de noche. La base de datos de la web de un cliente trabajaba muy por encima de lo normal y su proveedor de hosting había localizado el motivo: las búsquedas tardaban de media 82 segundos en resolverse, mientras varios robots lanzaban una tras otra. A la mañana siguiente, el caso estaba en nuestra mesa.

Menos de una hora después de abrirse el ticket, habíamos respondido con la causa real, una medición que la demostraba y la lista exacta de lo que había que comprobar en producción.

El fallo en sí es lo de menos: dos piezas de la base de datos que llevaban años sin entenderse, y una avalancha de búsquedas que lo hizo evidente. Lo que merece contarse es el trabajo, porque es la parte del soporte que no se ve cuando todo funciona.

El primer sospechoso tiene derecho a coartada

Todo caso llega con una primera hipótesis. Esta señalaba una parte concreta de la base de datos, era razonable y venía de quien mejor conoce los servidores. Lo cómodo habría sido retocar esa parte y esperar a ver qué pasaba.

La comprobamos antes, y estaba bien. Así lo dijimos en el ticket, junto con el motivo: tocarla no iba a arreglar nada. El cliente se ahorró un cambio inútil en una web en producción, con su coste y su riesgo. Eso no aparece en ningún informe, y también es trabajo de soporte.

La escena del crimen no se toca

Investigamos en nuestro entorno de desarrollo, con el mismo código y una copia de los datos reales. Mientras tanto, la web siguió atendiendo a sus visitantes sin enterarse de nada.

Ahí reprodujimos el problema, lo aislamos y probamos la solución. Las mismas búsquedas pasaron a ser entre 8 y 12 veces más rápidas y devolvieron exactamente los mismos resultados. Lo segundo importa tanto como lo primero, porque una búsqueda muy rápida que encuentra otra cosa es otra avería.

Con esa prueba en la mano ya no estábamos pidiendo a nadie que confiara en nuestra intuición.

Una investigación, un solo hilo

El hosting ve sus servidores y nosotros vemos la web por dentro. Nadie lo ve todo desde su lado, así que un caso así solo se resuelve si los dos trabajan juntos.

Fue un buen ejemplo. El proveedor había dado el aviso a tiempo y con datos. Nosotros le indicamos en el ticket qué mirar y qué tenía que salir si estábamos en lo cierto. Lo comprobó en sus dos entornos y lo confirmó. Propuso una prueba controlada de la corrección y le añadimos cómo volver atrás si algo iba mal. También le propusimos frenar a los robots antes de que llegaran a la base de datos, porque la protección que había no bastaba.

El cliente estuvo en ese hilo desde el principio. Pudo ver qué pasaba y quién lo llevaba, y no tuvo que reenviar un solo correo entre un proveedor y otro.

Si la respuesta a todo es «hemos reiniciado y ya va», el caso sigue abierto.

Hasta el final del rastro

Cuando los robots se fueron, la carga volvió a la normalidad. A efectos prácticos, ya no había incidencia, y muchas se cierran justo en ese momento. La causa seguía allí, esperando a los siguientes robots.

Quedaba además la pregunta que separa arreglar algo de entenderlo: ¿por qué ha pasado y cómo evitamos que vuelva a pasar? La respondimos en el ticket el mismo día que se planteó, después de seguir el rastro por el historial del software hasta su origen. El culpable llevaba años en casa. Venía de la versión con la que se construyó la web, y esa web la construimos nosotros, así que lo dijimos tal cual.

Conocer el origen nos dio lo que un parche nunca da: saber qué hay que corregir exactamente, confirmar que una actualización rutinaria no lo habría resuelto y poder asegurar que lo que se cree a partir de ahora ya saldrá bien.

Sentencia pendiente de ejecución

Mientras escribimos esto, la corrección entra en prueba controlada en preproducción. Antes de dar ese paso ya comprobamos que el cambio era seguro y dejamos por escrito qué hacer si algo se torcía. Cuando llegue a producción, se medirá antes y después, porque esa será la cifra que cuente.

Para reunir todo lo anterior no hemos tenido que tocar producción ni una sola vez.

Cuatro preguntas para tu soporte

Valen para cualquier incidencia en tu web, la lleve quien la lleve.

01Causa

¿Te han explicado qué falla, o solo qué han hecho para que deje de notarse?

02Prueba

¿Hay una medición del antes y el después, o solo la sensación de que ahora va mejor?

03Origen

¿Sabes desde cuándo pasa y por qué? Sin esa respuesta, nadie puede decirte si volverá.

04Coordinación

Cuando intervienen el hosting y el equipo de la web, ¿hablan entre ellos o eres tú quien reenvía los correos?

Si la respuesta a todo es «hemos reiniciado y ya va», el caso sigue abierto.

Fuentes

Para quien quiera entrar en el detalle técnico.

¿Hablamos de tu contenido?

Hablemos

En Digital Bakers escribimos así: con criterio humano delante y la tecnología detrás, empujando.