Skip to content

Commit 5393293

Browse files
[CI] Publish Preview for PR #1 f81f29d
1 parent ac1144e commit 5393293

File tree

3 files changed

+48
-45
lines changed

3 files changed

+48
-45
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>2025-01-16T21:25:45.110Z</lastmod>
5+
<lastmod>2025-01-17T21:01:51.511Z</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>2025-01-16T21:25:45.110Z</lastmod>
9+
<lastmod>2025-01-17T21:01:51.511Z</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>2025-01-16T21:25:45.110Z</lastmod>
13+
<lastmod>2025-01-17T21:01:51.511Z</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>2025-01-16T21:25:45.110Z</lastmod>
17+
<lastmod>2025-01-17T21:01:51.511Z</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>2025-01-16T21:25:45.110Z</lastmod>
21+
<lastmod>2025-01-17T21:01:51.511Z</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>2025-01-16T21:25:45.110Z</lastmod>
25+
<lastmod>2025-01-17T21:01:51.511Z</lastmod>
2626
</url>
2727
</urlset>

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

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -186,19 +186,12 @@ <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-
<div class="paragraph">
190-
<p>The architecture of an event mesh-enabled system is a paradigm shift from
189+
The architecture of an event mesh-enabled system is a paradigm shift from
191190
traditional transactional designs to an eventual consistency model. This design
192191
aligns better with real-world processes, where different parts of a system may
193192
operate asynchronously yet collaboratively. In this section, we explore the
194193
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>
194+
resilient, scalable, and developer-friendly.
202195
</div>
203196
</div>
204197
<div class="sect1">
@@ -253,37 +246,42 @@ <h2 id="in_depth"><a class="anchor" href="#in_depth"></a><a class="link" href="#
253246
<div class="sectionbody">
254247
<div class="paragraph">
255248
<p>Building applications around the Event Mesh is a solution that can be applied
256-
either to existing applications or to greenfield projects. The existing
257-
applications can be divided by their domain boundaries. The divided parts might
258-
become modules, or even external services. Those modules will issue commands,
259-
directed towards the Event Mesh, which will be routed towards the configured
260-
endpoints.</p>
249+
both to existing and new projects. For existing applications, domain boundaries
250+
can guide the division into modular components, which may evolve into separate
251+
services. These modules will generate commands intended for the <em>Event Mesh</em>,
252+
which will then route these events to their designated endpoints. The <em>Event
253+
Mesh</em> will allow for such transition, gradually making the system not only more
254+
responsive but also better suited to the real-world business logic.</p>
261255
</div>
262256
<div class="sect2">
263257
<h3 id="_problem_analysis"><a class="anchor" href="#_problem_analysis"></a><a class="link" href="#_problem_analysis">2.1. Problem Analysis</a></h3>
264258
<div class="paragraph">
265-
<p>Traditional transactional systems enforce strict consistency, which slows
266-
applications and distorts business logic. In our illustrative Cabs app example,
267-
we must accommodate real-world scenarios, such as exiting a cab, even when
268-
dependent systems (e.g., invoicing) encounter disruptions. Disregarding errors,
269-
which preserve the integrity of existing data, discards the newly generated data
270-
from genuine events. This results in a negative user experience and distorts
271-
the actual business process, leading to potential customer dissatisfaction.</p>
259+
<p>Traditional systems often enforce strict transactional consistency,
260+
which can impede application performance and compromise business logic.
261+
For instance, upon the completion of a ride-sharing service at the end-user&#8217;s
262+
destination, the system should reliably capture this real-world event, irrespective
263+
of any potential operational disruptions affecting dependent services (e.g.,
264+
invoicing).</p>
265+
</div>
266+
<div class="paragraph">
267+
<p>In such scenarios, transactional applications typically return an error, resulting
268+
in an adverse user experience and a deviation from the genuine business process,
269+
potentially leading to customer dissatisfaction.</p>
272270
</div>
273271
</div>
274272
<div class="sect2">
275273
<h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><a class="link" href="#_solution_breakdown">2.2. Solution Breakdown</a></h3>
276274
<div class="paragraph">
277-
<p>The concept of employing the Event Mesh as a central, reliable hub for dispatching
278-
commands, as events, lies at the heart of this solution. This approach aligns
279-
closely with the Command Query Responsibility Segregation (CQRS) pattern, which
280-
distinctly categorizes commands and queries. Commands, in this context, are
281-
modeled as asynchronous events, designed to undergo processing by the event mesh.
282-
On the other hand, queries are synchronous operations, safe to retry, ensuring
275+
<p>The concept of employing the <em>Event Mesh</em> as a central, reliable hub for
276+
dispatching commands, as events, lies at the heart of this solution. This
277+
approach aligns closely with the Command Query Responsibility Segregation
278+
(<em>CQRS</em>) pattern, which distinctly categorizes commands and queries. Commands,
279+
in this context, are modeled as asynchronous events, designed to undergo
280+
processing by the <em>Event Mesh</em>. On the other hand, queries are synchronous operations, safe to retry, ensuring
283281
no loss of data integrity due to transient errors.</p>
284282
</div>
285283
<div class="paragraph">
286-
<p>The primary responsibility of the Event Mesh is twofold: firstly, it persists
284+
<p>The primary responsibility of the <em>Event Mesh</em> is twofold: firstly, it persists
287285
the incoming events, thereby maintaining a record of changes in the system&#8217;s
288286
state. Secondly, it routes these events to their respective endpoints, ensuring
289287
that the appropriate microservices are notified and can subsequently update
@@ -296,7 +294,7 @@ <h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><
296294
the risk of data loss or system disruption due to transient issues.</p>
297295
</div>
298296
<div class="paragraph">
299-
<p>By integrating the Event Mesh into the system architecture, several architectural
297+
<p>By integrating the <em>Event Mesh</em> into the system architecture, several architectural
300298
benefits are achieved:</p>
301299
</div>
302300
<div class="ulist">
@@ -310,7 +308,7 @@ <h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><
310308
</li>
311309
<li>
312310
<p><strong>Correction of systemic issues</strong>:
313-
The Event Mesh&#8217;s error-handling mechanism, through retries and event
311+
The <em>Event Mesh</em>'s error-handling mechanism, through retries and event
314312
persistence, aids in minimizing the impact of failures on the end user.
315313
This is crucial as it prevents bugs and outages from becoming visible to
316314
the user, thereby preserving the system&#8217;s perceived responsiveness.</p>
@@ -319,19 +317,19 @@ <h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><
319317
<p><strong>Enhanced system performance</strong>:
320318
The system becomes more responsive, as the end user no longer needs to
321319
wait for multiple, often independent, operations to complete successfully.
322-
The Event Mesh&#8217;s event-driven model, coupled with the retries and event
320+
The <em>Event Mesh</em>'s event-driven model, coupled with the retries and event
323321
persistence, ensures that critical state changes are propagated swiftly and
324322
reliably, thereby improving the overall user experience.</p>
325323
</li>
326324
</ul>
327325
</div>
328326
</div>
329327
<div class="sect2">
330-
<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>
328+
<h3 id="_event_mesh_flow"><a class="anchor" href="#_event_mesh_flow"></a><a class="link" href="#_event_mesh_flow">2.3. <em>Event Mesh</em> Flow</a></h3>
331329
<div class="ulist">
332330
<ul>
333331
<li>
334-
<p>Events are published as CloudEvents to a Knative&#8217;s Event Mesh.</p>
332+
<p>Events are published as <em>Cloud Events</em> to a <em>Knative</em>'s <em>Event Mesh</em>.</p>
335333
</li>
336334
<li>
337335
<p>Triggers route events dynamically to the appropriate endpoints.</p>
@@ -344,17 +342,14 @@ <h3 id="_event_mesh_flow"><a class="anchor" href="#_event_mesh_flow"></a><a clas
344342
</div>
345343
<div class="imageblock">
346344
<div class="content">
347-
<img src="https://www.plantuml.com/plantuml/svg/VP1DJiCm58JtFiMZ-rmWYwgqeHkeX2WNUBK7Ok4ubdyYzVQuZKbe5TZ5olTcFiqcHFOnTKOyn1OTIC8d0xPLdwBH5iBb_rfgnpRIwWMVBC_qwDoAED3ul4MUBKSzW9u6vES1eRsYMzz_mT-YZS-W3tJeLUwyOdlW23zeYJkK8vyuZ52p5O9bRk687uTYLgrB4zNqcav6XvPsR6GocTsZQ8d2L1aV3slQzVP3-uuKpCNgB1JkEwQpzI_FcjxoL5XgcUvdMioVL4soi-iuIOQcE5N259RYPgKYMNJ-3lfdkMPRqp7s7lJkjQFBvWihR61Lwimt" alt="VP1DJiCm58JtFiMZ rmWYwgqeHkeX2WNUBK7Ok4ubdyYzVQuZKbe5TZ5olTcFiqcHFOnTKOyn1OTIC8d0xPLdwBH5iBb rfgnpRIwWMVBC qwDoAED3ul4MUBKSzW9u6vES1eRsYMzz mT YZS W3tJeLUwyOdlW23zeYJkK8vyuZ52p5O9bRk687uTYLgrB4zNqcav6XvPsR6GocTsZQ8d2L1aV3slQzVP3 uuKpCNgB1JkEwQpzI FcjxoL5XgcUvdMioVL4soi iuIOQcE5N259RYPgKYMNJ 3lfdkMPRqp7s7lJkjQFBvWihR61Lwimt" width="100%">
345+
<img src="https://www.plantuml.com/plantuml/svg/XPBHhjGW48RlUOgnzzi7wCNcsDGOeySOZG_0qkcMB8NA33MDyTsbb6CNNUCT_FF_tv0PdeYbvp0PyOf7d10coUYrFBd0HbiKTDDsbbvEi5rvdH5cPzPK4yguq4FrPa7By8mqLl1302WtpSvkMlNUIjOBGklT3Nq5al8nshu531WjShZ9L4adyLE8mPaUFLJFMda7X7xH2kalUESZsXDysGs9aRKiHNylMLuauM7lsdjdrvRGTtPnMcbxBR2xYe-mHo23i_TFy4V7Uj1AidQsODyNihuDuIxw0QzIhK0hCKxb68xgwtbEkFrQF34xkbt8Wsgt9hbowjrtUphdtJJmALoCfX5msoozk6glhoFNvvY51hxEiG6cBcBF7OQqIOWSzAI9NpZbSg0sE73zpwuPUehlAeCDV7Q1yO4lZ_w_ldBafVdnK-lpyM4QU8jCeEtWG5vY2lgz98h-ANNyXjyJomfuLCxt99xGzc4olm00" alt="XPBHhjGW48RlUOgnzzi7wCNcsDGOeySOZG 0qkcMB8NA33MDyTsbb6CNNUCT FF tv0PdeYbvp0PyOf7d10coUYrFBd0HbiKTDDsbbvEi5rvdH5cPzPK4yguq4FrPa7By8mqLl1302WtpSvkMlNUIjOBGklT3Nq5al8nshu531WjShZ9L4adyLE8mPaUFLJFMda7X7xH2kalUESZsXDysGs9aRKiHNylMLuauM7lsdjdrvRGTtPnMcbxBR2xYe mHo23i TFy4V7Uj1AidQsODyNihuDuIxw0QzIhK0hCKxb68xgwtbEkFrQF34xkbt8Wsgt9hbowjrtUphdtJJmALoCfX5msoozk6glhoFNvvY51hxEiG6cBcBF7OQqIOWSzAI9NpZbSg0sE73zpwuPUehlAeCDV7Q1yO4lZ w ldBafVdnK lpyM4QU8jCeEtWG5vY2lgz98h ANNyXjyJomfuLCxt99xGzc4olm00" width="100%">
348346
</div>
349347
</div>
350-
<div class="paragraph">
351-
<p>The diagram illustrates the flow of events between the legacy application, the Knative Event Mesh, the fee calculator service, and the datastore.</p>
352-
</div>
353348
</div>
354349
<div class="sect2">
355350
<h3 id="_supporting_legacy_systems"><a class="anchor" href="#_supporting_legacy_systems"></a><a class="link" href="#_supporting_legacy_systems">2.4. Supporting Legacy Systems</a></h3>
356351
<div class="paragraph">
357-
<p>One of the strengths of an event mesh architecture is its ability to integrate seamlessly with legacy systems, making them more resilient and adaptable. Legacy applications can be retrofitted to produce and consume events through lightweight adapters. For instance:</p>
352+
<p>One of the strengths of an <em>Event Mesh</em> architecture is its ability to integrate seamlessly with legacy systems, making them more resilient and adaptable. Legacy applications can be retrofitted to produce and consume events through lightweight adapters. For instance:</p>
358353
</div>
359354
<div class="ulist">
360355
<ul>
@@ -379,7 +374,7 @@ <h3 id="_improving_resilience_in_traditional_applications"><a class="anchor" hre
379374
<p>For example, invoicing and notification services in an e-commerce platform can process OrderPlaced events independently, ensuring that downtime in one service does not block the entire order workflow.</p>
380375
</div>
381376
<div class="paragraph">
382-
<p>Retry mechanisms provided by the event mesh guarantee that transient failures are handled gracefully without data loss.</p>
377+
<p>Retry mechanisms provided by the <em>Event Mesh</em> guarantee that transient failures are handled gracefully without data loss.</p>
383378
</div>
384379
</div>
385380
</div>

pull-1/solution-pattern-event-mesh-for-microservices/03-demo.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,14 @@ <h2 id="_demonstration"><a class="anchor" href="#_demonstration"></a><a class="l
190190
<div class="paragraph">
191191
<p>Include here content related to potential existing demos: blogs, articles, recorded videos, walkthrough guides, tutorials.</p>
192192
</div>
193+
<div class="imageblock">
194+
<div class="content">
195+
<img src="https://www.plantuml.com/plantuml/svg/VP1DJiCm58JtFiMZ-rmWYwgqeHkeX2WNUBK7Ok4ubdyYzVQuZKbe5TZ5olTcFiqcHFOnTKOyn1OTIC8d0xPLdwBH5iBb_rfgnpRIwWMVBC_qwDoAED3ul4MUBKSzW9u6vES1eRsYMzz_mT-YZS-W3tJeLUwyOdlW23zeYJkK8vyuZ52p5O9bRk687uTYLgrB4zNqcav6XvPsR6GocTsZQ8d2L1aV3slQzVP3-uuKpCNgB1JkEwQpzI_FcjxoL5XgcUvdMioVL4soi-iuIOQcE5N259RYPgKYMNJ-3lfdkMPRqp7s7lJkjQFBvWihR61Lwimt" alt="VP1DJiCm58JtFiMZ rmWYwgqeHkeX2WNUBK7Ok4ubdyYzVQuZKbe5TZ5olTcFiqcHFOnTKOyn1OTIC8d0xPLdwBH5iBb rfgnpRIwWMVBC qwDoAED3ul4MUBKSzW9u6vES1eRsYMzz mT YZS W3tJeLUwyOdlW23zeYJkK8vyuZ52p5O9bRk687uTYLgrB4zNqcav6XvPsR6GocTsZQ8d2L1aV3slQzVP3 uuKpCNgB1JkEwQpzI FcjxoL5XgcUvdMioVL4soi iuIOQcE5N259RYPgKYMNJ 3lfdkMPRqp7s7lJkjQFBvWihR61Lwimt" width="100%">
196+
</div>
197+
</div>
198+
<div class="paragraph">
199+
<p>The diagram illustrates the flow of events between the legacy application, the Knative <em>Event Mesh</em>, the fee calculator service, and the datastore.</p>
200+
</div>
193201
<div class="sect2">
194202
<h3 id="demo-video"><a class="anchor" href="#demo-video"></a><a class="link" href="#demo-video">1.1. Watch a demonstration</a></h3>
195203
<div class="paragraph">

0 commit comments

Comments
 (0)