El enfoque de Sagas con estado persistente que mencionaste es sólido, especialmente para operaciones complejas donde la consistencia eventual es aceptable. Sin embargo, en sistemas de alta concurrencia, el overhead de la compensación puede volverse significativo si las fallas son frecuentes. ¿Has considerado combinar Sagas con patrones como el Outbox Pattern para mejorar la fiabilidad en la propagación de eventos, o usas solo la tabla de sagas para manejar todo el ciclo?
Respecto al rediseño de dominios, estoy de acuerdo en que es crucial, pero en sistemas legacy o con restricciones de tiempo, a veces no es factible reestructurar servicios de inmediato. En esos casos, una capa de orquestación con herramientas como Temporal o Camunda puede ayudar a gestionar transacciones distribuidas sin rediseñar por completo, aunque introduce complejidad adicional. ¿Alguien ha evaluado el impacto de estas herramientas en la latencia comparado con soluciones custom como el detector de deadlocks?
Para deadlocks inevitables, además de Sagas, técnicas como timeouts agresivos con retry exponencial y circuit breakers pueden mitigar bloqueos sin necesidad de detección en tiempo real. Por ejemplo, en bases de datos distribuidas como CockroachDB, el uso de SELECT ... FOR UPDATE SKIP LOCKED puede reducir contenciones. ¿Se ha probado algo similar en tu entorno, o prefieres evitar bloqueos a nivel de BD por completo?