Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cosmonic-labs/concordance
Opinionated Event Sourcing Framework based on wasmCloud
https://github.com/cosmonic-labs/concordance
distributed-systems event-sourcing wasmcloud webassembly
Last synced: about 1 month ago
JSON representation
Opinionated Event Sourcing Framework based on wasmCloud
- Host: GitHub
- URL: https://github.com/cosmonic-labs/concordance
- Owner: cosmonic-labs
- License: apache-2.0
- Created: 2023-03-07T19:52:11.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-03T16:42:27.000Z (11 months ago)
- Last Synced: 2024-02-23T16:34:55.222Z (7 months ago)
- Topics: distributed-systems, event-sourcing, wasmcloud, webassembly
- Language: Rust
- Homepage:
- Size: 15.5 MB
- Stars: 49
- Watchers: 5
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Concordance from Cosmonic
Concordance is an open source, opinionated event sourcing framework from Cosmonic. Building on the power, portability, speed, and scalability of [wasmCloud](https://wasmcloud.com), Concordance allows you to reason about your application using the fundamental building blocks of event sourcing:
* **Aggregates** - WebAssembly components that derive state from an event stream, validate incoming commands, and emit events in response to those commands.
* **Projectors** - WebAssembly components that _project_ read-optimized data (aka materialized views) based on streams of incoming events
* **Process Managers** - Known as _sagas_ in other paradigms, a process manager is the inverse of an aggregate: it processes inbound events and starts, advances, and stops processes by emitting the corresponding commands.
* **Stateless Event Handlers** - used for entities such as **notifiers** and **gateways**, you can build WebAssembly components that receive events on a stream and then execute whatever you choose for your business logic._"Contraints liberate, liberties constrain"_ - Runar Bjarnason
This quote is a foundational principle behind this event sourcing library. You'll find that aggregates are unable to do anything other than return a list of events. They are unable to produce side-effects, which is a good thing:tm:. Likewise, process managers cannot produce side-effects, they can only return a list of commands. Side-effects are explicitly forced into the perview of notifiers (stateless event handlers).
For information on how to operate Concordance-based applications in production as well as how to build applications using Concordance, please take a look at the [developer's guide](https://cosmonic.com/docs/oss/concordance).
⚠️ **Under Development** ⚠️ - _Concordance is under heavy development right now and, as such, the APIs and developer experience will be rapidly changing (for the better). Building applications on it now should be done with the idea of rapid change in mind.