도메인 주도 개발

    바운디드 컨텍스트(BOUNDED CONTEXT)

    시작하면서 우리는 하나의 단어를 여러 의미로 사용하는 상황을 많이 마주했으며, 앞으로도 계속 사용될 예정이다. 비즈니스에서 Account라는 단어를 보면 은행에서는 계좌로 보지만, ERP 시스템에서는 계정으로 사용된다. 이렇듯 글자는 같지만 의미가 다른 걸 동음이의어라 부른다. 개발적인 측면에서 애플리케이션의 전체적인 구조를 보면 다양한 도메인에서 같은 용어가 많이 발생하는 걸 볼 수 있다. 용어의 중복이 많다보니 하나의 모델로 처리하려는 시도가 생길 수 있다. 하나의 모델이 다양한 도메인에서 사용된다면 Common이라는 공통모듈에 집어넣고 팀 내에서 이를 사용하라고 통보할지도 모른다. 과연 올바른 방법일까? 아니다, 상품이라도 고객이 바라보는 상품과 주문에서의 상품은 서로 다르다. (서로 관리되는 상태..

    유비쿼터스 언어(UBIQUITOUS LANGUAGE)

    프로젝트를 진행하다보면 다음과 같은 상황을 겪어볼 수 있다. 첫번째 - 회원 관련 사용자A : 신규 회원을 등록하겠습니다. 사용자B : 신규 회원을 추가하겠습니다. 사용자가 말하는 등록과 추가는 무슨 의미일까? 모두 신규 회원이 가입되었다는 의미로 사용하는 걸까? 두번째 - 상품 관련 MD1 : 노트북 상품을 추가하겠습니다. MD2 : 노트북 제품을 등록하겠습니다. 사용자가 말하는 상품과 제품은 같은 의미로 사용하는 걸까? 추가와 등록은 이전 회원에 비해 헷갈린다. 단순히 수량을 추가하는 걸까? 새롭게 상품&제품을 등록한다는 걸까? 이렇듯 같은 팀내에서 도메인에 대한 용어가 제각각인 경우를 겪어본 적이 있을 거다. (혹은 용어가 같지만 다른 의미로 사용된 경우) 이런 차이로 같은 도메인을 서로 다르게 바..