도메인 주도 설계 철저 입문
서적 참고
도메인
- 도메인은
영역
이란 뜻이다. - 소프트웨어 개발에서 도메인은
프로그램이 쓰이는 대상 분야
라는 의미로 쓰인다.- ex> 회계 시스템을 예로, 회계 분야에는 금전, 장부라는 개념이 등장하는데,
- 이때 금전, 장부가 회계 시스템의 도메인에 해당한다.
- ex> 물류 시스템의 도메인 : 창고, 화물, 운송수단 등..
도메인 모델
- 모델은 현실에서 일어나는 사건, 개념을 추상화 한 것이다.
- 추상이란, 사물 혹은 어떤 개념에서 성질을 뽑아내서 파악하는 것이다.
- 하지만 그것의 모든 성질을 뽑아낼 필요는 없다.
- 도메인에 따라서 해당 성질 중 필요한 것만 뽑아서 추상화시켜야한다.
- ex> 소설가 관점에서 '펜'은 글자를 쓸 수 있다는 성질이 중요하다.
- but, 문구점 관점에서 '펜'은 상품으로서 성질이 중요하다.
- ex> 트럭은 '화물을 나를 수 있다'는 성질만 표현하면 충분하다.
- but, '차 키를 돌리면 시동이 걸린다'라는 정보까지 나타낼 필요는 없다.
- 이렇게 사건 혹은 개념을 추상화하는 작업이
모델링
이다. - 모델링의 결과는
모델
이다. - 도메인 주도 설계에서는 도메인 개념을 모델링한 모델을
도메인 모델
이라고 한다.
도메인 객체
- 도메인 모델은 어디까지나 개념을 추상화한 지식이다.
- 도메인 모델은 어떤 매체를 통해 표현돼야만 문제를 해결할 수 있다.
- 도메인 모델을 소프트웨어 형태의 동작하는 모듈로 나타낸 것이
도메인 객체
이다.
도메인 개념 <-> 도메인 모델 <-> 도메인 객체
- 도메인의 변화가 발생하면 도메인 모델로 그 정보가 반영돼야한다.
- 도메인 모델은 도메인 개념을 추상화 한것이므로 변화를 반영할 수 있다.
- 도메인 모델의 변화가 발생하면 도메인 객체로 그 정보가 반영돼야한다.
- 도메인 객체는 도메인 모델을 구현한 표현이므로, 도메인 모델의 변화를 반영할 수 있다.
- 반대 순서로도 변화 및 반영을 시킬수도 있다.