Sapher seeks to help developers implement communication between services in a microservices context, and was built with choreographed sagas in mind - more context here.
Usually, in a microservices architecture:
- A business process spans across multiple services.
- Each service executes its step of the process.
- Each step naturally has a single input and can expect multiple responses depending on the input execution.
- It may or may not execute compensating operations when receiving the responses.
Sapher is modelled around these 4 main ideas, which are detailed and represented here
Please read the guide to start using Sapher.
More details are provided in wiki pages.
- Polly - Used to implement Retry policies.
Sapher provides extension points for Persistence and Logging. Please read EXTENSIBILITY.md to understand how you can do this.
Please read CONTRIBUTING.md for details on the code of conduct, and the process for submitting pull requests to this project.
This project uses SemVer for versioning. For the versions available, see the tags on this repository.
- João Neves - Initial work - joaodiasneves
See also the list of contributors who participated in this project.
This project is licensed under the MIT license - see the LICENSE.md file for details
For being inspiration and references for this project:
- Adam Ralph
- Daniel Gerlag
- James Lewis
- Martin Fowler
- Sam Newman
For having the patience (and the passion) to discuss with me some topics regarding software engineering and architecture:
- André Correia
- Isabel Azevedo
- Jorge Loureiro
- Luis Pinto