DDD란?
Domain Driven Developement( 도메인 중심 개발):
- 기술을 어떻게 쓰는지보다, 어떤 일을 수행하는지(business, acitivity -> Domain)를 위주 로 보며, 유저가 이용하는 방향에 집중하는 개발이다.
DDD가 제공하는 것
1. 전술적 디자인 도구(Stategic design tool)
-
도메인(예: 전자상거래 웹서비스)
-
서브 도메인(예: 결제기능)
2. 전략적 디자인 도구 (tactical design tool)
stategic design 이란?
context 위주로 생각하며 design하는 것
stategic 디자인을 나타내는 space는 두 가지 방법으로 나타낼 수 있다.
- Problem space는 메인 도메인과 , 그보다 작은 일을 하는 서브 도메인으로 나타내는 것이다.
solution space란?
- 세일즈(sales) 부분은, 고객의 관심사항, 좋아하는것 필요한것에 대한 정보와 기능이 필요하다.
- 고객 응대(support) 부분은, 고객의 사용 이력 등에 대한 정보와 기능이 필요하다.
- 회계(accounting) 부분은, 고객의 결제 수단 대한 정보와 기능이 필요하다.
- 주문(order) 부분은, 고객의 주소정보와, 그 고객이 사이트를 이용가능한 고객인지 여부가 필요하다.
- 필요한 정보와 기능은 모델과 ubiqutious language로 나타내며 이는 실제 개발에서 DB access, API, 유저 manaul을 포함한다.
- ubiqutious language는 어떤 context에 써도 통한다. 예를 들어 고객의 이력 정보는 고객 응대와 세일즈 모두에 쓸 수 있다.
- bounded context : 여기서의 세일즈, 고객응대, 회계, 주문 부분은 각각의 영역대로 묶이며, 세부 기능을 포함한다 이러한 context를 bounded context라 한다.
- 이 bounded context를 유기적으로 엮은 것이 context map이다.
- domain model과 context map을 연결한 space을 solution space라 한다.
Tactical Design tools
tactical design은 디테일에 집중하기 위해 고안되었다.
context내의 컴포넌트에 집중한다.
- 이를 위해, services, entities, repositories, factories 디자인을 이용한다
- 개발 중간에 계속해서 바뀔수 있다. (tatic: 단기 전략의 성격)
중요 개념
- services
- model driven design
- layered architecture
- entities
DDD를 사용한 실제 예제 (+ spring boot)
Hexagonal Architecture, DDD, and Spring | Baeldung
참고한 자료
https://www.youtube.com/watch?v=NNFJREcalc0
'개발' 카테고리의 다른 글
프로메테우스 관련 시작 (0) | 2021.04.16 |
---|---|
SPA(Single Page App)와 CSR(Client side rendering) (0) | 2021.04.06 |
Springboot PasswordEncoder 등록 (0) | 2021.04.05 |
SHA1 vs SHA2 차이점 (0) | 2021.04.05 |
AES256/ base64 암호화 with java (0) | 2021.04.02 |
댓글