도메인 주도 설계(Domain-Driven Design)란?

도메인 주도 설계(이하 DDD) 전제는 두 가지입니다.
* 대다수 소프트웨어 프로젝트에서는 초점을 도메인과 도메인 로직에 맞춰야 한다.
* 복잡한 도메인 설계는 모델을 기반으로 삼아야 한다.
DDD는 기술이나 원칙이 아닙니다. 이것은 사고하는 방법이며, 복잡한 도메인을 다뤄야 하는 소프트웨어 프로젝트의 진행 속도를 높이는 데 중요시해야 할 것들의 모음입니다.

어려워….

다시, 도메인 주도 설계란? – 편집자 버전.

소프트웨어는 은행권(계좌 입출금이나 내부 전산 시스템), 여행사(항공권 예약 시스템), 영업(발주, 결재, 재고 파악 시스템) 등 많은 분야에 포진되어 있습니다. 여기서 해당 소프트웨어가 적용될 분야를 도메인이라 이릅니다. 도메인 주도 설계는, 도메인(소프트웨어가 적용되는 분야)를 프로젝트 관계자가 잘 이해하여 도메인의 세심하고 핵심적인 부분을 놓치지 않고 설계하는 방법을 다룹니다.

DDD를 간략히 말하면 이렇습니다. 도메인, 즉 해당 분야의 관계자(클라이언트)와 개발 프로젝트 관계자가 클라이언트 업무에 대해 깊이 이야기를 나눕니다. 그리고 클라이언트가 언급하는 분야의 전문용어들을 꼼꼼히 체크하여, 클라이언트가 말하는 바와 개발 관계자가 이해한 의미가 같은지 합의를 도출합니다. 용어들을 하나하나 합의하여 전체적으로 개념들이 정립되면 이 개념들을 모아 ‘도메인 언어’라 이름 붙이고 설계에 적용합니다.
제대로 된 의사소통을 통해 요구사항을 모델화하고, 모델이라는 동일한 언어를 이용해 해당 분야에 쓸모 있는 설계를 하여 소프트웨어를 구현하는 것이 도메인 주도 설계의 요지입니다.
덧붙여,『도메인 주도 설계란 무엇인가?: 쉽고 간략하게 이해하는 DDD』는 DDD를 처음 설파한 에릭 에반스의 저서 『Domain-Driven Design』의 내용을 핵심만 간추린 요약집의 성격을 띠지요^^

도메인 주도 설계의 흐름을 한눈에 파악할 수 있는 다이어그램.

아래와 같은 생각을 하셨다면 에릭 에반스의 『Domain-Driven Design』을 읽기 전에 『도메인 주도 설계란 무엇인가?: 쉽고 간략하게 이해하는 DDD』를 먼저 보시기를 추천합니다.

  • 600쪽 언제 다 봐.
  • 내가 저걸 다 읽는다고 과연 알까?
  • 그냥 도메인 주도 설계가 뭔지만 알면 돼.

표지 이야기: 바실리 칸딘스키(Wassily Kankinsky)의 구성8(Composition VIII)

에릭 에반스의 『Domain-Driven Design』에는 칸딘스키의 그림이 차용되어 있습니다. (『도메인 주도 설계란 무엇인가』는 흔히 DDDQ라 불리는 DDD 요약집이고요)

칸딘스키의 <구성8>

왜 칸딘스키 그림을 표지에 쓴 것일까요? Why This cover?라는 페이지에는 다음과 같은 이유가 있었습니다.

  • 혼란과 복잡성 속에서 질서 찾기
  • 추상화된 언어 만들기
  • 이 추상들을 작업에 포함하기

제가 원하던 답은 아니었습니다. ㅠ_ㅠ 하여 검색해 본 칸딘스키의 구성 No8

서로 연관성 있는 형태들이 자유롭게 떠돌아다니며 율동감을 느끼게 하면서 마치 한 편의 교향곡을 들려주는 것 같습니다. 여러 색깔의 동그라미는 타악기 소리를 나타내는 파장 같아 보이네요. 크고 작은 악기들이 내는 음을 가늘고 날카로운 직선, 혹은 부드러운 곡선으로 표현해 음의 특성을 말해주고 있습니다.
그는 색깔마다 의미를 붙였는데, 그것이 곧 상징입니다. 예를 들어 악기 중에서도 플루트와 같은 음을 내는 파란색은 천국과 같은 순수한 색이고 노란색이 우리가 사는 이 세상과 같은 색이라면, 흰색은 ‘시작’을, 검은색은 ‘끝’을 뜻한다고 해요.출처: http://blog.naver.com/bbodo82/40021669026 원은 그의 독창적인 상징이었다. <구성8>에 등장한 원은 발산하는 에너지와 힘의 안정감을 보여준다. 상단 왼편의 검은 태양은 붉은 영역에 에워싸여 경쾌한 분위기를 자아내며 세력을 확장해 나간다. 여기에서 주목한 점은 조형적 방법으로 전체 구조의 과학적 시각과 순간적 직감, 전체를 지배하는 법칙, 자유로움 등이 총체적으로 뛰어난 조형성을 발휘한다.

출처: 『칸딘스키와 클레의 추상미술』(2007, 미술문화) 

각 개념에 명확한 의미를 부여해 클라이언트, 개발자, 관리자가 서로 일관되게 쓸 수 있는 언어를 만들고 모델을 잘 정립하는 것. 도메인 주도 설계의 이런 부분과 일맥상통한 면이 있지 않나 어림해 봅니다. ^^

자 그럼!! 이제,『도메인 주도 설계란 무엇인가?: 쉽고 간략하게 이해하는 DDD』을 장바구니에 담아봅시다.

  • yes24
  • 교보문고
  • 알라딘
  • 강컴
  • 11번가
  • 리브로