본문 바로가기

Design/DDD

[DDD 첫걸음] 1. 전략적 설계

우리가 해결하고자 하는 문제가 무엇인지 합의하기 전에 해결책을 얘기하는 것은 의미가 없다.
또한 해결책에 대해 합의하기 전에 어떻게 구현하는지 얘기하는 것도 의미가 없다.
- 애프랏 골드랫 - 아쉬라그


도메인 주도 설계 (DDD - Domain Driven Design)에는 크게 두가지 부분으로 나눌 수 있다.

1. 전략적 측면

- 무엇?왜?라는 질문에 대한 정답을 찾는 것.
- 우리가 어떤 소프트웨어를 만드는지, 그리고 그 소프트웨어를 만드는지에 대한 해답을 찾는 것.

2. 전술적 측면

- 어떻게?라는 방법에 대한 것.
- 소프트웨어 각각의 구성요소가 구현되는 방법을 찾는 것.
 
 

 

이번 장에서는 전략적 측면에 대해서 알아보도록 한다.
 

전략적 설계 관점에서 알아볼 것.

1. 기업의 비즈니스 전략을 분석하는 방법.

- 기업의 비즈니스가 소비자에게 어떤 가치를 제공하는지 분석하고 다른 회사와 경쟁하는 방법을 소개.
- 세분화된 비즈니스 구성요소를 식별하고 전략적 가치 평가 및 소프트웨어 설계 의사결정에 미치는 영향 분석.

2. 도메인 주도 설계를 진행할 때 반드시 포함해야 하는 유비쿼터스 언어.

- 유비쿼터스 언어를 개발하고 효율적으로 활용하기 위한 방법을 학습.

3. 도메인 주도 설계의 또 다른 핵심 도구인 바운디드 컨텍스트.

- 바운디드 컨택스트가 왜 유비쿼터스 언어를 만들기 위해 필수적인 요소인지 설명.
- 발견한 비즈니스 지식을 도메인 모델로 변환하는 방법을 학습.
- 궁극적으로 바운디드 컨텍스트를 활용하여 소프트웨어 시스템의 구성요소를 설계 하는 것이 목표.

4. 시스템 구성요소를 연동하는 방법.

- 시스템 구성요소를 연동하는 방법에 영향을 주는 기술적, 조직적 제약사항에 대해서 알아본다.
- 다양한 상황과 제한을 다루는 연동 패턴을 배우고, 각 패턴이 개발팀 간의 협업에 어떻게 영향을 미치는지 학습.
- 컨텍스트 맵에 대해 학습한다.