<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Architecture Patterns on Advanced Beginner</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/</link><description>Recent content in Architecture Patterns on Advanced Beginner</description><generator>Hugo</generator><language>en-US</language><managingEditor>d8lzz1gpw@mozmail.com (kimbenji)</managingEditor><webMaster>d8lzz1gpw@mozmail.com (kimbenji)</webMaster><lastBuildDate>Mon, 23 Mar 2026 19:08:15 +0900</lastBuildDate><atom:link href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Layered Architecture</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/layered-architecture/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/layered-architecture/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers learning architecture patterns for the first time
&lt;strong&gt;Prerequisites&lt;/strong&gt;: Basic understanding of Spring Boot MVC patterns
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 15 minutes&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;The most basic and widely used architecture pattern. &lt;strong&gt;If you are learning architecture for the first time, start here.&lt;/strong&gt; Layered architecture divides software horizontally so each layer has a clear role. It follows the simple but powerful rule that each layer can only call the layer below it.&lt;/p&gt;</description></item><item><title>Hexagonal Architecture</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/hexagonal-architecture/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/hexagonal-architecture/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers considering testability and external dependency replacement
&lt;strong&gt;Prerequisites&lt;/strong&gt;: Understanding the limitations of &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/layered-architecture/"&gt;Layered Architecture&lt;/a&gt;
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 20 minutes&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Also known as the &lt;strong&gt;Ports and Adapters&lt;/strong&gt; pattern. An architecture that completely isolates the application core from the external world. The core idea of hexagonal architecture is to place business logic at the center and handle all external interactions through Ports and Adapters. This way, even if external technologies change, core business logic remains unaffected.&lt;/p&gt;</description></item><item><title>Clean Architecture</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/clean-architecture/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/clean-architecture/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers of large-scale projects requiring strict dependency management
&lt;strong&gt;Prerequisites&lt;/strong&gt;: Understanding of &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/hexagonal-architecture/"&gt;Hexagonal Architecture&lt;/a&gt;&amp;rsquo;s Port/Adapter concept
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 25 minutes&lt;/p&gt;
&lt;/blockquote&gt;&lt;h1 id="clean-architecture"&gt;Clean Architecture&lt;a class="anchor" href="#clean-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An architecture proposed by Uncle Bob (Robert C. Martin) in 2012. Strictly adhering to the &lt;strong&gt;Dependency Rule&lt;/strong&gt; is the core principle.&lt;/p&gt;
&lt;p&gt;Clean Architecture emerged from a persistent problem in software development. When business logic is tightly coupled to frameworks or databases, changing the technology stack or writing tests becomes very difficult. For example, if JPA annotations are directly attached to domain objects, testing the domain logic always requires a database connection. Clean Architecture aims to &lt;strong&gt;completely isolate business rules from technical details&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Onion Architecture</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/onion-architecture/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/onion-architecture/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers looking for an architecture that works well with DDD
&lt;strong&gt;Prerequisites&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/hexagonal-architecture/"&gt;Hexagonal Architecture&lt;/a&gt; and Dependency Inversion Principle
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 20 minutes&lt;/p&gt;
&lt;/blockquote&gt;&lt;h1 id="onion-architecture"&gt;Onion Architecture&lt;a class="anchor" href="#onion-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An architecture proposed by Jeffrey Palermo in 2008. It places the &lt;strong&gt;domain model at the very center&lt;/strong&gt; and wraps it in concentric layers, like an onion.&lt;/p&gt;
&lt;p&gt;Onion architecture starts from the limitations of traditional layered architecture. In layered architecture, upper layers depend on lower layers, so changes in the database layer cascade into the service layer. In contrast, onion architecture is designed so that the &lt;strong&gt;domain model depends on nothing&lt;/strong&gt;, and infrastructure depends on the domain. This allows domain logic to express pure business rules regardless of changes in databases, frameworks, or external services. This is precisely why it pairs so well with DDD (Domain-Driven Design).&lt;/p&gt;</description></item><item><title>CQRS</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/cqrs/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/cqrs/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers designing systems with complex query requirements or performance optimization needs
&lt;strong&gt;Prerequisites&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/event-driven/"&gt;Event-Driven Architecture&lt;/a&gt; or basic understanding of event-driven architecture concepts
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 35 minutes
&lt;strong&gt;Key Question&lt;/strong&gt;: &amp;ldquo;When should you separate read and write models?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;CQRS core: Separate &lt;strong&gt;Command&lt;/strong&gt; (state changes, uses domain model) and &lt;strong&gt;Query&lt;/strong&gt; (reads, uses optimized read model) to optimize each according to its requirements
&lt;/blockquote&gt;

&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;Analogy: A Library&lt;/strong&gt;&lt;br&gt;&lt;p&gt;You can compare CQRS to &lt;strong&gt;library operations&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Event-Driven Architecture</title><link>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/event-driven/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/event-driven/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Developers who understand domain modeling and transaction concepts
&lt;strong&gt;Prerequisites&lt;/strong&gt;: Understanding of &lt;a href="https://advanced-beginner.github.io/en/docs/ddd/concepts/architecture/onion-architecture/"&gt;Onion Architecture&lt;/a&gt; or Aggregate boundary concepts
&lt;strong&gt;Estimated Time&lt;/strong&gt;: About 30 minutes
&lt;strong&gt;Key Question&lt;/strong&gt;: &amp;ldquo;When and why should you use domain events?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;hr&gt;
&lt;h1 id="event-driven-architecture"&gt;Event-Driven Architecture&lt;a class="anchor" href="#event-driven-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;Analogy: Company Announcement System&lt;/strong&gt;&lt;br&gt;&lt;p&gt;You can think of domain events as a &lt;strong&gt;company announcement system&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Event publishing&lt;/strong&gt;: HR sends out a &amp;ldquo;New employee has joined&amp;rdquo; announcement. HR does not know who will see this announcement, nor does it need to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event subscription&lt;/strong&gt;: The IT team sees the announcement and creates an account, the General Affairs team orders business cards, and the Training team schedules onboarding. Each department acts independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Loose coupling&lt;/strong&gt;: The system works even if HR does not know the IT team exists. Even if a &amp;ldquo;Welcome Gift team&amp;rdquo; is added later, HR does not need any changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Key point&lt;/strong&gt;: The publisher only announces &amp;ldquo;something happened,&amp;rdquo; and subscribers each do what they need to do.&lt;/p&gt;</description></item></channel></rss>