Engines de Execução Durável: De Transações Distribuídas a Temporal
Este artigo explora a evolução dos engines de execução durável (como o Temporal), começando com transações de banco de dados iniciais, transações distribuídas e arquiteturas de RPC/microsserviços tolerantes a falhas. O autor analisa o exemplo "Six Little Lines of Fail" de Jimmy Bogard, destacando os desafios no tratamento de chamadas de funções entre serviços, como rollback de transações e mecanismos de retry. O artigo revisa as limitações das transações distribuídas (como o commit em duas fases), e explora tentativas no mundo Java com JSR-95 (Activity Service) e padrões de serviços web (como WS-AtomicTransaction), observando sua adoção limitada. O autor analisa ainda a ascensão recente de arquiteturas de microsserviços e os mecanismos correspondentes de tolerância a falhas, juntamente com event sourcing, orquestração e coreografia. Finalmente, o artigo compara engines de execução durável modernas, como Temporal, Restate e DBOS, incluindo seus modos operacionais, métodos de armazenamento de dados e integração com arquiteturas serverless, destacando sua importância na resolução de problemas de confiabilidade em sistemas distribuídos.