Skip to content

Commit 472fee0

Browse files
[CI] Publish Preview for PR #1 4254df1
1 parent fb5426f commit 472fee0

File tree

4 files changed

+22
-19
lines changed

4 files changed

+22
-19
lines changed

pull-1/sitemap.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
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-03-26T18:20:01.389Z</lastmod>
5+
<lastmod>2025-03-26T18:22:49.683Z</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-03-26T18:20:01.389Z</lastmod>
9+
<lastmod>2025-03-26T18:22:49.683Z</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-03-26T18:20:01.389Z</lastmod>
13+
<lastmod>2025-03-26T18:22:49.683Z</lastmod>
1414
</url>
1515
<url>
1616
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/developer-resources.html</loc>
17-
<lastmod>2025-03-26T18:20:01.389Z</lastmod>
17+
<lastmod>2025-03-26T18:22:49.683Z</lastmod>
1818
</url>
1919
<url>
2020
<loc>https://redhat-solution-patterns.github.io/solution-patterns/solution-pattern-event-mesh-for-microservices/index.html</loc>
21-
<lastmod>2025-03-26T18:20:01.389Z</lastmod>
21+
<lastmod>2025-03-26T18:22:49.683Z</lastmod>
2222
</url>
2323
</urlset>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ <h2 id="_the_story_behind_this_solution_pattern"><a class="anchor" href="#_the_s
156156
The talk presented the advantages of moving beyond transactional architectures in favor of eventual consistency.
157157
By leveraging event meshes with technologies like Knative, developers can achieve decoupled, reliable microservices without extensive re-engineering.
158158
This solution addresses inefficiencies and aligns distributed systems with real-world business processes.
159-
The team had figured out they could leverage the <em>CQRS</em> pattern together with <em>Knative&#8217;s Event Mesh</em>
159+
The team had figured out they could leverage the <a href="https://martinfowler.com/bliki/CQRS.html"><em>CQRS</em></a> pattern together with <em>Knative&#8217;s Event Mesh</em>
160160
to modernize their application in a non-extrusive way.</p>
161161
</div>
162162
</div>
@@ -165,7 +165,7 @@ <h2 id="_the_story_behind_this_solution_pattern"><a class="anchor" href="#_the_s
165165
<h2 id="_the_solution"><a class="anchor" href="#_the_solution"></a>The Solution</h2>
166166
<div class="sectionbody">
167167
<div class="paragraph">
168-
<p>The core of this solution is an event mesha dynamic, flexible layer that routes, retries, and processes asynchronous events across distributed components.
168+
<p>The core of this solution is an event mesh&#8201;&#8212;&#8201;a dynamic, flexible infrastructure layer that routes, retries, and processes asynchronous events across distributed components.
169169
Using <em>Knative Eventing</em> and <em>CloudEvents</em>, this pattern enables:</p>
170170
</div>
171171
<div class="ulist">

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

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ <h2 id="tech_stack"><a class="anchor" href="#tech_stack"></a><a class="link" hre
185185
Based on <a href="https://knative.dev">Knative</a> project.</p>
186186
</li>
187187
<li>
188-
<p><a href="https://swc.saas.ibm.com/en-us/redhat-marketplace/products/red-hat-amq">Red Hat AMQ Streams</a>
188+
<p><a href="https://developers.redhat.com/products/streams-for-apache-kafka">Streams for Apache Kafka</a>
189189
&mdash; (Optional) Provides a persistence for <em>Event Mesh</em>, likely needed in production.
190190
Based on <a href="https://strimzi.io/">Strimzi</a> project.</p>
191191
</li>
@@ -200,16 +200,19 @@ <h2 id="tech_stack"><a class="anchor" href="#tech_stack"></a><a class="link" hre
200200
<p><a href="https://cloudevents.io/">CloudEvents</a> &mdash; Provides a standard for event metadata</p>
201201
</li>
202202
<li>
203-
<p>Rust and <a href="https://access.redhat.com/products/quarkus">Quarkus</a> &mdash; Implementation examples.</p>
203+
<p><a href="https://opentelemetry.io/">OpenTelemetry</a> &mdash; (Optional) Facilitates tracing for observability.</p>
204204
</li>
205205
<li>
206-
<p><a href="https://opentelemetry.io/">OpenTelemetry</a> &mdash; (Optional) Facilitates tracing for observability.</p>
206+
<p>Rust and Java &mdash; Implementation examples.</p>
207207
</li>
208208
</ul>
209209
</div>
210210
</li>
211211
</ul>
212212
</div>
213+
<div class="paragraph">
214+
<p><em>Kubernetes</em>, <em>Knative</em>, <em>Strimzi</em>, <em>CloudEvents</em>, and <em>OpenTelemetry</em> are <a href="https://landscape.cncf.io/">CNCF projects</a>.</p>
215+
</div>
213216
</div>
214217
</div>
215218
<div class="sect1">
@@ -229,8 +232,8 @@ <h3 id="_problem_analysis"><a class="anchor" href="#_problem_analysis"></a><a cl
229232
The capture should be performed regardless of any potential operational disruptions affecting dependent services (e.g., invoicing).</p>
230233
</div>
231234
<div class="paragraph">
232-
<p>In such scenarios, transactional applications typically return an error, which prevents any data from being changed, and causes the loss of real-world intent of end-users.
233-
This results in an adverse user experience and a deviation from the genuine business process, potentially leading to customer dissatisfaction.</p>
235+
<p>In such scenarios, transactional applications, which typically encompass a number of steps in a user workflow, make all the steps undone when an error is returned.
236+
This prevents any data from being changed, and causes the loss of real-world intent of end-users, and results in an adverse user experience and a deviation from the genuine business process, potentially leading to customer dissatisfaction.</p>
234237
</div>
235238
</div>
236239
<div class="sect2">
@@ -247,7 +250,7 @@ <h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><
247250
Secondly, it routes these events to their respective endpoints, ensuring that the appropriate microservices are notified and can subsequently update their internal states based on the event data.</p>
248251
</div>
249252
<div class="paragraph">
250-
<p>The mesh&#8217;s inherent resilience is further bolstered by its exponential backoff strategy, which it employs when encountering operational failures.
253+
<p>The mesh&#8217;s inherent resilience is further bolstered by its built-in retry strategies (linear or exponential backoff), which it employs when encountering operational failures.
251254
This mechanism ensures that the system retries the operation until it succeeds, thus mitigating the risk of data loss or system disruption due to transient issues.</p>
252255
</div>
253256
<div class="paragraph">
@@ -257,7 +260,7 @@ <h3 id="_solution_breakdown"><a class="anchor" href="#_solution_breakdown"></a><
257260
<ul>
258261
<li>
259262
<p><strong>Decomposition of the application into independently functioning services</strong>:
260-
This approach facilitates a division of labor, with each service handling specific responsibilities.
263+
This approach facilitates a division of labor, with each service handling specific responsibilities&#8201;&#8212;&#8201;the <a href="https://en.wikipedia.org/wiki/Domain-driven_design">Domain-driven design</a> approach fits here quite well.
261264
This not only enhances maintainability but also fosters scalability, as services can be independently scaled based on their demands.</p>
262265
</li>
263266
<li>
@@ -293,13 +296,13 @@ <h3 id="_event_mesh_flow"><a class="anchor" href="#_event_mesh_flow"></a><a clas
293296
<p>An end-user application sends an <em>HTTP</em> request to the <em>Event Mesh</em>. Such message can be understood as a <em>Command</em> type event.</p>
294297
</li>
295298
<li>
296-
<p>The <em>Event Mesh</em> (Broker) persists the event in a queue (e.g. Kafka).
299+
<p>The <em>Event Mesh</em> (Broker) persists the event in a queue (like an Apache Kafka topic, but the implementation is hidden from the user).
297300
After <em>Event Mesh</em> persists safely the data, it returns a successful <em>HTTP</em> response with the <code>202 Accepted</code> return code.
298301
At this point, the operation could already be considered successful, from the end-user point of view.
299302
It will eventually settle correctly in all downstream systems.</p>
300303
</li>
301304
<li>
302-
<p>The <em>Event Mesh</em> routes the event to the appropriate endpoint based on the event&#8217;s metadata and configured triggering rules.</p>
305+
<p>The <em>Event Mesh</em> routes the event to the appropriate endpoint based on the CloudEvent&#8217;s metadata and configured triggering rules.</p>
303306
</li>
304307
<li>
305308
<p>The endpoints receive the events and process them, updating their internal states and potentially emitting new events for downstream consumers.
@@ -488,7 +491,7 @@ <h3 id="_supporting_legacy_systems"><a class="anchor" href="#_supporting_legacy_
488491
<h3 id="_improving_resilience_in_applications"><a class="anchor" href="#_improving_resilience_in_applications"></a><a class="link" href="#_improving_resilience_in_applications">2.8. Improving Resilience in Applications</a></h3>
489492
<div class="paragraph">
490493
<p>Traditional systems often rely on synchronous calls and transactions, which can cascade failures across components.
491-
Replacing these with asynchronous event-driven communication reduces dependencies and makes the system <em>Eventually Consistent</em>.</p>
494+
Replacing these with asynchronous event-driven communication reduces dependencies and makes the system <a href="https://en.wikipedia.org/wiki/Eventual_consistency"><em>Eventually Consistent</em></a>.</p>
492495
</div>
493496
<div class="paragraph">
494497
<p>For example, invoicing and notification services in a ride-sharing platform can process events independently, ensuring that downtime in one service does not block the entire workflow.</p>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ <h2 id="_the_story_behind_this_solution_pattern"><a class="anchor" href="#_the_s
226226
The talk presented the advantages of moving beyond transactional architectures in favor of eventual consistency.
227227
By leveraging event meshes with technologies like Knative, developers can achieve decoupled, reliable microservices without extensive re-engineering.
228228
This solution addresses inefficiencies and aligns distributed systems with real-world business processes.
229-
The team had figured out they could leverage the <em>CQRS</em> pattern together with <em>Knative&#8217;s Event Mesh</em>
229+
The team had figured out they could leverage the <a href="https://martinfowler.com/bliki/CQRS.html"><em>CQRS</em></a> pattern together with <em>Knative&#8217;s Event Mesh</em>
230230
to modernize their application in a non-extrusive way.</p>
231231
</div>
232232
</div>
@@ -235,7 +235,7 @@ <h2 id="_the_story_behind_this_solution_pattern"><a class="anchor" href="#_the_s
235235
<h2 id="_the_solution"><a class="anchor" href="#_the_solution"></a><a class="link" href="#_the_solution">3. The Solution</a></h2>
236236
<div class="sectionbody">
237237
<div class="paragraph">
238-
<p>The core of this solution is an event mesha dynamic, flexible layer that routes, retries, and processes asynchronous events across distributed components.
238+
<p>The core of this solution is an event mesh&#8201;&#8212;&#8201;a dynamic, flexible infrastructure layer that routes, retries, and processes asynchronous events across distributed components.
239239
Using <em>Knative Eventing</em> and <em>CloudEvents</em>, this pattern enables:</p>
240240
</div>
241241
<div class="ulist">

0 commit comments

Comments
 (0)