강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

sr님의 프로필 이미지
sr

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Member 엔티티 생성

도메인의 응집도와 모델 복잡도간 밸런스 고민

작성

·

13

0

강의 너무 재미있게 듣고 있습니다.

도메인이라는 개념에 대해서 고민하다가 궁금한 사항이 생겨서 질문드립니다.

 

"도메인 모델이 비즈니스 규칙을 모두 내포하면 응집도는 높아지지만, 복잡도도 함께 커집니다. 이때 어디까지를 도메인 모델에 포함시키는 게 적절할까요?"

답변 2

0

토비님의 프로필 이미지
토비
지식공유자

도메인 모델에 비즈니스 규칙을 넣는 이유는 복잡도를 낮추기 위함입니다. 만약 비즈니스 규칙을 도메인 모델에 넣었는데 더 복잡해졌다면 적절한 위치에 적절한 오브젝트로 규칙이 부여가 됐는지 체크해보고, 이를 더 나누거나 패턴 등을 적용해서 분리하는 것이 바람직합니다.

혹은 도메인 규칙처럼 보이지만 아닌 것들도 있습니다. 애플리케이션을 만들면서 생기는 바뀌기 쉬운 것을 잘 변하지 않아야 할 도메인의 규칙으로 취급하면 안 되겠죠.

디자인 패턴이 이런 경우 도움이 많이 되기도 합니다. 적용할 규칙을 담은 정책이 동적으로 자주 변경되는 경우라면 전략패턴을 도메인 서비스로 쓸 수 있겠죠.

0

안녕하세요, 인프런 AI 인턴입니다. sr님께서 주신 질문에 대해 답변드리겠습니다.

도메인 모델을 설계할 때, 응집도와 복잡도 간의 균형을 유지하는 것이 중요합니다. 도메인 모델은 비즈니스 로직을 명확하게 표현하고, 도메인 전문가들과 개발자 간의 소통의 도구로 사용되기 때문에 유연하면서도 명료해야 합니다. 다음은 이를 고려할 때 주의해야 할 몇 가지 사항입니다:

  1. 핵심 도메인 규칙의 식별: 비즈니스 로직 중에서도 반드시 명시되어야 하는 핵심 규칙들을 도메인 모델에 포함시키는 것이 중요합니다. 이 핵심 규칙들은 시스템의 비즈니스 가치와 직접적으로 관련된 부분이며, 이를 통해 도메인의 이해도를 높일 수 있습니다.

  2. 기본적이고 반복적인 로직의 분리: 여러 도메인 모델에 공통적으로 적용될 수 있거나, 특정한 패턴을 따르는 로직들을 별도의 서비스나 유틸리티 클래스로 분리하여 관리할 수 있습니다. 이는 모델의 복잡도를 줄이고, 응집도를 유지할 수 있게 도와줍니다.

  3. 도메인의 경계 설정: 도메인의 경계를 명확히 할수록 모델의 응집도가 높아집니다. 이는 한 모델 내의 모든 로직이 서로 관련이 있어야 함을 뜻하며, 불필요한 책임을 외부로 미루는 것을 의미할 수 있습니다.

  4. 모델의 재사용성과 복잡성: 특정 기능이나 로직이 여러 도메인에서 사용될 경우, 이를 독립적인 단위로 추출하여 여러 모델에서 공유되도록 함으로써 복잡도를 줄이는 것이 가능합니다.

도메인 모델에 포함할 요소들을 결정할 때, 비즈니스 및 기술적 요구사항을 충분히 고려하여 설계하는 것이 중요합니다. 특정 복잡도는 불가피할 수 있지만, 잘 정의된 도메인은 이를 이해하고 관리하기 쉽게 해줍니다.

관련해서 추가적으로 깊이 있는 논의가 필요하시다면, 아래의 유사한 질문과 답변을 참고하시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

sr님의 프로필 이미지
sr

작성한 질문수

질문하기