|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: " '도메인 주도 개발 시작하기' 책 후기 " |
| 4 | +categories: [Book] |
| 5 | +author: devFancy |
| 6 | +--- |
| 7 | +* content |
| 8 | +{:toc} |
| 9 | + |
| 10 | +> 이 글은 [도메인 주도 개발 시작하기](https://product.kyobobook.co.kr/detail/S000001810495) 책을 읽고 느낀 필자의 주관적인 생각입니다. |
| 11 | +
|
| 12 | +## Prologue |
| 13 | + |
| 14 | +올해 1월 넥스트스텝에서 주관한 [DDD 세레나데 7기](https://edu.nextstep.camp/c/GwN2MSqv) 강의를 들으면서 관련 후기 및 내용을 정리한 적이 있다. |
| 15 | + |
| 16 | +> 관련 포스팅 |
| 17 | +
|
| 18 | +* [DDD 세레나데 7기, 5주간의 여정을 돌아보며](https://devfancy.github.io/DDD-Serenade-7th-Review/) |
| 19 | + |
| 20 | +* [DDD 세레나데 7기 1주차 (feat. 이벤트 스토밍)](https://devfancy.github.io/DDD-Week1-Review-And-EventStorming/) |
| 21 | + |
| 22 | +해당 강의를 들으며 DDD 관련 책을 읽어야겠다고 다짐했지만, 이런저런 일에 밀려 미루다 9월이 되어서야 드디어 이 책을 펼치게 되었다. |
| 23 | + |
| 24 | +강의가 실무 기반의 내용 위주였다면, 이 책은 DDD의 핵심 개념을 다루는 이론적인 내용에 더 가까웠다. |
| 25 | + |
| 26 | +책을 읽으며 장마다 중요하거나 기억하고 싶은 내용들은 별도의 GitHub 레포지토리에 꾸준히 정리해두었다. |
| 27 | + |
| 28 | +* '도메인 주도 개발 시작하기' 책 읽고 정리한 내용: [Github 레포지토리](https://github.com/devFancy/kotlin-java-playground/tree/main/book/Starting-with-Domain-Driven-Design) |
| 29 | + |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +## Review |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | +* 전반적으로 이해도는 90%, 만족도는 75% 정도였다. |
| 38 | + |
| 39 | +* 결론부터 말하자면, 이 책은 도메인 주도 설계의 핵심 개념을 배우기에 좋은 것 같다. |
| 40 | + |
| 41 | + 무엇보다 저자인 최범균님이 개발 경험이 많지 않은 주니어 개발자도 이해하기 쉽게 개념을 풀어 설명해주신 점이 좋았다. |
| 42 | + |
| 43 | + 하지만 역시나, 이런 개념들은 직접 실무에 적용해봐야만 더 명확하고 깊게 이해할 수 있을 거란 생각이 들었다. |
| 44 | + |
| 45 | + 단순히 책을 읽는 것만으로 개념을 온전히 '내 것'으로 만들기는 어려워 보였다. |
| 46 | + |
| 47 | + |
| 48 | +* 나 역시 'DDD 세레나데' 강의를 통해 DDD가 무엇인지 맛보기는 했지만, 음식으로 비유하자면 메인 디쉬가 나오기 전의 애피타이저만 맛본 느낌이었다. |
| 49 | + |
| 50 | + 도메인과 비즈니스가 복잡한 큰 조직에서 DDD를 적용하는 것은 어떤 느낌일지 아직은 막연하게 느껴진다. |
| 51 | + |
| 52 | + 다행히 나는 강의에서 실무와 유사한 간단한 프로젝트를 경험해봤기에, 책에서 설명하는 개념들이 어떤 맥락에서 필요한지 이해할 수 있었다. |
| 53 | + |
| 54 | + 만약 강의 경험 없이 이 책만 읽었다면, 이해도는 90%가 아닌 60% 이하로 뚝 떨어지지 않았을까 싶다. |
| 55 | + |
| 56 | +* 그리고 이 책은 Java, Spring Boot, JPA 기술을 사용하는 개발자라면 이해가 더 수월할 것 같다. |
| 57 | + |
| 58 | + 예시 코드가 대부분 해당 기술로 되어있기도 했고, 4장과 5장의 경우 JPA에 기반한 내용이었다. |
| 59 | + |
| 60 | + |
| 61 | +* 이 책에서 중요하다고 생각했던 장은 3장, 7장, 9장인 것 같다. |
| 62 | + |
| 63 | + **애그리거트, 도메인 서비스, 바운디드 컨텍스트**가 도메인 주도 설계의 핵심 개념이라고 생각하기 때문이다. |
| 64 | + |
| 65 | + 1장과 2장은 도메인 주도 설계가 무엇인지에 대한 기초 개념의 느낌이었고, |
| 66 | + |
| 67 | + 3장부터가 본격적인 내용인 느낌이다. |
| 68 | + |
| 69 | + |
| 70 | +* 한 가지 아쉬웠던 점은 내용이 **기술적인 부분**에 치우쳐 있다는 것이었다. |
| 71 | + |
| 72 | + DDD에는 크게 '전략적 설계'와 '전술적 설계'가 있는데, 이 책은 코드 레벨의 '전술적 설계'에 더 무게를 두고 있다. |
| 73 | + |
| 74 | + 강의에서는 DDD가 단순히 개발자를 위한 기술이 아니라, 기획자나 도메인 전문가 등 다양한 직군이 함께 소통하며 만들어가는 '전략적 설계'의 중요성을 강조했다. |
| 75 | + |
| 76 | + 하지만 이 책은 기술적인 내용이 주를 이루다 보니, 협업의 관점을 강조했던 강의와는 다른 결로 느껴졌다. 아마 이 지점에서 아쉬움이 남았던 것 같다. |
| 77 | + |
| 78 | + 만약 내가 이 책으로만 DDD를 처음 접했다면, DDD를 그저 '전술적 설계' 기법 중 하나로 오해했을지도 모르겠다. |
| 79 | + |
| 80 | + DDD를 단순히 기술적인 내용으로만 이해하지 않았으면 좋겠다는 생각이 들었다. |
| 81 | + |
| 82 | + |
| 83 | +* 이번에 다시 한번 느낀 점은, 어떤 기술이든 책 한 권만으로는 온전히 이해하기 어렵다는 것이다. |
| 84 | + |
| 85 | + 최소 두세 권은 읽어봐야 그 기술이 말하고자 하는 바를 다각도로 파악하고 시야를 넓힐 수 있는 것 같다. |
| 86 | + |
| 87 | + |
| 88 | +* 누군가 이 책을 읽을지 말지 고민한다면 |
| 89 | + |
| 90 | + '도메인 주도 설계'라는 개념에 관심이 있거나, **복잡한 도메인을 어떻게 코드로 풀어낼지 고민하는 개발자**에게 이 책을 추천하고 싶다. |
| 91 | + |
| 92 | + 물론 이 책 한 권이 모든 고민을 해결해주진 않는다. |
| 93 | + |
| 94 | + 중요한 것은 책에 나오는 바운디드 컨텍스트, 도메인 서비스, 애그리거트 같은 개념들을 실무나 개인 프로젝트에 직접 적용해보며 자신만의 경험을 쌓고 장단점을 체득하는 과정일 것이다. |
| 95 | + |
| 96 | + |
| 97 | +## Reference |
| 98 | + |
| 99 | +* [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지](https://product.kyobobook.co.kr/detail/S000001810495) |
0 commit comments