<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>개념 이해 on Advanced Beginner</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/</link><description>Recent content in 개념 이해 on Advanced Beginner</description><generator>Hugo</generator><language>ko-KR</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/ko/docs/ddd/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>전략적 설계</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/strategic-design/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/strategic-design/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: DDD의 큰 그림을 이해하고 싶은 아키텍트 및 시니어 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/quick-start/"&gt;Quick Start&lt;/a&gt;를 읽었거나 DDD 기본 개념에 대한 이해
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;시스템을 어떻게 나누고, 각 부분이 어떻게 협력해야 하는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;전략적 설계의 4가지 핵심 개념: &lt;strong&gt;Subdomain&lt;/strong&gt;(비즈니스 영역 분류) → &lt;strong&gt;Ubiquitous Language&lt;/strong&gt;(공통 언어 정의) → &lt;strong&gt;Bounded Context&lt;/strong&gt;(모델 경계 설정) → &lt;strong&gt;Context Mapping&lt;/strong&gt;(경계 간 협력 방식 정의)
&lt;/blockquote&gt;

&lt;p&gt;복잡한 도메인을 어떻게 나누고 통합할지 결정하는 고수준 설계가 바로 전략적 설계입니다. 이는 DDD의 출발점이자 전체 시스템 아키텍처를 결정하는 핵심 활동입니다.&lt;/p&gt;</description></item><item><title>전술적 설계</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: DDD 빌딩 블록을 코드로 구현하고 싶은 백엔드 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/strategic-design/"&gt;전략적 설계&lt;/a&gt;를 읽었거나 Bounded Context 개념에 대한 이해
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 40분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;도메인 모델을 어떤 패턴으로 구현해야 하는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;전술적 설계 빌딩 블록: &lt;strong&gt;Entity&lt;/strong&gt;(식별자로 구분) + &lt;strong&gt;Value Object&lt;/strong&gt;(값으로 구분) → &lt;strong&gt;Aggregate&lt;/strong&gt;(일관성 경계) + &lt;strong&gt;Repository&lt;/strong&gt;(영속화) + &lt;strong&gt;Domain Service&lt;/strong&gt;(도메인 로직) + &lt;strong&gt;Domain Event&lt;/strong&gt;(이벤트 통신)
&lt;/blockquote&gt;

&lt;p&gt;도메인 모델을 구체적으로 구현하기 위한 패턴들이 바로 전술적 설계입니다. 전략적 설계가 &amp;ldquo;큰 그림&amp;quot;을 그리는 것이라면, 전술적 설계는 &amp;ldquo;구체적인 구현 방법&amp;quot;을 제시합니다.&lt;/p&gt;</description></item><item><title>Aggregate 심화</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/aggregate/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/aggregate/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Aggregate 기본 개념을 알고 있으며 설계 심화 학습이 필요한 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/"&gt;전술적 설계&lt;/a&gt;의 Entity, Value Object 개념
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;Aggregate 경계를 어떻게 정하고, 크기는 어느 정도가 적당한가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;Aggregate 설계 핵심: &lt;strong&gt;불변식 기반 경계 설정&lt;/strong&gt; → &lt;strong&gt;작게 유지&lt;/strong&gt; → &lt;strong&gt;ID로 참조&lt;/strong&gt; → &lt;strong&gt;결과적 일관성 활용&lt;/strong&gt;
&lt;/blockquote&gt;

&lt;h1 id="aggregate-심화"&gt;Aggregate 심화&lt;a class="anchor" href="#aggregate-%ec%8b%ac%ed%99%94"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Aggregate의 설계 원칙, 트랜잭션 경계, 실전 패턴을 깊이 있게 다룹니다.&lt;/p&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;비유: 가족과 이웃&lt;/strong&gt;&lt;br&gt;&lt;p&gt;Aggregate를 이해하는 가장 쉬운 비유는 &lt;strong&gt;가족 단위&lt;/strong&gt;입니다.&lt;/p&gt;</description></item><item><title>Aggregate 실전 패턴</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/aggregate-patterns/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/aggregate-patterns/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Aggregate 기본 개념을 익히고 실전 패턴을 학습하려는 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/aggregate/"&gt;Aggregate 심화&lt;/a&gt;에서 핵심 개념 이해
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;Aggregate 구현 시 어떤 패턴을 적용해야 하는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;실전 패턴: &lt;strong&gt;Factory Method&lt;/strong&gt;(생성) + &lt;strong&gt;Domain Event 발행&lt;/strong&gt; + &lt;strong&gt;Optimistic Locking&lt;/strong&gt;(동시성) + &lt;strong&gt;Soft Delete&lt;/strong&gt;(삭제)
&lt;/blockquote&gt;

&lt;h1 id="aggregate-실전-패턴"&gt;Aggregate 실전 패턴&lt;a class="anchor" href="#aggregate-%ec%8b%a4%ec%a0%84-%ed%8c%a8%ed%84%b4"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Aggregate 설계를 위한 구현 패턴과 의사결정 가이드입니다.&lt;/p&gt;
&lt;h2 id="왜-aggregate에-패턴이-필요한가"&gt;왜 Aggregate에 패턴이 필요한가?&lt;a class="anchor" href="#%ec%99%9c-aggregate%ec%97%90-%ed%8c%a8%ed%84%b4%ec%9d%b4-%ed%95%84%ec%9a%94%ed%95%9c%ea%b0%80"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Aggregate는 단순히 객체를 묶는 것이 아닙니다. &lt;strong&gt;일관성, 동시성, 생명주기&lt;/strong&gt;라는 세 가지 책임을 져야 합니다. 이 책임을 효과적으로 수행하기 위해 검증된 패턴들이 존재합니다.&lt;/p&gt;</description></item><item><title>도메인 모델 패턴</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/domain-model-patterns/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/domain-model-patterns/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/"&gt;전술적 설계&lt;/a&gt; 빌딩 블록을 이해한 백엔드 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Entity, Value Object, Repository, Domain Service 개념 이해
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25-30분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;핵심 빌딩 블록만으로 표현하기 어려운 도메인 로직을 어떻게 구조화하는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;핵심 빌딩 블록(Entity, Value Object, Repository, Domain Service, Factory)은 도메인 모델의 뼈대입니다. 이 문서에서 다루는 패턴들은 그 뼈대 위에 &lt;strong&gt;비즈니스 규칙을 체계적으로 표현&lt;/strong&gt;하는 도구입니다: &lt;strong&gt;Specification&lt;/strong&gt;(조건 검사) + &lt;strong&gt;Policy&lt;/strong&gt;(계산/결정) + &lt;strong&gt;Module&lt;/strong&gt;(코드 조직) + &lt;strong&gt;Builder&lt;/strong&gt;(복잡한 생성) + &lt;strong&gt;Null Object&lt;/strong&gt;(null 안전성)
&lt;/blockquote&gt;

&lt;p&gt;전술적 설계의 핵심 빌딩 블록만으로도 도메인 모델을 구현할 수 있습니다. 하지만 실제 비즈니스는 더 복잡한 요구사항을 가집니다. &amp;ldquo;이 주문은 확정 가능한가?&amp;ldquo;라는 조건 검사, &amp;ldquo;VIP 고객에게는 몇 % 할인을 적용하는가?&amp;ldquo;라는 정책 결정, 그리고 여러 모듈에 걸친 코드 조직까지 — 이런 문제를 깔끔하게 해결하는 보조 패턴들을 알아보겠습니다.&lt;/p&gt;</description></item><item><title>테스트 전략</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/testing/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/testing/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: DDD 기반 프로젝트에서 테스트 전략을 수립하려는 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/"&gt;전술적 설계&lt;/a&gt; 빌딩 블록, 기본적인 JUnit/Mockito 사용법
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;DDD 아키텍처에서 테스트를 어떻게 구성해야 하는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;요약&lt;/strong&gt;&lt;br&gt;테스트 전략 핵심: &lt;strong&gt;단위 테스트&lt;/strong&gt;(도메인 모델 중심, 가장 많이) → &lt;strong&gt;통합 테스트&lt;/strong&gt;(Repository, 외부 연동) → &lt;strong&gt;E2E 테스트&lt;/strong&gt;(핵심 시나리오만)
&lt;/blockquote&gt;

&lt;p&gt;도메인 주도 설계를 적용한 시스템은 일반적인 CRUD 애플리케이션과는 다른 테스트 전략이 필요합니다. 비즈니스 로직이 도메인 모델에 집중되어 있기 때문에, 테스트 역시 도메인 계층을 중심으로 설계해야 합니다. 이 문서에서는 DDD 아키텍처에 적합한 테스트 전략과 구체적인 구현 방법을 살펴봅니다.&lt;/p&gt;</description></item><item><title>안티패턴과 함정</title><link>https://advanced-beginner.github.io/ko/docs/ddd/concepts/anti-patterns/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/ddd/concepts/anti-patterns/</guid><description>&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: DDD를 적용하고 있거나 도입을 고려 중인 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/quick-start/"&gt;Quick Start&lt;/a&gt;와 &lt;a href="https://advanced-beginner.github.io/ko/docs/ddd/concepts/tactical-design/"&gt;전술적 설계&lt;/a&gt; 기본 개념
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 20분
&lt;strong&gt;핵심 질문&lt;/strong&gt;: &amp;ldquo;DDD 적용 시 흔히 저지르는 실수는 무엇이고, 어떻게 피할 수 있는가?&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class="book-hint warning"&gt;&lt;strong&gt;주의&lt;/strong&gt;&lt;br&gt;이 문서에서 소개하는 안티패턴은 실제 프로젝트에서 자주 발생합니다. 자신의 코드베이스에 해당 증상이 있는지 확인해보세요.
&lt;/blockquote&gt;

&lt;h2 id="안티패턴을-이해하는-비유"&gt;안티패턴을 이해하는 비유&lt;a class="anchor" href="#%ec%95%88%ed%8b%b0%ed%8c%a8%ed%84%b4%ec%9d%84-%ec%9d%b4%ed%95%b4%ed%95%98%eb%8a%94-%eb%b9%84%ec%9c%a0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class="book-hint info"&gt;&lt;strong&gt;비유: 건축과 안티패턴&lt;/strong&gt;&lt;br&gt;&lt;p&gt;DDD 안티패턴을 &lt;strong&gt;건축 설계 실수&lt;/strong&gt;에 비유할 수 있습니다:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;안티패턴&lt;/th&gt;
 &lt;th&gt;건축 비유&lt;/th&gt;
 &lt;th&gt;결과&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Big Ball of Mud&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;칸막이 없는 원룸&lt;/td&gt;
 &lt;td&gt;부엌 냄새가 침실까지, 손님이 오면 모든 공간 정리 필요&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Anemic Domain Model&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;벽만 있고 가구 없는 집&lt;/td&gt;
 &lt;td&gt;살기 위해 매번 외부에서 가구를 빌려와야 함&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;God Aggregate&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;모든 방이 연결된 미로&lt;/td&gt;
 &lt;td&gt;한 방 고치려면 모든 방에 영향&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Primitive Obsession&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;문 없이 커튼만 있는 방&lt;/td&gt;
 &lt;td&gt;누구나 들어올 수 있어 보안 취약&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;중요&lt;/strong&gt;: 안티패턴이라고 해서 &lt;strong&gt;항상&lt;/strong&gt; 나쁜 것은 아닙니다. 빠른 프로토타입, 단순한 CRUD 앱, 1인 프로젝트에서는 &amp;ldquo;과도한 설계&amp;quot;가 오히려 해가 됩니다. 이 문서의 해결책은 &lt;strong&gt;복잡한 비즈니스 도메인&lt;/strong&gt;에 적합합니다.&lt;/p&gt;</description></item></channel></rss>