Gato durmiendo

La continuación de nuestra discusión sobre los registros (logs) hace referencia a la famosa frase “Quis custodiet ipsos custodes?” ("¿Quién custodiará a los propios custodios?" o “¿Quién vigila a los vigilantes?”).

Cualquier sistema grande —ya sea técnico o social (por ejemplo, la sociedad y sus instituciones)— necesita herramientas de monitoreo y registro para entender qué salió mal en caso de una situación anormal y rastrear toda la cadena de eventos hasta la fuente del problema (en la jerga de los programadores, esto se llama depuración o debugging).

Una vez que se encuentra el problema, se puede solucionar y hacer todo lo posible para evitar que se repita en el futuro. Pero mientras las causas del problema no estén claras, nuestras manos están atadas por la incertidumbre.

Nota: Sin embargo, incluso en condiciones de incertidumbre, existen formas de prevenir situaciones anormales, incluso si no conocemos de antemano su fuente potencial. Dichos métodos se llaman “vallas” (“pongamos una valla aquí”) o “guardias” (guards) en la jerga de los programadores. Los discutiremos por separado a su debido tiempo.

Sin embargo, la paradoja es que el sistema de monitoreo, seguimiento y registro es en sí mismo un sistema y también es propenso a errores (y abusos, si hablamos de la sociedad). En cierto sentido, es como un gato persiguiendo su propia cola.

Debido a que se confía una “misión” tan seria a los sistemas de registro / monitoreo, requieren un diseño y una depuración más exhaustivos. Los errores en este sistema serán más costosos, ya que impregnan todo el sistema. Lo mismo puede decirse de los organismos encargados de hacer cumplir la ley, los departamentos de seguridad interna y servicios similares encargados de garantizar que todo proceda como debería.

Pero eso no es todo. Además de que el subsistema de registro y monitoreo puede ser en sí mismo una fuente de errores que nadie podrá detectar, su uso dentro del sistema general no es gratuito. Así como la sociedad debe (a través de impuestos) pagar el trabajo de todos los organismos de control y aplicación de la ley, dentro de un sistema técnico, el registro y monitoreo:

  • consume tiempo de CPU;

  • consume parte de la memoria RAM;

  • utiliza espacio en disco (SSD / HDD / tarjeta flash), aumentando también el desgaste del disco;

  • carga la red al transmitir registros o señales de monitoreo a un almacenamiento centralizado.

Y lo más importante: para crear y mantener sistemas de registro y monitoreo, también debe dedicarse tiempo de desarrollo (lo que se llama horas-hombre o -persona a ellos, no solo a desarrollar el programa principal.

Todo lo anterior aumenta el costo del producto de software final. Pero para muchos sistemas, tener subsistemas de registro y monitoreo no es un lujo sino una necesidad, porque el daño por una situación anormal a menudo puede superar todo lo ahorrado anteriormente en estos sistemas.

Y finalmente: agregamos registro (logging) a nuestros programas para comprender mejor qué hacen y cuándo. Para comprender mejor las causas de los problemas potenciales. Pero a veces la mera adición de registros cambia el comportamiento del programa (después de todo, afectamos tanto la carga de la CPU como la distribución de datos en la memoria, así como las características de tiempo de nuestro programa).

Aquí se puede establecer un paralelo con la física: el efecto observador —cuando el observador influye en el sistema simplemente por el hecho de su presencia. Esto es particularmente evidente en la física cuántica.

Por cierto, en la criptografía cuántica, el efecto observador se utiliza positivamente: cualquier intento de escuchar la “transmisión” la cambia irreversiblemente, permitiendo así detectar la interceptación.

En la parte final de nuestra discusión (con asterisco) sobre registros, hablaremos sobre cómo reducir el impacto del sistema de registro en el sistema general: reducir la carga de la CPU, disminuir el consumo de memoria, etc. También discutiremos cómo evitar ahogarnos en los registros.