# Distributed Transactions & Saga ## πŸ“˜ Resources - [Sairyss/distributed-systems-topics](https://github.com/Sairyss/distributed-systems-topics) - Topics and resources related to distributed systems, system design, microservices, scalability and performance, etc ## πŸ“• Articles - [Saga distributed transactions pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/saga) - [Life Beyond Distributed Transactions: An Apostate's Implementation - A Primer](https://jimmybogard.com/life-beyond-transactions-implementation-primer/) - [It’s Time to Move on from Two Phase Commit](http://dbmsmusings.blogspot.com/2019/01/its-time-to-move-on-from-two-phase.html) - [Saga Pattern for Microservices Distributed Transactions](https://medium.com/design-microservices-architecture-with-patterns/saga-pattern-for-microservices-distributed-transactions-7e95d0613345) - [Microservices Distributed Transactions](https://medium.com/design-microservices-architecture-with-patterns/microservices-distributed-transactions-a71a996e5db8) - [A MICROSERVICES SAGA CHOREOGRAPHY EXAMPLE](https://akfpartners.com/growth-blog/a-microservices-saga-choreography-example) - [MICROSERVICES SAGA PATTERN](https://akfpartners.com/growth-blog/microservices-saga-pattern) - [Event-driven distributed processes by example](https://event-driven.io/en/event_driven_distributed_processes_by_example/) - [Saga and Process Manager - distributed processes in practice](https://event-driven.io/en/saga_process_manager_distributed_transactions/) - [How to deal with back-pressure on message queues with .NET Core](https://www.davidguida.net/how-to-deal-with-back-pressure-on-message-queues-with-net-core/) - [Using Channels In C# .NET – Part 3 – Understanding Back Pressure](https://dotnetcoretutorials.com/2020/11/24/using-channels-in-net-core-part-3-understanding-back-pressure/) - [Four Strategies to Handle Backpressure - Jay Phelps at ReactiveConf 2019](https://www.infoq.com/news/2019/10/reactiveconf-2019-backpressure/) - [Coordination in the distributed systems](https://rafaelldi.blog/posts/coordination-in-the-distributed-systems/) - [Choreography](https://rafaelldi.blog/posts/choreography/) - [Orchestration](https://rafaelldi.blog/posts/orchestration/) - [Saga and Process Manager - distributed processes in practice](https://event-driven.io/en/saga_process_manager_distributed_transactions/) - [Saga patterns: wrap up - Jimmy Bogard](https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/) - [Handling Complexity: Using Sagas to Provide Transactional Support for Distributed Systems](https://medium.com/ssense-tech/handling-complexity-using-sagas-to-provide-transactional-support-for-distributed-systems-61ae909e0829) ⭐ - [Implementation of Choreography-based Saga in .NET Microservices](https://www.gokhan-gokalp.com/en/implementation-of-choreography-based-saga-in-dotnet-microservices/) - [Sagas: When a Distributed Transaction Is The Right Thing For You](https://medium.com/cloud-native-daily/sagas-when-a-distributed-transaction-is-the-right-thing-for-you-dd110253ed1a) - [How to handle multiple commands in the same transaction](https://event-driven.io/en/simple_transactional_command_orchestration/) - [Combining the To-Do List and the Passage Of Time patterns for resilient business workflows](https://event-driven.io/en/to_do_list_and_passage_of_time_patterns_combined/) - [Low Ceremony Sagas with Wolverine](https://jeremydmiller.com/2024/08/20/low-ceremony-sagas-with-wolverine/) - [Saga Orchestration for Microservices Using the Outbox Pattern](https://www.infoq.com/articles/saga-orchestration-outbox/) ⭐ - [Distributed Transactions in Microservices with Kafka Streams and Spring Boot](https://piotrminkowski.com/2022/01/24/distributed-transactions-in-microservices-with-kafka-streams-and-spring-boot/) - [Deep Dive into Saga Transactions with Kafka Streams and Spring Boot](https://piotrminkowski.com/2022/02/07/deep-dive-into-saga-transactions-with-kafka-streams-and-spring-boot/) - [Saga patterns in Akka (part 1) - event choreography](https://akka.io/blog/saga-patterns-in-akka-part-1-event-choreography) ## πŸ“Ί Videos - [Life Beyond Distributed Transactions: An Apostate's Implementation - Jimmy Bogard](https://www.youtube.com/watch?v=AUrKofVRHV4) - [Fixing Distributed Systems Fail with Jimmy Bogard](https://www.youtube.com/watch?v=p0M1rrmfrWg) - [Saga pattern within Masstransit](https://www.youtube.com/watch?v=Vsnz7np84Vc) - [Distributed Sagas: A Protocol for Coordinating Microservices - Caitie McCaffrey](https://www.youtube.com/watch?v=0UTOLRTwOX0) - [Solving distributed data problems in a microservice architecture | Microservices.io](https://www.youtube.com/watch?v=AEbJgpamZ4w) - [Backpressure in Reactive System](https://blog.frankel.ch/backpressure-reactive-systems/) - [Avoiding Distributed Transactions with the Reservation Pattern](https://www.youtube.com/watch?v=PZm0RQGcs38) - [At Least Once - Ian Cooper - NDC Oslo 2022](https://www.youtube.com/watch?v=_9ULo-F4nmE) ## Library - [event-driven-dotnet/EventDriven.Sagas](https://github.com/event-driven-dotnet/EventDriven.Sagas) - Abstractions and reference architecture for atomic operations that span multiple services. ## πŸš€ Samples - [markgossa/Reference-Event-Driven-Architecture](https://github.com/markgossa/Reference-Event-Driven-Architecture) - [oskardudycz/EventSourcing.NetCore/Sample/HotelManagement](https://github.com/oskardudycz/EventSourcing.NetCore/tree/main/Sample/HotelManagement) ⭐ - [piomin/sample-spring-kafka-microservices](https://github.com/piomin/sample-spring-kafka-microservices) - Example microservices showing how to use Kafka and Kafka Streams with Spring Boot on the example of distributed transactions implementations with the SAGA pattern