<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Design Patterns on Software Engineering Thoughts</title><link>https://software.skipoles.co.uk/tags/design-patterns/</link><description>Recent content in Design Patterns on Software Engineering Thoughts</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 21 Jul 2023 21:22:11 +0100</lastBuildDate><atom:link href="https://software.skipoles.co.uk/tags/design-patterns/index.xml" rel="self" type="application/rss+xml"/><item><title>CQRS (and Event-Driven) Anti-Patterns</title><link>https://software.skipoles.co.uk/posts/cqrs-anti-patterns/</link><pubDate>Fri, 21 Jul 2023 21:22:11 +0100</pubDate><guid>https://software.skipoles.co.uk/posts/cqrs-anti-patterns/</guid><description>&lt;p&gt;Over the years I have worked on a number of systems that would be classed as event-driven, and some
of these have also implemented various parts of the CQRS pattern. More recently I&amp;rsquo;ve been working
on systems and services that utilise the full gambit of CQRS and Event Sourcing. These have primarily been
built using Axon Framework to provide the technical infrastructure.&lt;/p&gt;
&lt;p&gt;While these approaches generally lead to really well structured systems, as with all software development,
there are always some anti-patterns that tend to emerge. These make the solutions more difficult to
understand, maintain and enhance.&lt;/p&gt;</description></item><item><title>The Essence of Axon Framework</title><link>https://software.skipoles.co.uk/posts/the-essence-of-axon-framework/</link><pubDate>Thu, 06 Jul 2023 17:39:58 +0100</pubDate><guid>https://software.skipoles.co.uk/posts/the-essence-of-axon-framework/</guid><description>&lt;p&gt;Axon Framework provides an underlying technology platform to allow building of solutions that utilise the
&lt;a href="https://software.skipoles.co.uk/posts/the-essence-of-cqrs/"&gt;CQRS&lt;/a&gt; and &lt;a href="https://software.skipoles.co.uk/posts/the-essence-of-event-sourcing/"&gt;Event Sourcing&lt;/a&gt; architectural patterns. It combines these with a message bus approach that allows for distribution, location
transparency and service redundancy.&lt;/p&gt;
&lt;p&gt;In this post, rather than describe Axon Framework in great detail, I just want to focus on the main essence of
this framework. More details can be found in the resources section at the end of the post.&lt;/p&gt;</description></item><item><title>The Essence of Event Sourcing</title><link>https://software.skipoles.co.uk/posts/the-essence-of-event-sourcing/</link><pubDate>Thu, 06 Jul 2023 15:29:25 +0100</pubDate><guid>https://software.skipoles.co.uk/posts/the-essence-of-event-sourcing/</guid><description>&lt;p&gt;Event Sourcing is a really interesting pattern in software engineering. It is an alternative
approach to maintaining the state of a domain model and managing its persistence.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a wealth of great material around this pattern and how to use it for building software. If
you&amp;rsquo;d like more information then I&amp;rsquo;ve included a section at the end of this post with a list of useful
resources.&lt;/p&gt;
&lt;p&gt;In this post, rather than explain all the details of Event Sourcing, I want to just focus on what I think is
the essence of this pattern. Armed with this information you can then go off and explore the subject
in more detail.&lt;/p&gt;</description></item><item><title>The Essence of CQRS</title><link>https://software.skipoles.co.uk/posts/the-essence-of-cqrs/</link><pubDate>Wed, 05 Jul 2023 17:07:43 +0100</pubDate><guid>https://software.skipoles.co.uk/posts/the-essence-of-cqrs/</guid><description>&lt;p&gt;I think one of the most interesting patterns in software engineering is Command Query Responsibility Segregation (CQRS). It is a super powerful way of thinking about certain problems and a way of building systems that solve these problems.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a wealth of great material around this pattern and how to use it for building software. If
you&amp;rsquo;d like more information then I&amp;rsquo;ve included a section at the end of this post with a list of useful
resources.&lt;/p&gt;</description></item></channel></rss>