더북(TheBook)

2.2.3 서비스 정의: 하위 도메인 패턴별 분해

DDD는 명저 <도메인 주도 설계(Domain-driven Design)>(에릭 에반스(Eric Evans) 저, 위키북스, 2011)에도 나오지만, 객체 지향 도메인 모델 중심의 복잡한 소프트웨어 애플리케이션을 구축하는 방법입니다. 도메인 내부에서 문제 해결이 가능한 형태로 도메인을 모델링하는 기법이죠. DDD는 팀에서 사용할 보케블러리, 즉 공용 언어(ubiquitous language)를 정의합니다. 도메인 모델은 애플리케이션 설계/구현에 밀접하게 반영됩니다. DDD에는 마이크로서비스 아키텍처에 적용하면 정말 유용한 하위 도메인(sub-domain)과 경계 컨텍스트(bounded context) 개념이 있습니다.

Note≡ 패턴: 하위 도메인에 따라 분해

DDD 하위 도메인별로 서비스를 정의한다.14

기존에는 전체 비즈니스를 포괄하는 단일 통합 모델을 만들었습니다. 이를테면 소비자, 주문 등의 비즈니스 엔터티를 각각 따로 정의했었죠. 이렇게 모델링하면 하나의 모델에 대해 조직 내 여러 부서의 합의를 이끌어 내기가 정말 어려운 단점이 있습니다. 가령 어떤 부서는 자기네가 필요한 것보다 너무 복잡한 모델이라고 불평할 수 있죠. 더구나 부서마다 상이한 개념을 동일한 용어로(반대로 동일한 개념을 상이한 용어로) 표현하는 일도 비일비재한 탓에 도메인 모델이 외려 혼란을 일으킬 때도 있습니다. DDD는 범위가 분명한 도메인 모델을 여러 개 정의하여 기존 방식의 문제점을 해결하는 전혀 다른 방식의 모델링입니다.

 

 


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.