En el contexto de sistemas distribuidos y arquitecturas orientadas a eventos, un 'Fact' (hecho) es una declaración atómica, inmutable y verificable sobre un evento o estado que ocurrió en un momento específico. A menudo se le asocia un timestamp y un identificador único, y una vez registrado, no puede ser modificado ni eliminado. Los 'Facts' son la base para construir historiales de eventos, logs de auditoría y sistemas de "event sourcing", donde el estado actual del sistema se deriva de la secuencia acumulada de hechos pasados.
Los 'Facts' son ampliamente utilizados en sistemas que requieren alta fiabilidad, auditoría y consistencia eventual. Por ejemplo, en bases de datos inmutables como Datomic o sistemas de contabilidad distribuida (ledgers) basados en blockchain, cada transacción o cambio de estado se registra como un 'Fact'. En arquitecturas de "event sourcing" (ej. con Apache Kafka o AWS Kinesis), los eventos que representan cambios de estado son esencialmente 'Facts' que se publican en un "event log" inmutable. Sistemas de monitoreo y observabilidad también generan 'Facts' (métricas, logs, traces) que describen el comportamiento del sistema en un punto en el tiempo.
Para un arquitecto, comprender los 'Facts' es crucial para diseñar sistemas resilientes y auditables. Su inmutabilidad simplifica la recuperación de fallos, la depuración y la replicación, ya que no hay estados intermedios inconsistentes. Sin embargo, impone desafíos en la gestión del almacenamiento (los datos solo crecen) y en la reconstrucción del estado actual (requiere procesar todos los 'Facts' relevantes). La elección de una arquitectura basada en 'Facts' implica un trade-off entre la simplicidad de la consistencia y la complejidad de la gestión de datos históricos, siendo ideal para dominios donde la trazabilidad y la integridad histórica son primordiales.