Skip to content

Commit caa5e15

Browse files
[CI] Publish Preview for PR #1 67cc797
1 parent 2d2625e commit caa5e15

File tree

2 files changed

+68
-33
lines changed

2 files changed

+68
-33
lines changed

pull-1/sitemap.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@
22
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
33
<url>
44
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/01-pattern.html</loc>
5-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
5+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
66
</url>
77
<url>
88
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/02-architecture.html</loc>
9-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
9+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
1010
</url>
1111
<url>
1212
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/03-demo.html</loc>
13-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
13+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
1414
</url>
1515
<url>
1616
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/04-workshop.html</loc>
17-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
17+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
1818
</url>
1919
<url>
2020
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/developer-resources.html</loc>
21-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
21+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
2222
</url>
2323
<url>
2424
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/index.html</loc>
25-
<lastmod>2024-12-18T21:31:30.367Z</lastmod>
25+
<lastmod>2025-01-09T20:43:15.487Z</lastmod>
2626
</url>
2727
</urlset>

pull-1/solution-pattern-event-mesh-for-microservices/02-architecture.html

Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -186,20 +186,26 @@ <h1 class="page">Building Apps around the Event Mesh</h1>
186186
<h1 id="_architecture" class="sect0"><a class="anchor" href="#_architecture"></a><a class="link" href="#_architecture">Architecture</a></h1>
187187
<div class="openblock partintro">
188188
<div class="content">
189-
Introduction for the architecture of this solution pattern.
189+
<div class="paragraph">
190+
<p>The architecture of an event mesh-enabled system is a paradigm shift from
191+
traditional transactional designs to an eventual consistency model. This design
192+
aligns better with real-world processes, where different parts of a system may
193+
operate asynchronously yet collaboratively. In this section, we explore the
194+
technologies, flow, and structure that make the event mesh architecture
195+
resilient, scalable, and developer-friendly.</p>
196+
</div>
197+
<div class="paragraph">
198+
<p>The solution employs <em>Command Query Responsibility Segregation (CQRS)</em> to
199+
separate commands and queries. Commands are modeled as asynchronous events and
200+
handled by the event mesh. Queries are synchronous operations safe to retry.</p>
201+
</div>
190202
</div>
191203
</div>
192204
<div class="sect1">
193205
<h2 id="tech_stack"><a class="anchor" href="#tech_stack"></a><a class="link" href="#tech_stack">1. Technology Stack</a></h2>
194206
<div class="sectionbody">
195207
<div class="paragraph">
196-
<p>The solution employs Command Query Responsibility Segregation (CQRS) to separate commands and queries:</p>
197-
</div>
198-
<div class="paragraph">
199-
<p>Commands are modeled as asynchronous events and handled by the event mesh.</p>
200-
</div>
201-
<div class="paragraph">
202-
<p>Queries are synchronous operations safe to retry.</p>
208+
<p>Here&#8217;s the list of technologies used in this solution and its examples:</p>
203209
</div>
204210
<div class="ulist">
205211
<ul>
@@ -208,33 +214,32 @@ <h2 id="tech_stack"><a class="anchor" href="#tech_stack"></a><a class="link" hre
208214
<div class="ulist">
209215
<ul>
210216
<li>
211-
<p><a href="https://www.redhat.com/en/technologies/cloud-computing/openshift">Red Hat OpenShift</a></p>
217+
<p><a href="https://www.redhat.com/en/technologies/cloud-computing/openshift">Red Hat OpenShift</a>
218+
&mdash; Orchestrate containerized applications. Based on <a href="https://kubernetes.io/">Kuberentes</a>.</p>
212219
</li>
213220
<li>
214-
<p>Red Hat Application Foundation</p>
215-
<div class="ulist">
216-
<ul>
217-
<li>
218-
<p><a href="https://access.redhat.com/products/quarkus">Quarkus</a></p>
221+
<p><a href="https://www.redhat.com/en/technologies/cloud-computing/openshift/serverless">Red Hat OpenShift Serverless</a>
222+
&mdash; Provides the <em>Event Mesh</em> and <em>Serverless</em> capabilities. Based on <a href="https://knative.dev">Knative</a>.</p>
219223
</li>
220224
<li>
221-
<p><a href="https://www.redhat.com/en/technologies/cloud-computing/openshift/openshift-streams-for-apache-kafka">Kafka Streams</a></p>
222-
</li>
223-
</ul>
224-
</div>
225+
<p><a href="https://swc.saas.ibm.com/en-us/redhat-marketplace/products/red-hat-amq">Red Hat AMQ Streams</a>
226+
&mdash; (Optional) Provides a persistence for <em>Event Mesh</em>, likely needed in production. Based on <a href="https://strimzi.io/">Strimzi</a>.</p>
225227
</li>
226228
</ul>
227229
</div>
228230
</li>
229231
<li>
230-
<p>Other open source products:</p>
232+
<p>Other open source technologies:</p>
231233
<div class="ulist">
232234
<ul>
233235
<li>
234-
<p><a href="https://www.postgresql.org/">PostgreSQL database</a></p>
236+
<p><a href="https://cloudevents.io/">CloudEvents</a> &mdash; Provides a standard for event metadata</p>
237+
</li>
238+
<li>
239+
<p>Rust and <a href="https://access.redhat.com/products/quarkus">Quarkus</a> &mdash; Implementation examples.</p>
235240
</li>
236241
<li>
237-
<p><a href="https://helm.sh/">Helm</a></p>
242+
<p><a href="https://opentelemetry.io/">OpenTelemetry</a> &mdash; (Optional) Facilitates tracing for observability.</p>
238243
</li>
239244
</ul>
240245
</div>
@@ -246,11 +251,41 @@ <h2 id="tech_stack"><a class="anchor" href="#tech_stack"></a><a class="link" hre
246251
<div class="sect1">
247252
<h2 id="in_depth"><a class="anchor" href="#in_depth"></a><a class="link" href="#in_depth">2. An in-depth look at the solution&#8217;s architecture</a></h2>
248253
<div class="sectionbody">
254+
<div class="sect2">
255+
<h3 id="_problem_analysis"><a class="anchor" href="#_problem_analysis"></a><a class="link" href="#_problem_analysis">2.1. Problem Analysis</a></h3>
256+
<div class="paragraph">
257+
<p>Traditional transactional systems enforce strict consistency, which slows
258+
applications and distorts business logic. In our example, Cabs app, must
259+
account for a real-life events like exiting a cab, even if dependent systems
260+
(e.g. invoicing) experience downtime. Throwing errors, while keeps the
261+
consistency in already stored data, loses the new data from real life events.
262+
This leads to a bad impression by the end-users, and distorts the actual
263+
business process.</p>
264+
</div>
265+
</div>
266+
<div class="sect2">
267+
<h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><a class="link" href="#_solution_breakdown">2.2. Solution Breakdown</a></h3>
268+
<div class="paragraph">
269+
<p>Split services into independently operating microservices with distinct responsibilities.</p>
270+
</div>
271+
<div class="paragraph">
272+
<p>Utilize CQRS to separate commands (asynchronous state changes) from queries (synchronous, retry-safe reads).</p>
273+
</div>
274+
</div>
275+
<div class="sect2">
276+
<h3 id="_event_mesh_flow"><a class="anchor" href="#_event_mesh_flow"></a><a class="link" href="#_event_mesh_flow">2.3. Event Mesh Flow</a></h3>
277+
<div class="paragraph">
278+
<p>Events like CompleteTransit are published as CloudEvents to a Knative broker.</p>
279+
</div>
280+
<div class="paragraph">
281+
<p>Triggers route events dynamically to the appropriate microservices.</p>
282+
</div>
249283
<div class="paragraph">
250-
<p>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.</p>
284+
<p>Services process events, update state, and emit new events for downstream consumers.</p>
285+
</div>
251286
</div>
252287
<div class="sect2">
253-
<h3 id="_using_images"><a class="anchor" href="#_using_images"></a><a class="link" href="#_using_images">2.1. Using images</a></h3>
288+
<h3 id="_using_images"><a class="anchor" href="#_using_images"></a><a class="link" href="#_using_images">2.4. Using images</a></h3>
254289
<div class="imageblock">
255290
<div class="content">
256291
<img src="_images/red_hat_open-hybrid-cloud.png" alt="red hat open hybrid cloud" width="30%">
@@ -261,14 +296,14 @@ <h3 id="_using_images"><a class="anchor" href="#_using_images"></a><a class="lin
261296
</div>
262297
</div>
263298
<div class="sect2">
264-
<h3 id="_embedding_html"><a class="anchor" href="#_embedding_html"></a><a class="link" href="#_embedding_html">2.2. Embedding HTML</a></h3>
299+
<h3 id="_embedding_html"><a class="anchor" href="#_embedding_html"></a><a class="link" href="#_embedding_html">2.5. Embedding HTML</a></h3>
265300
<br>
266301
<h3> Embed HTML by surrounding it with with four +s before and after. </h3>
267302
<span>View the ascii doc to learn more</span>
268303
<br>
269304
</div>
270305
<div class="sect2">
271-
<h3 id="_different_decorators"><a class="anchor" href="#_different_decorators"></a><a class="link" href="#_different_decorators">2.3. Different decorators</a></h3>
306+
<h3 id="_different_decorators"><a class="anchor" href="#_different_decorators"></a><a class="link" href="#_different_decorators">2.6. Different decorators</a></h3>
272307
<div class="admonitionblock tip">
273308
<table>
274309
<tr>
@@ -327,7 +362,7 @@ <h3 id="_different_decorators"><a class="anchor" href="#_different_decorators"><
327362
</div>
328363
</div>
329364
<div class="sect2">
330-
<h3 id="_creating_tables"><a class="anchor" href="#_creating_tables"></a><a class="link" href="#_creating_tables">2.4. Creating tables</a></h3>
365+
<h3 id="_creating_tables"><a class="anchor" href="#_creating_tables"></a><a class="link" href="#_creating_tables">2.7. Creating tables</a></h3>
331366
<table class="tableblock frame-all grid-all stretch">
332367
<colgroup>
333368
<col style="width: 33.3333%;">
@@ -382,7 +417,7 @@ <h3 id="_creating_tables"><a class="anchor" href="#_creating_tables"></a><a clas
382417
</table>
383418
</div>
384419
<div class="sect2">
385-
<h3 id="_content_that_can_be_copied"><a class="anchor" href="#_content_that_can_be_copied"></a><a class="link" href="#_content_that_can_be_copied">2.5. Content that can be copied</a></h3>
420+
<h3 id="_content_that_can_be_copied"><a class="anchor" href="#_content_that_can_be_copied"></a><a class="link" href="#_content_that_can_be_copied">2.8. Content that can be copied</a></h3>
386421
<div class="paragraph">
387422
<p>Click below to copy the content</p>
388423
</div>

0 commit comments

Comments
 (0)