이 글은 도메인 주도 개발 시작하기 책을 읽고 느낀 필자의 주관적인 생각입니다.
Prologue
올해 1월 넥스트스텝에서 주관한 DDD 세레나데 7기 강의를 들으면서 관련 후기 및 내용을 정리한 적이 있다.
관련 포스팅
해당 강의를 들으며 DDD 관련 책을 읽어야겠다고 다짐했지만, 이런저런 일에 밀려 미루다 9월이 되어서야 드디어 이 책을 펼치게 되었다.
강의가 실무 기반의 내용 위주였다면, 이 책은 DDD의 핵심 개념을 다루는 이론적인 내용에 더 가까웠다.
책을 읽으며 장마다 중요하거나 기억하고 싶은 내용들은 별도의 GitHub 레포지토리에 꾸준히 정리해두었다.
- ‘도메인 주도 개발 시작하기’ 책 읽고 정리한 내용: Github 레포지토리
Review
-
전반적으로 이해도는 90%, 만족도는 75% 정도였다.
-
결론부터 말하자면, 이 책은 도메인 주도 설계의 핵심 개념을 배우기에 좋은 것 같다.
무엇보다 저자인 최범균님이 개발 경험이 많지 않은 주니어 개발자도 이해하기 쉽게 개념을 풀어 설명해주신 점이 좋았다.
하지만 역시나, 이런 개념들은 직접 실무에 적용해봐야만 더 명확하고 깊게 이해할 수 있을 거란 생각이 들었다.
단순히 책을 읽는 것만으로 개념을 온전히 ‘내 것’으로 만들기는 어려워 보였다.
-
나 역시 ‘DDD 세레나데’ 강의를 통해 DDD가 무엇인지 맛보기는 했지만, 음식으로 비유하자면 메인 디쉬가 나오기 전의 애피타이저만 맛본 느낌이었다.
도메인과 비즈니스가 복잡한 큰 조직에서 DDD를 적용하는 것은 어떤 느낌일지 아직은 막연하게 느껴진다.
다행히 나는 강의에서 실무와 유사한 간단한 프로젝트를 경험해봤기에, 책에서 설명하는 개념들이 어떤 맥락에서 필요한지 이해할 수 있었다.
만약 강의 경험 없이 이 책만 읽었다면, 이해도는 90%가 아닌 60% 이하로 뚝 떨어지지 않았을까 싶다.
-
그리고 이 책은 Java, Spring Boot, JPA 기술을 사용하는 개발자라면 이해가 더 수월할 것 같다.
예시 코드가 대부분 해당 기술로 되어있기도 했고, 4장과 5장의 경우 JPA에 기반한 내용이었다.
-
이 책에서 중요하다고 생각했던 장은 3장, 7장, 9장인 것 같다.
애그리거트, 도메인 서비스, 바운디드 컨텍스트가 도메인 주도 설계의 핵심 개념이라고 생각하기 때문이다.
1장과 2장은 도메인 주도 설계가 무엇인지에 대한 기초 개념의 느낌이었고,
3장부터가 본격적인 내용인 느낌이다.
-
한 가지 아쉬웠던 점은 내용이 기술적인 부분에 치우쳐 있다는 것이었다.
DDD에는 크게 ‘전략적 설계’와 ‘전술적 설계’가 있는데, 이 책은 코드 레벨의 ‘전술적 설계’에 더 무게를 두고 있다.
강의에서는 DDD가 단순히 개발자를 위한 기술이 아니라, 기획자나 도메인 전문가 등 다양한 직군이 함께 소통하며 만들어가는 ‘전략적 설계’의 중요성을 강조했다.
하지만 이 책은 기술적인 내용이 주를 이루다 보니, 협업의 관점을 강조했던 강의와는 다른 결로 느껴졌다. 아마 이 지점에서 아쉬움이 남았던 것 같다.
만약 내가 이 책으로만 DDD를 처음 접했다면, DDD를 그저 ‘전술적 설계’ 기법 중 하나로 오해했을지도 모르겠다.
DDD를 단순히 기술적인 내용으로만 이해하지 않았으면 좋겠다는 생각이 들었다.
-
이번에 다시 한번 느낀 점은, 어떤 기술이든 책 한 권만으로는 온전히 이해하기 어렵다는 것이다.
최소 두세 권은 읽어봐야 그 기술이 말하고자 하는 바를 다각도로 파악하고 시야를 넓힐 수 있는 것 같다.
-
누군가 이 책을 읽을지 말지 고민한다면
‘도메인 주도 설계’라는 개념에 관심이 있거나, 복잡한 도메인을 어떻게 코드로 풀어낼지 고민하는 개발자에게 이 책을 추천하고 싶다.
물론 이 책 한 권이 모든 고민을 해결해주진 않는다.
중요한 것은 책에 나오는 바운디드 컨텍스트, 도메인 서비스, 애그리거트 같은 개념들을 실무나 개인 프로젝트에 직접 적용해보며 자신만의 경험을 쌓고 장단점을 체득하는 과정일 것이다.