🧐TIL

[DDD] 도메인 주도 설계란?

date
Feb 8, 2023
thumbnail
slug
what-is-ddd
author
status
Public
summary
“도메인 주도 설계 철저 입문”을 읽으며 공부한 내용을 정리합니다.
type
Post
category
🧐TIL
tags
TIL
DDD
Architecture
updatedAt
Jun 18, 2023 05:57 AM

DDD

DDD는 Domain Driven Design의 약자로 한국어로는 도메인 주도 설계라고 부른다.

그럼 도메인은 무엇인가?

도메인은 ‘영역’이라는 뜻으로 프로그래밍에서는 프로그램이 쓰이는 대상 분야를 의미한다.
도메인이 왜 중요한지를 이해하려면 소프트웨어 개발에 대한 정의부터 다시 해야하는데, <도메인 주도 설계 철저 입문>에서는 소프트웨어 개발을 이용자의 문제를 정확하게 이해하고 그것을 해결할 수 있는 최선의 수단을 구현하는 것으로 소개한다.
이용자의 문제를 정확하게 이해한다는 것은 곧 이용자가 접하는 환경에 대한 지식을 쌓는다는 것이고, 코드는 유용한 지식을 잘 정리해놓은 문서와도 같다.
이런 관점에서 봤을 때 도메인 주도 설계는 소프트웨어가 사용될 분야의 지식에 초점을 맞추고 해당 분야에 속하는 개념과 사건들 중 문제 해결에 유용한 부분들을 추상화하여 소프트웨어에 반영하는 방법이라고 정리할 수 있다.

도메인 모델과 도메인 객체

프로그래밍에서 모델은 현실의 사건이나 개념을 추상화한 것을 말한다.
추상은 현실 개념에서 공통점이나 특성을 뽑아 파악하는 것으로 현실의 모든 것을 반영하는 것이 아니다. 즉, 추상을, 모델링을 잘 하기 위해서는 도메인 개념 중에서도 불필요한 것은 제외시키고 문제 해결을 위해 필요한 것이 무엇인지 파악할 수 있는 것이 중요하다.
그리고 이런 추상화 된 도메인 모델을 동작하는 모듈로 구현해줘야 하는데 이때 구현하는 것이 도메인 객체다.
한편 현실의 세계는 항상 같은 상태로만 존재하지 않고 늘 변화가 생기는데 이런 변화가 모델을 통해 도메인 객체에도 반영이 되어야 한다.