Bounded Context (제한된 컨텍스트)제한된 컨텍스트(Bounded Context)제한된 컨텍스트는 도메인 모델의 경계를 정의하는 개념각 컨텍스트는 고유한 모델을 가지며, 그 모델은 해당 컨텍스트 내에서만 일관성을 유지한다.이는 복잡한 도메인 모델을 관리하기 쉽게 만드는 데 중요한 역할을 한다.제한된 컨텍스트의 장점일관성 유지: 각 컨텍스트 내에서 모델의 일관성을 유지할 수 있다. 이는 도메인 모델이 정확하고 신뢰할 수 있도록 만든다독립적인 개발: 각 컨텍스트는 독립적으로 개발되고 유지보수될 수 있다. 이는 개발팀 간의 협업을 촉진하고, 시스템의 유연성을 높인다.복잡성 관리: 도메인 모델을 작은 부분으로 분할하여, 각 부분의 복잡성을 관리할 수 있다. 이는 시스템의 이해도와 유지보수성을 높인다...
전체 글
배운 것에 대한 내 생각을 가지고 정리하자전략 패턴전략 패턴이란?전략 패턴은 알고리즘 군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호 교환 가능하게 만드는 패턴이를 통해 클라이언트는 알고리즘을 독립적으로 변경할 수 있다.알고리즘을 사용하는 클라이언트 코드와 알고리즘 자체를 분리하여, 클라이언트 코드의 변경 없이 알고리즘을 쉽게 변경할 수 있도록 한다.구조Context: 전략을 사용하는 클래스. 클라이언트는 Context를 통해 알고리즘을 실행Strategy: 알고리즘을 정의하는 인터페이스ConcreteStrategy: 구체적인 알고리즘을 구현하는 클래스전략 패턴의 중요성유연성: 알고리즘을 동적으로 선택하고 변경할 수 있어, 유연한 설계가 가능하다. 이는 다양한 요구사항을 쉽게 수용할 수 있게 한다.확장성: 새로운 알고리즘을 추가할 때 기..
분석 패턴이란?분석 패턴은 특정 도메인 문제를 해결하기 위해 반복적으로 사용할 수 있는 설계 솔루션이러한 패턴은 도메인 전문가와 개발자가 복잡한 문제를 이해하고 해결하는 데 도움을 준다도메인 모델의 일관성을 유지하고, 복잡한 문제를 단순화하며, 재사용 가능한 설계를 제공하는 것이 목적이다분석 패턴의 중요성재사용성: 분석 패턴은 검증된 설계 솔루션을 제공하여, 유사한 문제를 해결할 때 재사용할 수 있다. 이는 개발 시간을 단축하고, 코드의 일관성을 높일 수 있다.문서화: 분석 패턴은 도메인 모델의 구조와 동작을 명확하게 문서화한다. 이는 도메인 전문가와 개발자가 모델을 이해하고, 협력하는 데 도움을 준다.설계 품질 향상: 검증된 설계 솔루션을 사용함으로써, 도메인 모델의 설계 품질을 향상시킬 수 있다. 이..
의도를 드러내는 인터페이스(Intention-Revealing Interfaces)정의의도를 드러내는 인터페이스는 메서드, 클래스, 인터페이스 등의 이름이 그 기능과 목적을 명확히 드러내도록 설계하는 것을 의미이는 코드의 가독성을 높이고, 유지보수성을 향상시키며, 개발자 간의 의사소통을 원활하게 한다중요성코드의 의도를 명확히 드러내면, 다른 개발자가 코드를 이해하고 사용하기 쉬워진다이는 특히 도메인 주도 설계에서 도메인 전문가와 개발자 간의 의사소통을 강화하는 데 매우 중요하다메서드 이름은 그 목적을 명확히 표현해야 한다불명확한 메서드 이름:public class Order { public void update(OrderDetails details) { // Order 업데이트 로직 } }의도를 드러내는..
집합체(Aggregate) 집합체(Aggregate)란?집합체는 일관성을 유지하면서 하나의 단위로 처리되는 도메인 객체들의 군집입니다. 집합체는 다음과 같은 특징을 가진다경계(Boundary)집합체는 명확한 경계를 가지며, 이 경계 내에서 객체들이 상호작용합니다. 경계는 집합체의 일관성을 유지하는 데 중요한 역할을 한다루트 엔티티(Aggregate Root)집합체 내의 객체들 중 하나는 루트 엔티티로 지정되며, 외부에서 집합체에 접근할 때는 루트 엔티티를 통해서만 접근한다루트 엔티티는 집합체의 일관성을 책임진다일관성집합체 내의 객체들은 항상 일관된 상태를 유지해야 한다집합체의 상태 변경은 트랜잭션 단위로 처리되며, 이는 집합체의 일관성을 보장한다집합체의 설계 원칙집합체를 설계할 때 고려해야 할 몇 가지 ..
Entity, Value Object(값 객체)Service, Module(패키지) 모델링 패러다임엄격한 모델 (Rigorous Modeling)정의엄격한 모델링은 도메인 모델을 매우 정확하게 정의하고, 가능한 한 많은 도메인 지식을 모델에 반영하는 것을 목표로 한다특징모델은 상세하고 명확해야 한다도메인 전문가와 개발자가 협력하여 도메인 지식을 모델에 반영 한다모델을 통해 비즈니스 로직과 도메인 규칙을 표현한다장점도메인 지식이 코드에 잘 반영되어 일관성과 정확성을 높일 수 있다도메인 전문가와 개발자 간의 의사소통이 명확해진다단점모델이 복잡해질 수 있으며, 변경 관리가 어려울 수 있다단순한 모델 (Simple Modeling)정의단순한 모델링은 도메인 모델을 가능한 한 단순하게 유지하여 이해와 유지보수를 ..
SMART UI(지능형 UI) "안티 패턴”도메인 로직을 사용자 인터페이스(UI) 계층에 너무 많이 포함시키는 것을 경고하는 개념SMART UI 안티 패턴은 사용자 인터페이스 계층(UI)에서 도메인 로직과 비즈니스 규칙을 처리하는 방식문제점도메인 로직과 UI 로직의 혼합도메인 로직이 UI 코드에 직접 포함되어 있어, UI 변경 시 도메인 로직이 영향을 받을 수 있다코드의 복잡성이 증가하고, 변경 사항이 여러 부분에 영향을 미칠 수 있다테스트 어려움UI 계층은 일반적으로 테스트하기 어려운 부분입니다. 도메인 로직이 UI에 포함되면, 도메인 로직의 테스트가 어렵고, 오류를 발견하기 힘들어진다재사용성 감소도메인 로직이 UI 코드에 포함되어 있으면, 동일한 로직을 다른 UI에서 재사용하기 어려워진다코드의 중복이..
공유된 언어 (Ubiquitous Language)정의공유된 언어는 도메인 전문가와 개발자 모두가 이해할 수 있는 공통의 언어이는 도메인 모델링을 통해 형성되며, 코드와 문서를 모두 동일하게 사용한다중요성공유된 언어는 오해를 줄이고, 팀 내 의사소통을 명확히 하여 일괄된 도메인 지식을 유지하게 한다모든 팀원이 동일한 용어와 개념을 사용하면, 도메인 모델이 더욱 정확하고 명확하게 정의된다상황 예제온라인 쇼핑몰 개발팀에서 "고객"이라는 용어를 사용할 때, 팀 내 모든 사람이 "고객"이란 용어를 동일하게 이해해야 한다고객은 "제품을 구매하는 사람"으로 정의될 수 있으며, 이 정의는 코드, 문서, 회의에서 일관되게 사용된다@Entitypublic class Customer { @Id @Generate..