티스토리 뷰

원본글은 github에 있습니다.


'DDD', '도메인 주도 설계'란 단어를 여기저기서 볼 수 있었다.
한번 공부를 해봐야겠다 생각했는데, 오리지널 책(더 빅 블루북)은 어렵단다. 그래도 구입해서 읽어보았다.
역시나 읽기가 쉽지 않았다.. 익숙치 않은 용어들도 나오고 글 전개도 친절하지 않았던걸로 기억한다. 앞부분 보다가 그만두었다.

 

이규원님 페북에서, 전략적 설계가 핵심이라는 이야기를 들었다.
아 그래도 DDD책은 너무 지루하지. 하고 시간이 많이 지났는데..
회사 동료가 스터디를 하는데 14장(전략적 설계)를 읽을 차례라고 해서 나도 무심코 참가했다가, 4부를 다 읽었다.(나이스 나도 이제 전략적 설계 읽었다.)

전략적 설계란?

세 가지 원칙은 누구도 완벽하게 이해할 수 없도록 불규칙하게 뻗어나간 시스템에서도 훌륭한 설계를 만들어 내는 데 기여한다.

 

전략적 설계 파트 초반에 나오는 내용이다.
훌륭한 설계를 위한 원리 및 방법이라고 볼 수 있겠다.
에릭 에반스가 직접 요약한 DDD문서 에서도 대략의 내용을 볼 수 있다.
나도 나름 정리를 해보았다.

그래서 앞으로 코딩 어떻게 하면되지?

마틴 파울러는

DDD의 특히 중요한 부분은 대규모 도메인을 제한된 컨텍스트 네트워크로 구성하는 방법인 전략적 설계의 개념입니다.

 

라고 했다. 대규모!

 

박성철님 페북글에도 비슷한 이야기가 있었다.
나도 14장을 읽으면서 인원많은 프로젝트의 리더나, 컨설턴트가 아닌 대다수 프로그래머에게 필요한 내용인가? 채용공고에는 왜이렇게 많이 등장하지?
나는 대규모 프로젝트에서 리더/컨설턴트 역할을 해본적이 없기에, 저자의 설명을 잘 이해할 수 있을까? 하는 생각도 들었다.

 

하지만 읽다보니 인상적인 내용들이 나타났다.

익스트림 프로그래밍

전략적 설계 파트내내 익스트림 프로그래밍과 실천방법이 나온다.
반복주기, 전체팀(도메인전문가와 밀접한관계), 지속적 통합, 리팩토링(점진적 설계)등등. xp애호가(?)로서 무척이나 반가웠다.
책이 왜 이렇게 읽기 어렵나, 저자를 좀 원망하기도 했었는데(?) 마음이 많이 누그러졌다.

 

마틴 파울러에 따르면, 저자는 xp의 강력한 지지자이고, DDD를 xp접근방식의 자연스러운 구성요소로 보고 있다고 한다.
나도 책을 읽으며 공감했다.

증류(디스틸레이션)

도메인 모델링할때, 어떻게 하는것이 더 나은지 고민될때가 많았다.
15장 디스틸레이션을 보면, 핵심 도메인을 도출하기위해 덜 중요한 것들을 분리하는 방법이 나온다.
내가 어렴풋이 하던 것이, 이제는 자신감이 좀 생길 것 같다. 증류라는 은유도 잘 어울리는 것 같다.

추천사

를 보니 매우 익숙한 이름들이 보였다.

"객체지향 프로그래밍에 쏟은 노력에 비해 가치를 얻지 못한다고 생각한다면 이 책에서 여러분이 잊고 행하지 않은 것이 무엇인지 찾을 수 있을 것이다" -워드 커닝햄

 

"...이 책은 XP와도 잘 어울린다. 이 책은 도메인을 단순 도안하는 법을 다루는 책이 아니다.
이 책은 도메인에 대해 생각하는 법과 도메인에 관해 이야기할 때 사용하는 언어, 그리고 여러분이 도메인에 대해 더 잘 이해한 바를 반영하게끔 소프트웨어를 구성하는 법을 다룬 책이다.
에릭이 생각하기에 문제 도메인에 대한 학습은 프로젝트 초기와 마찬가지로 프로젝트 후반부에서도 일어나므로 리팩터링은 그가 제시한 기법에서 큰 부분을 차지한다.
이 책이 재미있는 이유는 에릭이 갖가지 흥미로운 이야기를 좋은 말솜씨???로 풀어냈기 때문이다. ..." -랄프 존슨

 

"생각이 깊은 소프트웨어 개발자의 책장이라면 분명 이 책이 놓여 있을 것이다." -켄트 벡

 

역시 3extremos 형님들이 추천사도 간결하시다. 특히 워드 커닝햄의 말이 너무 멋지다.

읽는 방법을 다르게?

내용도 많고, 어렵고 읽기가 쉽지 않다.
애자일 스럽게 가장 중요한 부분 부터 읽는건 어떨까?

 

17, 15, 16, 14장 순으로 읽어보면 어떨까?
그리고 본문을 이해하기 어려울때, 예제를 보면 이해가 훨씬 쉬웠다.
이해가 안된다고 너무 매몰되지 말고, 예제 먼저 읽으면 이해가 될 수 있다.
아예 예제부터 읽는 것도 생각해볼만 하다.

 

4부를 읽고나서, 1,2,3부에 관심가는 부분 몇개를 읽어봤는데, 적응이 되었는지 훨씬 읽기가 수월하다???
이런게 EVOLVING ORDER와 결이 같으려나.

론 제프리스

는 DDD를 어떻게 생각하려나 궁금해서 찾아보니 이 하나 있었다.

There is too much. To really take an important role in practice, ideas need to get built into people's heads.
너무 많습니다. 실제로 중요한 역할을 수행하려면 아이디어가 사람들의 머릿속에 자리잡아야 합니다.(번역기주의)

 

단순히 읽은 것은 머리에서 없어진다. DDD책을 나는 레퍼런스처럼 읽어야 할 것 같다.(1,2,3부는 아직 다 읽지 않았지만)
몸으로 체득하며, 필요할때마다 꺼내봐야 될 것 같다.

 

사람을 변화시키는 것은 읽는 것이 아니라 행동하는 것입니다. 나는 얼마나 많은 다이어트 책을 읽었습니까? 내가 날씬한가? 자기계발 책은 몇 권입니까?