|
5 | 5 |
|
6 | 6 | = Architecture |
7 | 7 |
|
8 | | -Introduction for the architecture of this solution pattern. |
| 8 | +The architecture of an event mesh-enabled system is a paradigm shift from |
| 9 | +traditional transactional designs to an eventual consistency model. This design |
| 10 | +aligns better with real-world processes, where different parts of a system may |
| 11 | +operate asynchronously yet collaboratively. In this section, we explore the |
| 12 | +technologies, flow, and structure that make the event mesh architecture |
| 13 | +resilient, scalable, and developer-friendly. |
| 14 | + |
| 15 | +The solution employs _Command Query Responsibility Segregation (CQRS)_ to |
| 16 | +separate commands and queries. Commands are modeled as asynchronous events and |
| 17 | +handled by the event mesh. Queries are synchronous operations safe to retry. |
9 | 18 |
|
10 | 19 | [#tech_stack] |
11 | 20 | == Technology Stack |
12 | 21 |
|
| 22 | +Here's the list of technologies used in this solution and its examples: |
13 | 23 |
|
14 | | -The solution employs Command Query Responsibility Segregation (CQRS) to separate commands and queries: |
| 24 | +* Red Hat supported products |
| 25 | +** https://www.redhat.com/en/technologies/cloud-computing/openshift[Red Hat OpenShift] |
| 26 | + — Orchestrate containerized applications. Based on https://kubernetes.io/[Kuberentes]. |
| 27 | +** https://www.redhat.com/en/technologies/cloud-computing/openshift/serverless[Red Hat OpenShift Serverless] |
| 28 | + — Provides the _Event Mesh_ and _Serverless_ capabilities. Based on https://knative.dev[Knative]. |
| 29 | +** https://swc.saas.ibm.com/en-us/redhat-marketplace/products/red-hat-amq[Red Hat AMQ Streams] |
| 30 | + — (Optional) Provides a persistence for _Event Mesh_, likely needed in production. Based on https://strimzi.io/[Strimzi]. |
| 31 | +* Other open source technologies: |
| 32 | +** https://cloudevents.io/[CloudEvents] — Provides a standard for event metadata |
| 33 | +** Rust and https://access.redhat.com/products/quarkus[Quarkus] — Implementation examples. |
| 34 | +** https://opentelemetry.io/[OpenTelemetry] — (Optional) Facilitates tracing for observability. |
15 | 35 |
|
16 | | -Commands are modeled as asynchronous events and handled by the event mesh. |
| 36 | +[#in_depth] |
| 37 | +== An in-depth look at the solution's architecture |
17 | 38 |
|
18 | | -Queries are synchronous operations safe to retry. |
| 39 | +//// |
| 40 | +Technical description including all or some of the following: architecture ired diagrams. In-depth details of the decisions made and solutions used. Description of each service and what it is used for. Description of any integration. |
| 41 | +//// |
19 | 42 |
|
| 43 | +=== Problem Analysis |
20 | 44 |
|
| 45 | +Traditional transactional systems enforce strict consistency, which slows |
| 46 | +applications and distorts business logic. In our example, Cabs app, must |
| 47 | +account for a real-life events like exiting a cab, even if dependent systems |
| 48 | +(e.g. invoicing) experience downtime. Throwing errors, while keeps the |
| 49 | +consistency in already stored data, loses the new data from real life events. |
| 50 | +This leads to a bad impression by the end-users, and distorts the actual |
| 51 | +business process. |
21 | 52 |
|
22 | | -* Red Hat supported products |
23 | | -** https://www.redhat.com/en/technologies/cloud-computing/openshift[Red Hat OpenShift] |
24 | | -** Red Hat Application Foundation |
25 | | -*** https://access.redhat.com/products/quarkus[Quarkus] |
26 | | -*** https://www.redhat.com/en/technologies/cloud-computing/openshift/openshift-streams-for-apache-kafka[Kafka Streams] |
27 | | -* Other open source products: |
28 | | -** https://www.postgresql.org/[PostgreSQL database] |
29 | | -** https://helm.sh/[Helm] |
| 53 | +=== Solution Breakdown |
30 | 54 |
|
| 55 | +Split services into independently operating microservices with distinct responsibilities. |
31 | 56 |
|
32 | | -[#in_depth] |
33 | | -== An in-depth look at the solution's architecture |
| 57 | +Utilize CQRS to separate commands (asynchronous state changes) from queries (synchronous, retry-safe reads). |
| 58 | + |
| 59 | +=== Event Mesh Flow |
| 60 | + |
| 61 | +Events like CompleteTransit are published as CloudEvents to a Knative broker. |
| 62 | + |
| 63 | +Triggers route events dynamically to the appropriate microservices. |
34 | 64 |
|
35 | | -Technical description including all or some of the following: architecture ir ed diagrams. In-depth details of the decisions made and solutions used. Description of each service and what it is used for. Description of any integration. |
| 65 | +Services process events, update state, and emit new events for downstream consumers. |
36 | 66 |
|
37 | 67 | === Using images |
38 | 68 |
|
|
0 commit comments