Yunseok's Dev Blog

배운 것을 적는 블로그입니다.

도메인 주도 설계 서평

도메인 모델링과 설계는 뭘 해야 하고 어떻게 해야 할까?

도메인 주도 설계란?

도메인 모델을 만들고 이 모델이 설계와 구현 그리고 의사소통 모두에 사용되도록 하고, 지속적인 학습을 통해 새롭게 배운 지식으로 도메인 모델을 진화시켜가며 소프트웨어를 설계해 나는 것을 말한다.

왜 도메인 주도 설계를 해야 할까?

애플리케이션에서 가장 중요한 복잡성은 기술적인 것이 아니라 사용자의 활동이나 업무에 해당하는 도메인 자체다. 이러한 도메인의 복잡성을 설계에서 제대로 다루지 않으면 기반 기술을 잘 이해하더라도 무용지물이다. 그래서 우리는

  1. 대부분의 소프트웨어 프로젝트에서는 가장 먼저 도메인과 도메인 로직에 집중해야 한다.
  2. 복잡한 도메인 설계는 모델을 기반으로 해야 한다.

도메인 주도 설계는 어떻게 해야 할까?

  1. 도메인 전문가와 같이 도메인 모델을 만든다.
  2. 도메인 모델을 기반으로 유비쿼터스 언어를 만든다.
  3. 도메인 모델을 기반으로 설계한다. 이때 도메인 모델은 다른 영역에 영향을 받지 않도록 해야 한다.
  4. 도메인 모델을 기반으로 구현한다.
  5. 지속적인 학습을 통해서 유비쿼터스 언어와 도메인 모델을 정제하고 설계와 구현에 반영한다.

인상 깊었던 점

코드와 그것의 기반이 되는 모델이 긴밀하게 연결되면 코드에 의미가 부여되고 모델과 코드가 서로 대응하게 된다.

분석과 설계, 구현은 떼놓을 수 없는 관계다. 이 세 가지 활동이 모두 도메인 모델을 기반으로 해야 한다. 도메인 전문가와 열심히 분석하고 탐구하여 도메인 모델을 만들었는데, 설계를 그 기반으로 하지 않는다던가 구현을 도메인 모델을 기반으로 하지 않으면 아무 소용이 없다.

할 수 있게 된 점

  • 도메인 모델을 만들 수 있다.
  • 유비쿼터스 언어를 만들 수 있다.

더 시도해 볼 점

  • 도메인 모델이 설계와 구현에서 드러나도록 하는 연습을 해야겠다.
  • 구현을 하면서 더 도메인 모델을 진화시키는 법을 배워야겠다.
  • 바운디드 컨텍스트를 어떻게 나누어야 하는지 더 시도해 보자

Sources