DDD Start

Ena JJJ·2024년 2월 14일
0

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

도메인 주도 설계

  • 하나의 소프트웨어 개발 방법론으로, 복잡한 도메인을 이해하고 해결하는 데에 목적이 있고 이에 집중하는 방법론

Why?

  • 도메인이 복잡해지면서 생기는 문제들이 아키텍처를 엉망으로 만드는 경우가 많았고, 결과적으로 유지보수를 어렵게 만드는 경우가 많았다. DDD는 이를 해결하기 위한 하나의 방법론이다.

  • 직접적인 관계가 있는 것은 아니지만, 해당 방법론 내의 다양한 이론들이 높은 Business Capability를 가질 수 있는 서비스 식별에 큰 도움이 될 수 있다

DDD의 핵심 개념/원칙들은 MSA의 핵심 개념이었던 개별 팀이 Product로서 서비스를 소유 한다는 방식과 일치


유비쿼터스 언어 (공통 언어)

  • 복잡한 도메인을 이해하고 해결하기 위한 팀(해결을 위해 모인 집단)이 공통으로 쓰기 위한 언어들의 약속

도메인 모델

  • 유비쿼터스 언어를 사용하여, 비즈니스 요구사항을 만족, 표현하기 위해 도메인들의 핵심 개념과 규칙을 표현하는 객체들의 관계로 구성

  • 도메인들의 핵심 개념과 규칙을 표현하여 적절하게 분리할 수 있도록 돕는 것

  • 엔티티(Entity)
    - 하나의 객체를 의미하며, 하나의 테이블 모델로서 존재할 수 있는 데이터들의 묶음
  • 에그리게이트(Aggregate)
    - 데이터 변경의 단위로 다루는 연관된 엔티티들의 묶음(관련된 객체들의 집합)
  • 에그리게이트 루트(Aggregate Root)
    - 에그리게이트(집합)에서 도메인의 중심을 의미하는 엔티티를 의미

0개의 댓글