Skip to content

Commit f7f4257

Browse files
committed
Arch
1 parent f60fc47 commit f7f4257

File tree

1 file changed

+45
-15
lines changed

1 file changed

+45
-15
lines changed

documentation/modules/ROOT/pages/02-architecture.adoc

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,64 @@
55

66
= Architecture
77

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.
918

1019
[#tech_stack]
1120
== Technology Stack
1221

22+
Here's the list of technologies used in this solution and its examples:
1323

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.
1535

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
1738

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+
////
1942

43+
=== Problem Analysis
2044

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.
2152

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
3054

55+
Split services into independently operating microservices with distinct responsibilities.
3156

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.
3464

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.
3666

3767
=== Using images
3868

0 commit comments

Comments
 (0)