Adrian RomoAdrian Romo
Todos los textos
Nota de arquitectura 2 min de lectura

¿Qué Merece Atención Hoy?

Mi homelab genera un veredicto cada mañana: algo te necesita, o nada lo hace. Conseguir que la segunda parte fuera honesta fue mucho más difícil que la primera.

Tengo muchos analizadores. Uno encuentra decisiones documentadas que ya no son ciertas. Otro encuentra creencias contradichas por el estado en vivo. Otro encuentra temas que la documentación nunca cubre. Otro encuentra desviaciones entre lo declarado y lo que está en ejecución.

Cada uno produce hallazgos. Juntos produjeron un muro, y un muro no es información.

Así que hay una capa encima de todos ellos cuyo trabajo completo es responder una sola pregunta: ¿alguien me necesita hoy? Devuelve uno de dos veredictos. Atención requerida, con los ítems fundamentados. O todo en orden.

El todo en orden es la mitad difícil

Una alerta es fácil de justificar — apunta a algo. Un todo en orden apunta a una ausencia, y una ausencia solo es significativa si sabes qué se buscó.

Entonces la regla es: cada señal suprimida tiene que decir por qué fue suprimida. No un conteo de cosas filtradas, sino una razón por cada cosa. Si un hallazgo fue descartado porque ya estaba resuelto, lo dice. Si fue descartado por ser un duplicado de otro hallazgo, nombra al otro. El veredicto muestra esos motivos junto con el todo en orden, así que "nada te necesita" es auditable en lugar de solo afirmado.

El bug que lo hizo mentir

Mientras revisaba este código encontré que el todo en orden se calculaba sobre una lista codificada de fuentes.

Cada fuente en la lista se revisaba correctamente. La lógica era correcta. Pero la lista se escribió una vez, y los analizadores añadidos después simplemente no estaban en ella — así que el veredicto silenciosamente significaba "todo en orden en las fuentes que recordé enumerar," mientras se presentaba como "todo en orden."

Ese es el peor fallo posible para este componente, porque falla hacia el silencio. Un sistema de alertas que falla ruidosamente se arregla en la primera mañana. Uno que falla silenciosamente se confía más cuanto más tiempo está roto, porque mira qué tranquilo está todo.

La solución fue una puerta de cobertura: el veredicto ahora tiene que considerar cada fuente que existe, y si no puede, se niega a decir todo en orden. En su lugar reporta cobertura incompleta — que es una tercera respuesta, y honesta.

Ausencia de señal no es ausencia de problema

La forma general, que ahora aplico en todas partes:

Un resultado negativo es una afirmación, y necesita el mismo fundamento que uno positivo. "No hay hallazgos" debería ser tan rastreable como "aquí hay un hallazgo." Si tu monitoreo no puede decirte qué revisó cuando dice que todo está bien, no te está diciendo que todo está bien. Te está diciendo que no encontró nada, lo cual es una afirmación sobre el buscador.

La consecuencia que obtuve gratis: una vez que el todo en orden tuvo que justificarse, empezó a detectar bugs en los analizadores debajo de él. Una fuente que deja de producir hallazgos se ve idéntica a una fuente que está rota — a menos que algo esté contando fuentes.

Escrito por

Adrian Romo

Ingeniero Backend Senior que diseña APIs escalables en Python, arquitecturas sobre AWS Lambda, sistemas de voz e integraciones empresariales.

Continúa

¿A dónde sigues?

Explora más textos técnicos, revisa los casos de estudio o escríbeme directo.