DDD(Domain-Driven Design)에 대해 설명해 주세요.

  • 어떻게 하면 더 나은 애플리케이션을 설계할 수 있는지에 대해 고민하여 얻은 여러 결과물 중 하나가 DDD(Domain Driven Design), 도메인 주도 설계이다.

  • DDD는 Spring Data JDBC 기술과 밀접한 연관이 있다.

DDD는 실세계에서 사건이 발생하는 집합인 Domain을 중심으로 설계하는 방법이다.

  • 애플리케이션을 구현하기 위해 필요한 업무들을 자세히 구분하면 좋은 애플리케이션을 만들 가능성이 높아진다.

  • 예) 옷 쇼핑몰

    • 손님들이 주문하는 도메인, 점주들이 관리하는 도메인 등이 있을 수 있다.

    • 이러한 도메인들이 서로 상호작용하며 설계하는 것이 도메인 주도 설계이다.

    • 도메인 주도 설계에서 도메인은 각각 분리되어 있는데, 이러한 관점에서 MSA를 적용하면 용이한 설계를 할 수 있다.

    • DDD에서는 같은 객체들이 존재할 수 있는데, 예를 들어 옷 구매자 입장에서는 (name, price)같은 객체 정보를 담지만, 옷 판매자 입장에서는 (size, madeCountry)등 있을 수 있다.

    • 즉, 문맥에 따라 객체의 역할이 바뀔 수 있는 것이 DDD 이다

DDD의 핵심 목표는 "Loosly Coupling", "High Cohesion"이다. 애플리케이션 또는 그 안의 모듈간의 의존성은 최소화하고, 응집성은 최대화 한다.

참고

Last updated