DDD란?

왈왈왈 (Yoon tae uk)·2021년 6월 28일
3

소프트웨어의 목적은?

  • 현실 세계의 프로세스나 자동화 하거나 비즈니스 문제를 해결하기 위하여 존재한다.

도메인이란?

  • 자동화된 비즈니스나 현실세계의 문제
  • 소프트웨어와 도메인은 긴밀한 관계를 가지고 있다.

DDD(Domain Driven Design) 이란

도메인 주도 설계란 프로젝트의 주요 초점을 핵심 도메인 및 도메인 로직에 배치하는 개발방식을 말하며, 그 목적은

소프트웨어 디자인과 비즈니스 도메인, 요구하는 전략을 일치시켜야 한다는 목적에서 DDD라는 방법이 탄생하였습니다.

Strategic Design(추상화)

Strategic Design이란 비즈니스 도메인에 대한 지식과 문제 도메인을 모델링 할 수 있는 능력을 요구한다.

비즈니스 도메인이란 기업의 전반적인 활동을 정의하며 기업이 고객에게 제공하는 서비스의 큰 설계를 domain이라고 부르며 비즈니스 도메인의 목적을 이루긴 위해선, 기업은 여러 가지의 서브도메인을 운영하여야 한다. '서브 도메인' 이란 위와같은 전체 비즈니스의 세부적인 큰 분야의 영역에 해당한다.

또 각각의 서브도메인에 관해서 각 서브도메인의 문맥적 상황을 bounded context라고 부르며, 실제 서브도메인의 구체적인 형상을 나타내는 것을 domain model이라고 부릅니다.

Ubiqutious Language

유비쿼터스 언어는 DDD 모델을 둘러싼 언어구조를 뜻하며, 그룹 간에 효율적인 소통이 필요하다면, 그룹들은 공통된 언어를 사용하여야 한다.

실제 개발의 측면에서 디자이너, 기획자, 개발자가 공통된 언어를 사용하여야 의사소통이 원활할 것이며 이러한 공통된 언어를 Ubiquitous Language라고 합니다.

Domain Model

도메인모델이란 실제 세계를 반영은 하지만 실제 세계의 복사본이 아니며, 실제 세상을 더 잘 이해할 수 있도록 추상화되고 구체화하는 것이다.

Bounded Context와 Context map

어떠한 기업,서비스에서의 도메인과 서브도메인의 범위는 매우 넓어서, 하나의 용어도 서브도메인에서 다양한 의미로 사용될 수 있다.

이러한 상황의 해결책은 유비쿼터스 언어에 명확한 컨텍스트를 지정하여 한정된 상황에서 사용하도록 하는 것이다.

Tactical Design(실체화)

전술적 설계는 전략적 설계에서 정의한 도메인 모델의 세부사항을 구현하는 과정이다, 전략적 설계를 통한 Bounded context, 도메인 모델을 통하여 도메인 객체를 구현하며 각종 설계 패턴과 개발 구현을 의미한다.

Aggregate

aggregate란 엔티티의 집합이면서, 객체들의 수직구조를 나타낸다. 객체는 값을 통해서만은 식별할 수 없고 각 aggregate가 식별되기 위해서는 ID 필드가 반드시 필요하다.

Repository

특정 aggregate에 접근하여 사용자는 더는 DB에서 고객의 이름, 주소, 나이 등을 사용하지 않고 reps에 agrreate를 저장하여 쉽게 정보에 접근하고 정보를 변경할 수 있다.

정리

DDD란 복잡한 비즈니스 로직을 도메인모델로 담아서 다시 쉽게 풀어나가는 느낌이다, 아직 완전히 이해를 하지 못하였지만, 정리를 하고 나니 좀 더 길이 보이는 거 같기도? 나머지는 실제 프로젝트에 적용해보아서 이해하는 걸로 해야겠습니다..

Reference

https://docs.google.com/presentation/d/19WRZ1kk0-uHbOzKjI3_u0HWmHqb6yaP9MT28DML5bxU/edit#slide=id.g7adc73fa01_0_103

0개의 댓글