/////
Search
Duplicate
3️⃣

바운디드 컨텍스트 구현

: 바운디드 컨텍스트가 도메인 모델만 포함하는 것은 아니다. 바운디드 컨텍스트는 도메인 기능을 사용자에게 제공하는 데 필요한 표현 영역, 응용 서비스, 인프라스트럭처 영역을 모두 포함한다.
: 도메인 모델의 데이터 구조가 바뀌면 DB 테이블 스키마도 함께 변경해야 하므로 테이블도 바운디드 컨텍스트에 포함된다.
: 표현 영역은 인간 사용자를 위해 HTML 페이지를 생성할 수도 있고, 다른 바운디드 컨텍스트를 위해 REST API를 제공할 수도 있다.
: 모든 바운디드 컨텍스트를 반드시 도메인 주도로 개발할 필요는 없다. 상품의 리뷰는 복잡한 도메인 로직을 가지고 있지 않기 때문에 CRUD 방식으로 구현해도 상관없다.
: 즉 DAO와 데이터 중심의 밸류 객체를 이용해서 리뷰 기능을 구현해도 기능을 유지 보수하는 데 큰 문제가 없다.
: 필자는 서비스 - DAO 구조를 사용하면 도메인 기능이 서비스에 흩어지게 되지만 도메인 기능 자체가 단순하면 서비스 - DAO로 구성된 CRUD 방식을 사용해도 코드를 유지 보수하는 데 문제가 되지 않는다고 생각한다.
: 한 바운디드 컨텍스트에서 두 방식을 혼합해서 사용할 수도 있다.
: 대표적인 예가 CQRS 패턴이다. CQRS는 Command Query Responsibility Segregation의 약자로 상태를 변경하는 명령 기능과 내용을 조회하는 쿼리 기능을 위한 모델을 구분하는 패턴이다.
: 이 패턴을 단일 바운디드 컨텍스트에 적용하면 다음과 같이 상태 변경과 관련된 기능은 도메인 모델 기반으로 구현하고 조회 기능은 서비스-DAO를 이용해서 구현할 수 있다.
: 각 바운디드 컨텍스트는 서로 다른 구현 기술을 사용할 수도 있다.