본문 바로가기

공부 기록/영상 후기

[NHN FORWARD 22] DDD 뭣이 중헌디?

https://youtu.be/6w7SQ_1aJ0A?si=fAUjOr_9__NadgRP

DDD에 대한 오해

- DDD는 전술적 패턴이다. => DDD에서 전략적 설계가 중요하다.

- DDD는 은탄환이다, MSA로 귀결된다, 방법론이다, 기술이나 구현 영역이다 ... 등등

 

DDD(Domain Driven Design)

- 패턴 사용법이나 구체적 방법론이 아닌, 오히려 추상적인 철학이나 접근법이라고 할 수 있다.

- 전략적 설계에 근간을 두고 있다!

 

전략적 설계

- 비즈니스 도메인 : 회사가 고객에게 제공하는 서비스 영역

- 문제 도메인 : 비즈니스 영역 중 일부(또는 전체) 영역을 소프트웨어를 통해 해결하고자 할 때, 해당 영역(문제 해결을 통한 가치 창출)

 

전략적 설계 과정

1. 비즈니스 도메인에서 문제 도메인 추출

2. 문제 도메인을 하위 도메인으로 나눈다.(마치 분할 정복처럼) => 도메인 지식 기반 위에서 유비쿼터스 언어를 사용하여 소통

3. 문제 공간 식별 => 핵심 하위 도메인 식별(핵심/지원/일반)

4. 문제 공간을 해결 공간으로 => Bounded-Context 간 경계를 설정하고 관계 설정

 

브라운 필드 전략적 설계

- 이미 구축된 소프트웨어에서 진행하는 프로젝트 <=> 맨 땅에서 시작하는 것은 그린 필드

* Big ball of mud : 특별한 구조가 없는 아키텍처 설계

 

전략적 설계 시 유용한 도구

- 사용 사례(use-case) 분석 => 전통적인 탑다운 방식

- 이벤트 스토밍 => 브라운 필드 상황에서 매우 유용

- 비즈니스 모델 분석

 


Bounded-Context

- 바운디드 컨텍스트가 다르면 유비쿼터스 언어도 달라진다.

- 콘웨이의 법칙 : 소프트웨어의 구조는 해당 소프트웨어를 개발하는 조직의 구조를 따라간다.

- 역콘웨이의 전략 : 개발하는 조직의 구조를 소프트웨어의 구조에 맞춘다.

 

Bounded-Context 매핑 관계

 

[정리]

- DDD에서 전략적 설계가 중요하다.

- 지식 탐구와 커뮤니케이션

- 언제 어디서나 유비쿼터스 언어로 소통한다.