En sistemas distribuidos y de procesamiento de flujos, una 'watermark' es un indicador de progreso que certifica que todos los eventos con un 'timestamp' (marca de tiempo) igual o anterior a la 'watermark' han sido observados, procesados o están garantizados de no aparecer en el futuro. No es una marca de tiempo de un evento individual, sino una declaración sobre el estado global o de una partición del sistema. Las 'watermarks' son fundamentales para determinar la completitud de los datos en una ventana temporal, detectar eventos tardíos ('late events') y avanzar el estado de agregaciones o cálculos basados en tiempo.

Las 'watermarks' se implementan ampliamente en motores de procesamiento de flujos. Apache Flink las utiliza para gestionar el tiempo de eventos ('event time') y procesar ventanas temporales, permitiendo que las operaciones de ventana cierren y emitan resultados una vez que la 'watermark' ha superado el final de la ventana. Apache Kafka Streams también las emplea para garantizar la progresión del procesamiento de 'event time' en sus topologías de flujo. En bases de datos distribuidas o sistemas de replicación, las 'watermarks' pueden indicar el punto hasta el cual los datos han sido replicados consistentemente o aplicados en todos los nodos, asegurando la durabilidad y la consistencia de lectura.

Para un arquitecto, las 'watermarks' son vitales para diseñar sistemas de procesamiento de datos que requieran garantías de completitud y corrección temporal. La elección de la estrategia de generación de 'watermarks' (heurísticas, basadas en tiempo de ingesta, etc.) impacta directamente en la latencia y la precisión de los resultados. 'Watermarks' agresivas reducen la latencia pero aumentan la probabilidad de 'late events' y la necesidad de mecanismos de corrección. 'Watermarks' conservadoras garantizan mayor completitud pero introducen latencia. Comprender cómo las 'watermarks' interactúan con la tolerancia a fallos, la reordenación de eventos y el escalado horizontal es crucial para construir arquitecturas robustas y eficientes que manejen grandes volúmenes de datos en tiempo real o casi real.