DDD 용어 정리
2 분
DDD용어
개요
이 문서는 DDD의 주요 용어들을 간결하게 정리한 것이다.
A
- Aggregate(애그리게이트): 연관된 엔티티와 VO를 묶어 도메인의 단순성을 유지하는 객체.
- Aggregate Root(애그리게이트 루트): 애그리게이트의 대표 엔티티로, 상태 변경은 루트를 통해서만 가능하며 일관성을 보장한다.
- Anti-Corruption Layer (ACL): 도메인 계층과 외부 시스템 간의 일관성과 독립성을 보호하는 계층.
B
- Bounded Context(바운디드 컨텍스트): 도메인 영역을 명확히 구분하는 범위로, 주로 유비쿼터스 언어에 따라 구분된다.
C
- CQRS: 명령과 조회의 책임을 분리하는 설계 패턴.
- Context Map(컨텍스트 맵): 바운디드 컨텍스트 간 상호작용과 관계를 표현한 다이어그램.
- Core Domain(코어 도메인): 비즈니스의 경쟁 우위와 본질적 가치를 담은 핵심 영역 (예: 구글 검색 엔진, 넷플릭스 추천 알고리즘).
D
- DDD: Domain-Driven Design의 약자, 비즈니스 도메인 중심의 소프트웨어 개발 방법론.
- DIP: 의존성 역전 원칙 — 고수준과 저수준 모듈이 모두 추상화에 의존하게 하는 원칙.
- Domain(도메인): 소프트웨어가 해결하고자 하는 문제 영역.
- Domain Event(도메인 이벤트): 도메인 모델에서 발생한 특정 과거 사건을 나타내는 객체.
- Domain Model(도메인 모델): 비즈니스 도메인의 핵심 개념, 관계, 동작을 표현한 추상화.
- Domain Service(도메인 서비스): 여러 엔티티에 걸친 비즈니스 로직을 수행하는 서비스.
E
- Entity(엔티티): 고유 식별자를 가지며 동일성을 유지하는 객체.
- Event Storming(이벤트 스토밍): 이벤트를 중심으로 비즈니스 도메인을 이해하는 설계 기법.
F
- Factory(팩토리): 객체 생성을 캡슐화하고 추상화하는 디자인 패턴.
G
- Generic Subdomain(제너릭 서브도메인): 여러 비즈니스에서 공통적으로 사용하는 일반적인 도메인 영역 (예: 비밀번호 암호화, 사용자 관리).
R
- Repository(리포지토리): 애그리게이트의 영속성을 관리하는 추상 계층.
S
- Service(서비스): 특정 엔티티나 VO에 속하지 않는 비즈니스 로직을 캡슐화한 객체.
- Strategic Design(전략적 설계): 대규모 시스템의 구조를 이해하고 복잡성을 관리하며 코어 도메인에 집중하는 고수준 접근법.
- Supporting Subdomain(서포팅 서브도메인): 코어 도메인을 지원하지만 그 자체로는 경쟁 우위를 제공하지 않는 영역.
T
- Tactical Design(전술적 설계): 개별 바운디드 컨텍스트 내에서 도메인 모델을 구체적으로 구현하는 설계 접근법.
U
- Ubiquitous Language(유비쿼터스 언어): 도메인 전문가, 개발자, 팀 구성원 모두가 공유하는 공통 용어.
V
- Value Object(값 객체): 값 자체로 정의되며 식별자가 없는 객체로, 값이 같으면 동일한 객체로 본다.