DDD (Domain Driven Design)

youngkyu MIn·2023년 10월 21일

도메인 주도 설계 (DDD: Domain-Driven Design)는 복잡한 소프트웨어 시스템을 설계하고 구현하는데 초점을 맞춘 접근법이다. DDD는 도메인의 복잡성과 관련된 핵심적인 문제들을 중심으로 시스템을 구축하는 것을 목표로 한다.

DDD의 핵심 개념 및 원칙

1 도메인: 시스템이 해결하려고 하는 특정 영역이나 문제 영역이다. 예를 들어 은행 시스템에서는 도메인은 금융 거래나 고객 관리와 같은 것들이 될 수 있다.

2 도메인 모델: 특정 도메인의 주요 개념, 엔터티, 규칙 및 관계를 나타내는 추상화이다. 이는 코드, 다이어그램, 문서 등 다양한 형태로 표현될 수 있다.

3 유비쿼터스 언어 (Ubiquitous Language): 팀 멤버들이 통신할 때 사용하는 공통 언어. 도메인 전문가와 개발자 모두가 이해할 수 있는 용어와 모델을 기반으로 한다.

4 바운디드 컨텍스트 (Bounded Context): 특정 도메인 모델이 적용되는 경계나 범위를 나타낸다. 이는 모델이 일관성을 유지하고 다른 컨텍스트와 충돌하지 않도록 보장한다.

5 엔터티 (Entity): 도메인 내에서 고유한 식별자를 가지는 개체이다.

6 값 객체 (Value Object): 속성에 의해 식별되는 객체로, 변경 불가능하며 사이드 이펙트 없이 동작한다.

7 집합 (Aggregate): 일련의 엔터티와 값 객체들의 클러스터로, 하나의 루트 엔터티를 통해 외부와 상호 작용한다.

8 서비스 (Service): 도메인 로직을 나타내지만 엔터티나 값 객체로 자연스럽게 모델링되지 않는 작업을 수행한다.

9 도메인 이벤트 (Domain Event): 도메인 내에서 중요한 사건을 나타내며, 상태 변경을 트리거로 할 수 있다.

10 리포지토리 (Repository): 집합의 인스턴스를 저장하고 검색하는 메커니즘을 제공한다.

profile
한 줄 소개

0개의 댓글