본문 바로가기
개발

DDD란?

by 개발자종혁 2021. 4. 5.
728x90

DDD란?

Domain Driven Developement( 도메인 중심 개발):

- 기술을 어떻게 쓰는지보다, 어떤 일을 수행하는지(business, acitivity -> Domain)를 위주 로 보며, 유저가 이용하는 방향에 집중하는 개발이다.

 

DDD가 제공하는 것

 

1. 전술적 디자인 도구(Stategic design tool)

  • 도메인(예: 전자상거래 웹서비스)

  • 서브 도메인(예: 결제기능)

2. 전략적 디자인 도구 (tactical design tool)

 

stategic design 이란?

context 위주로 생각하며 design하는 것

피자가 어디 있는지에 따라 먹을만한 것인지(의미) 달라진다. 이 의미를 좌우하는 분위기를 context라 한다.

 

 

stategic 디자인을 나타내는 space는 두 가지 방법으로 나타낼 수 있다.

 

- Problem space는 메인 도메인과 , 그보다 작은 일을 하는 서브 도메인으로 나타내는 것이다.

 

solution space란?

context map

- 세일즈(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

 

Hexagonal Architecture, DDD, and Spring | Baeldung

Learn how to organize application layers using Hexagonal Architecture, DDD, and Spring.

www.baeldung.com

 

 

참고한 자료

 

https://www.youtube.com/watch?v=NNFJREcalc0

 

728x90

'개발' 카테고리의 다른 글

프로메테우스 관련 시작  (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

댓글