도메인 주도 설계(Domain-Driven Design, DDD)은 소프트웨어 개발에서 비즈니스 도메인을 중심으로 설계하는 개발 방법론입니다. 핵심은 비즈니스 도메인의 복잡성을 이해하고 이를 모델링하여 소프트웨어를 개발하는 것으로, 도메인 모델을 중심으로 개발하고 비즈니스 요구사항을 명확히 이해하며 해결합니다.
Q: DDD에서 '도메인 모델'이란 무엇인가요?
A: 도메인 모델은 비즈니스 도메인을 표현하고 해석하기 위한 개념적 모델입니다. 업무 규칙, 개체(Entity), 값 객체(Value Object), 서비스(Service) 등을 포함하며, 소프트웨어에서 도메인을 구현하는 핵심입니다.
Q: 도메인 주도 설계 원칙 이란?
A. DDD의 원칙
유비쿼터스 언어 (Ubiquitous Language):
모든 팀 구성원이 이해할 수 있는 공통 언어를 사용해야 합니다.
모델 주도 디자인 (Model-Driven Design):
소프트웨어의 설계와 개발은 비즈니스 도메인의 모델을 중심으로 이루어져야 합니다.
도메인 모델 구분 (Bounded Context):
비즈니스 도메인은 여러 개의 Bounded Context로 나뉘어질 수 있습니다. 각 컨텍스트는 독립적으로 모델링되고, 경계를 통해 모델이 구분됩니다.
애그리게이트와 애그리게이트 루트 (Aggregate, Aggregate Root):
애그리게이트는 관련된 객체들을 하나로 묶어 일관성을 유지하는 단위를 나타냅니다. 애그리게이트 루트는 애그리게이트의 일부로서 불변성을 보장하고 다른 객체와의 통신을 담당하는 주요 엔터티입니다.
도메인 서비스 (Domain Service):
특정 도메인 로직을 수행하기 위한 서비스를 정의합니다. 서비스는 특정 엔터티나 값 객체와 결합되지 않고, 도메인의 규칙을 다룹니다.
도메인 이벤트 (Domain Event):
도메인에서 중요한 사건을 나타내는 이벤트를 정의합니다. 이를 통해 시스템 간의 비동기적인 통신과 데이터 일관성을 유지합니다.
값 객체 (Value Object):
불변하며 식별자 없이 속성으로 정의된 객체로, 개념적으로 하나의 개체를 나타냅니다. 주로 엔터티의 속성으로 사용됩니다.
도메인 주도 서비스 (DDD Services):
도메인 주도 서비스는 도메인 로직을 포함하는 서비스입니다. 특히 도메인 객체와 관련된 복잡한 비즈니스 규칙을 다룹니다.
애그리게이트 팩토리 (Aggregate Factory):
애그리게이트의 생성을 캡슐화한 팩토리를 정의합니다.
'cs 공부' 카테고리의 다른 글
| TDD (0) | 2023.12.18 |
|---|---|
| 프레임워크와 라이브러리의 차이 (0) | 2023.12.18 |
| 동기와 비동기의 차이 (0) | 2023.12.18 |
| OSI 7계층 (0) | 2023.12.15 |
| 객체 지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? (0) | 2023.12.12 |