Restate es una plataforma de ejecución duradera diseñada para abordar los desafíos de los sistemas distribuidos complejos al desarrollar aplicaciones con estado y tolerantes a fallos. Registra cada paso mediante un sistema de registro (journaling) de ejecución, lo que garantiza tolerancia a fallos, recuperación confiable y comunicación exactamente una vez (exactly-once) entre servicios. La principal ventaja arquitectónica de la plataforma radica en separar la lógica de aplicación en tres tipos de servicios duraderos: Basic Services, para funciones sin estado; Virtual Objects, para modelar entidades concurrentes con estado; y Workflows, para orquestar procesos complejos y de múltiples pasos. Hemos estado evaluando Restate cuidadosamente en un gran sistema de seguros y, hasta ahora, estamos muy satisfechos con su rendimiento.
Restate es una plataforma de ejecución duradera, similar a Temporal, desarrollada por los creadores originales de Apache Flink. Entre sus características, ofrece flujos de trabajo como código, procesamiento de eventos con estado, el patrón saga y máquinas de estado duraderas. Escrito en Rust y desplegado como un único binario, utiliza un registro distribuido para almacenar eventos, implementado mediante un algoritmo de consenso virtual basado en Flexible Paxos, lo que garantiza durabilidad incluso en caso de fallo de un nodo. Los SDKs están disponibles para los lenguajes más comunes: Java, Go, Rust y TypeScript. Seguimos sosteniendo que es mejor evitar transacciones distribuidas en sistemas distribuidos, debido tanto a la complejidad adicional como al inevitable sobrecoste operativo que implican. Sin embargo, esta plataforma merece ser evaluada si en tu entorno no puedes evitar el uso de transacciones distribuidas.