# 도메인
넓은 의미에서 도메인이란 한 조직이 행하는 일과 그 조직 안의 세계를 일컫는다.
비지니스 담당자는 시장을 파악하고 상품과 서비스를 판매한다. 각기 다른 종류의 조직은 그 나름대로 독특한 노하우를 가진 영역과 업무를 수행하는 방법이 있다. 그 이해의 영역과 조직의 작업을 수행하는 방법이 그 조직의 도메인이다.
다시말해 당신이 한 조직을 위해 소프트웨어를 개발한다면, 그 조직의 도메인 안에서 일하고있는것이다.
# 도메인 모델
도메인 모델의 아름다운 소리
우리의 모델이 음악이였다면, 그 모델은 실수 없이 완벽한 소리, 순수성, 힘, 우아함과 아름다움을 가졌을 것이다.
도메인 모델이라는 용어에도 `도메인` 이라는 단어가 들어가있으므로, 한 조직의 전체 비지니스 도메인을 위한 하나로 응집력 있게 모든 항목을 포함하는 모델을 만들어야겠다고 생각할 수 있다.
그러나 DDD(Domain Driven Design)를 사용할 때의 목표는 그게 아니다. DDD에서 강조하는 부분은 오히려 그 반대이다.
무슨말일까?
보통 조직의 전체 도메인은 여러 서브도메인으로 이루어져있다.
DDD를 사용할 때 모델(Model)은 바운디드 컨텍스트(Bounded Context) 안에 만들어진다.
도메인 모델의 개발은 전체 비지니스 도메인에서 단 하나의 특정 분야에 집중할 수 있는 한 방법이다. 적당히 복잡한 조직을 하나의 모든 것을 포괄하는 모델로 정의하려는 노력은 극도로 여러운 정도면 다행이고, 대게는 성공하기 매우 힘들다.
따라서, 전체 비지니스 도메인을 고유의 한 영역으로 적극적으로 분리하는것이 성공적인 모델을 만드는데 도움이 된다. 조직이 무엇을 어떻게 하는지에 관한 모든 것을 하나의 도메인 모델에 포함해선 안된다면, 도메인 모델은 정확히 어떤 것이어야 하는가?
거의 모든 소프트웨어 도메인에는 다수의 서브 도메인이 있다. 어떤 비지니스에서든 비지니스를 성공적으로 만드는 나름의 기능이 있으며 각각의 기능을 따로 생각하는 편이 우리에게 도움이 된다.
이렇게 비지니스에 필요한 서브 도메인들을 정의하고, DDD의 다양한 패턴에서 나오는 개념들로 풍부한 도메인 모델을 정의해나갈 수 있다.
이제 앞으로 DDD의 다양한 개념과 패턴들을 소개하며 도메인 모델에 대한 정확한 개념을 더 톺아보도록 한다.
'Self-Development > Study' 카테고리의 다른 글
DDD의 Repository Pattern은 왜 사용할까 (0) | 2024.06.08 |
---|---|
애그리거트(Aggregate) 디자인하기 (0) | 2024.06.07 |
실용적이고 안정감있는 테스트 코드 작성하기 (0) | 2023.09.27 |
[Real Mysql 8.0] 4.1장 - MySQL Engine Architecture (0) | 2022.08.07 |
2022년 정보 처리 기사 실기 - 모의고사 문제 및 오답 노트 정리 3 (0) | 2022.05.02 |
댓글