도메인 주도 설계 (Domain-Driven Design, DDD)

도메인 주도 설계는 소프트웨어 개발 방법론 중 하나로, 복잡한 비즈니스 요구 사항을 다루기 위한 설계와 개발 접근 방식을 제시합니다. DDD는 주로 대규모 엔터프라이즈 시스템에서 복잡성을 관리하고 비즈니스 로직의 표현력을 높이기 위해 사용됩니다.

핵심 개념과 원칙

  1. 도메인 (Domain)

    • 문제 영역이나 시스템의 대상 분야. 예: 은행 시스템의 도메인은 계좌 관리, 거래 처리 등.
  2. 도메인 모델 (Domain Model)

    • 도메인의 주요 개념, 규칙, 연산을 표현하는 개념적 모델.
  3. 유비쿼터스 언어 (Ubiquitous Language)

    • 도메인 모델을 기반으로 한 공통 언어. 개발자, 비즈니스 전문가, 사용자 등과의 의사소통에서 사용.
  4. 바운디드 컨텍스트 (Bounded Context)

    • 도메인 모델이 적용되는 범위나 경계.
  5. Entity, Value Object, Aggregate

    • Entity: 식별자를 가지고 변경 가능한 객체. 예: 사용자, 주문.
    • Value Object: 변경 불가능하고 속성에 의해 정의되는 객체. 예: 날짜, 금액.
    • Aggregate: 다른 객체들을 포함하는 큰 단위. 일관성 경계를 갖는 Entity 또는 Value Object의 집합.
  6. 도메인 서비스 (Domain Service)

    • 도메인 로직을 수행하는데, Entity나 Value Object로 적합하지 않은 연산을 캡슐화하는 서비스.
  7. 리포지토리 (Repository)

    • Aggregate의 저장과 검색을 위한 메커니즘.
  8. 애플리케이션 서비스 (Application Service)

    • 사용자 인터페이스나 외부 시스템과의 상호작용을 조정하는 서비스.

DDD는 설계와 개발에 비즈니스 중심의 접근을 적용하여, 비즈니스 요구 사항을 더 정확하고 효과적으로 반영할 수 있도록 도와줍니다. 이 방법론은 특히 비즈니스 로직이 복잡한 시스템에서 효과적입니다.

반응형

'Programming > Blah Blah' 카테고리의 다른 글

윈도우 업데이트 에러(KB5034441 / 0x80070643)  (0) 2024.05.16
nUnit과 xUnit 프레임워크 차이  (0) 2023.10.19
경량화폰트  (1) 2022.02.22
윈도우 더미 파일 생성  (0) 2021.12.06
Kinematica 캐릭터 모션 매칭(Motion Matching)  (0) 2021.06.29
Voxelization  (0) 2021.02.21
Clipmaps  (0) 2021.01.27
의존성 주입(Dependency Injection)  (0) 2020.04.10