-
Notifications
You must be signed in to change notification settings - Fork 2
Content for the solution pattern #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 15 commits
bfe9d7b
7f6da47
0692ece
f60fc47
f7f4257
f9b6f36
5c2c042
2a5ba67
3e83a6e
aeabc6d
e4a7720
360f9fb
74aeae3
5995862
66b1614
47a6152
9521ee3
5280cd0
896b3d7
9f1b45b
25b6ab0
e40919a
357b7bd
f1240b1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,28 @@ | ||
| == The story behind this solution pattern | ||
|
|
||
| A description of the story that was used to build the demo and architectures of this SP. | ||
| Cabs is a fictional transportation company. | ||
| Engineers at Cabs were struggling with their transactional-style, monolith application. | ||
| They recently started an effort to modernize it. | ||
|
|
||
| The team saw a https://www.youtube.com/watch?v=Rc5IO6S6ZOk[talk on _Event Mesh_]. | ||
| The talk presented the advantages of moving beyond transactional architectures in favor of eventual consistency. | ||
| By leveraging event meshes with technologies like Knative, developers can achieve decoupled, reliable microservices without extensive re-engineering. | ||
| This solution addresses inefficiencies and aligns distributed systems with real-world business processes. | ||
| The team had figured out they could leverage the _CQRS_ pattern together with _Knative's Event Mesh_ | ||
| to modernize their application in a non-extrusive way. | ||
|
|
||
| == The Solution | ||
|
|
||
| This is a summary of the solution | ||
| The core of this solution is an event mesh—a dynamic, flexible layer that routes, retries, and processes asynchronous events across distributed components. | ||
|
||
| Using _Knative Eventing_ and _CloudEvents_, this pattern enables: | ||
|
|
||
| - *Reliable delivery* of events with retry mechanisms. | ||
| - Simplified *asynchronous workflows*. | ||
| - *Decoupling* of services to improve scalability, testability and resilience. | ||
|
|
||
| The approach of Cabs engineering team is to extract well-defined services, using the _CQRS_ pattern to identify _Commands_ from _Queries_, and model the | ||
| _Commands_ as _Events_. | ||
| Those events will be routed to the _Event Mesh_ with regular _HTTP_ messages. | ||
| The _CloudEvents_ library ensures the proper serialization of the events to and from the _HTTP_ messages. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. a link would be cool
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The links are collected in the Technology stack section: https://cardil.github.io/solution-pattern-event-mesh-for-microservices/pull-1/solution-pattern-event-mesh-for-microservices/02-architecture.html#tech_stack Looks like all the patterns follow that structure. Even more links are present in the https://cardil.github.io/solution-pattern-event-mesh-for-microservices/pull-1/solution-pattern-event-mesh-for-microservices/developer-resources.html page There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd write CNCF CloudEvents at least once on the beginning section. To underline its importance: A standard
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yeah, just a proposal. Maybe link from here to the resource section ? 🤔 |
||
| The _Event Mesh_ | ||
| will handle not only the persistence of the events in-flight, but also all the required logic of retry in case of endpoint failure. | ||
Large diffs are not rendered by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A reference to CQRS definition would be helpful
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we could link to this one? https://www.redhat.com/en/blog/pros-and-cons-cqrs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that - or why not the one to here: https://martinfowler.com/bliki/CQRS.html ?
I guess I personally don't care which to use
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I got an answer from @jayachristina, that it's okay to link to neutral, external resources. The Fowler's page seams like one.