2. Strategic Design

전략적 설계

DDD에서는 크게 전략적 설계와 전략적 설계로 나누는데 전략적 설계는 전술적 설계의 선행 조건이다. 전략적 설계는 세세한 구현 전의 윤곽선으로 비즈니스상 전략적으로 중요한 것, 중요도에 따라 일을 나누는 방법, 필요에 따라 통합하는 최적의 방법을 강조한다. 전략적 설계는 다음과 같은 패턴을 다룬다.

  1. Ubiquitous Language

  2. Bounded Context

  3. Subdomain

전략적 설계시

  • 사용 사례(use case) 분석

  • Event Stroming

  • Business Model 분석

등의 도구를 사용할 수 있다.

전술적 설계

전술적 설계는 도메인 모델의 세부 사항을 그리기 위한 얇은 붓으로 가장 중요한 도구중 하나는 엔티티와 값 객체를 알맞은 크기의 Aggregate으로 묶는데 사용하는 Aggregate 패턴이다.

보편언어(Ubiqutious Language)

핵심적인 것으로 소프트웨어와 관련된 모든 사람이 같은 언어를 써야 한다. 비즈니스 도메인을 적절하게 다룰 수 있는 용어를 함께 만들어 코드를 작성할때도 사용해야 한다.

제한된 컨텍스트(Bounded Context)

커다란 시스템을 만든다면 하나의 어휘가 다양한 의미로 쓰일 위험이 있다. 맥락을 좁힘으로써 하나의 어휘가 하나의 대상을 지시하는 이상적인 상황을 만들 수 있다.

하나의 바운디드 컨텍스트는 한 팀이 수행해야 한다. 각 팀은 각자의 소스코드와 데이터베이스를 소유하고 공식 인터페이스를 정의해서 바운디드컨섹스트를 다른 팀이 사용할 수 있게 허용한다.

하위 도메인(Subdomain)

시스템을 나누는데 Bounded Context 단위를 사용한다면 도메인을 나눌 땐 Subdomain이라는 단위를 사용한다. 전자가 소프트웨어를 조직화하는 방법이라면 후자는 현실을 조직화하는 방법이다.

Last updated