도메인 주도 개발 시작하기
나의 평점 4.5/5.0
추천합니다.
도메인 주도 개발에 관심 있으나 파편화된 인터넷상의 지식으로는 도저히 뭐라는 건지 이해가 안된다면.
오브젝트 같은 이론적인 책들을 읽어도 실제 프로젝트에 어떻게 적용해야할지 감이 안 잡힌다면.
추천하지 않습니다.
아주 직관적이고 실질적인 DDD 입문서 같은 책이기 때문에 이미 개념이 잡힌 사람에게는 적합하지 않을 수 있다.
이벤트 스토밍, 바운디드 컨텍스트 같이 설계 과정에 필요한 개념은 거의 다루지 않는다.
늘 그렇듯 의식의 흐름대로 작성하는 리뷰.
책 리뷰를 작성하기 전에 내가 왜 이 책을 읽게 되었는지 아무도 궁금해하지 않을 얘기를 먼저 하고 싶다.
내가 도메인 주도 개발에 관심을 가지게 된 과정은 이러하다.
1. 몇 달 전, "객체지향의 사실과 오해"라는 책을 읽고 객체지향의 낭만에 취함. 근데 어떻게 해야할지는 모름.그런 개념적인 부분들을 공부해도 이해할 수 있을만한 시기가 아니였기 때문에 빠르게 포기하고 다른 공부 열심히 함.
2. 나의 첫 프로젝트 Devillage를 진행하며 "이딴 게 객체지향 언어로 작성한 코드..? 난 대체 뭘 하고 있는 거지..?"라는 생각에 빠졌지만 그 때 나는 매일 밤새며 자바보다 리액트 코드를 훨씬 많이 작성하던 시기라 마찬가지로 그냥 넘어감.
3. 파이널 프로젝트인 모락모락을 TDD로 진행하다보니 서비스 계층에 무수한 Mock 객체들이 얽히고 설킨 상태를 보며 현자타임이 강하게 옴. (Mock 객체가 늘어날수록 단위 테스트의 신뢰도가 떨어진다.)
cascade나 orphanRemoval 설정을 적절하게 해줘서 큰 문제는 없었으나, 그럼에도 getter로 무한히 이어가는 연관관계에서 종종 터지는 N+1 문제나 기타 참조 관련 문제들을 겪으며 고통 받고, 리팩터링 하려고 하는데 의존성들이 얽히고 얽혀 하나를 바꿀 때마다 자꾸 이상한 곳에서 문제가 터지는 경험들을 하며 이걸 개선할 방법들에 대한 고민에 빠짐.
4. 마지막으로 "객체지향의 사실과 오해" 책의 저자이신 조영호님이 집필한 "오브젝트"를 읽고 완벽하게 객체지향 뽕에 취해버림. 근데 읽을 때는 낭만에 취하는데 실전에서 어떻게 해야할지는 여전히 모르겠음.
5. 그러다가 마침 또 "오브젝트"와 "객체지향의 사실과 오해"의 저자이신 조영호님이 우아한테크 세미나에서 발표한 "https://www.slideshare.net/baejjae93/ss-151545329"(우아한 객체지향) 영상을 보고 유레카를 외치며 반드시 나도 DDD로 프로젝트를 하나 진행해보겠다고 마음 먹음.
세 줄 요약
- 객체지향적인 설계 / 개발을 해보고 싶어서.
- getter로 줄줄이 이어지는 무의미한 암호문 같은 코드가 아닌 클린 코드 작성하고 싶어서.
- 보다 테스트 코드 작성 및 유지 보수가 편한 코드를 작성하고 싶어서.
당연히 DDD가 Silver bullet은 아니다. 모든 것에 일장일단이 있는 법. 근데 "일단"은 다른 곳 가서 알아보삼.
아무튼 DDD를 하고는 싶은데, 이런 개발 방법론에 관련된 것들이 늘 그렇듯이 다들 정말 추상적으로 알려준다. 그리고 뭔가 알려주는 것 같다가 갑자기 끝난다. 뭔가 방법이 없을까 찾아보다가 발견한 것이 바로 이 책 "도메인 주도 개발 시작하기"다.드디어 책 얘기로 넘어왔다. ㅋㅋㅎㅎ
난 최범균님께서 집필하신 책을 읽는 것도 이번이 처음이 아닌데, 이전에 "테스트 주도 개발 시작하기" 책을 리뷰한 적이 있다. (https://7357.tistory.com/242)선생님께는 조금 죄송한 말이지만 해당 책은 나에게 그렇게 인상 깊은 내용은 아니였기 때문에 이 책에도 큰 기대감은 없었으나 리뷰들을 찾아보니 다른 강의나 책들에 비해 보다 직접적으로 방법을 알려줘서 좋다는 평이 많아 구매하게 되었다.
그리고 결과는? 내가 찾던 그런 책이다.
그냥 자바 코드가 아니라 실전 스프링 예제, 그것도 JPA로 작성된 실제 내 프로젝트에 바로 적용 가능한 코드가 있는 책..
Specification이나 Criteria 같이 QueryDsl을 쓸 줄 안다면 실제로는 별달리 사용할 일이 없을 것 같은 것들에 분량이 상당히 많이 배정된 것이 아쉽기는 하지만, 그런 부분들을 감안해도 너무 만족스럽다.
책의 난이도 자체가 완전히 DDD 입문자 수준에 맞춰져 있고, 필력도 좋으셔서 글이 막힘 없이 술술 읽힌다.
예제들도 "커피" "손님" 같은 예시가 아니라 당장 나 정도 수준의 취준생이 실제 프로젝트에 적용할만한 코드들이라서 아주 와닿으며 책에서 다루는 내용들 중 정도가 내가 평소에 막연히 "이렇게 해보고 싶다는 생각은 있는데, 어떻게 해야할지 몰랐던 것들"을 정말 많이 다루고 있었기 때문에 시간 가는 줄 모르고 너무 재미있게 읽었다.
이 책을 읽고 자신감이 붙어서 "만들면서 배우는 클린 아키텍처", "오브젝트", "도메인 주도 개발 시작하기"를 읽었으니 나도 DDD 프로젝트 하나 해야겠다! 라고 급발진해서 바로 조를 편성해서 DDD로 개발을 진행 중이다.
근데 사실 반쪽짜리 DDD 프로젝트가 되어가고 있다 (ㅋㅋㅜ)
DDD의 설계 파트에 대한 이해가 너무 부족한 상태로 개발을 시작하는 바람에 많은 혼선을 겪었고, 지금은 취준과 프로젝트를 병행해야하는 시기라 다들 바빠서 DDD에 대한 추가적인 학습을 할 시간이 부족해서.. 이건 나중에 프로젝트 후기 작성할 때까지 아껴놨다가 다시 써야겠다.
잠깐 얘기가 샜는데, 지금 프로젝트 상태가 조금 아쉽다고 해서 책의 내용이 부실했던 것은 절대 아니다.
이 책이 없었으면 애초에 어떻게 시작해야할 지 몰라서 경험조차 해보지 못했을 것이고, 비록 이번 프로젝트가 조금 부족하게 마무리 되더라도 다음 프로젝트는 이번 기회를 발판 삼아 "진짜 제대로된 DDD"를 해보면 될 일이니 말이다.
나처럼 DDD에 관심은 있으나, 도저히 어떻게 스타트를 끊어야할지 모르겠다는 사람이 있다면 이 책을 강력하게 추천한다.
추가적으로, 시간적 여유가 있다면 이벤트 스토밍이나 바운디드 컨텍스트 같이 개념적인, 그리고 설계 단계에 중요한 부분을 다루는 책도 읽어보면 좋을 것이다.
나는 해당 부분에 대한 이해가 부족했고 추가로 배울 시간도 마땅치 않아서 많이 고생했다..
책 리뷰가 아니라 그냥 내 일기장이 된 것 같다.
근데 내 블로그니까 내 마음대로다.
오늘의 리뷰는 여기서 끝.
최범균 선생님 감사합니다~~
한줄평
"도메인 주도 개발 입문서"
'개발 도서 리뷰 > 개발 도서 리뷰' 카테고리의 다른 글
개발 도서 리뷰 (13) 단위 테스트 ?/5.0 (0) | 2023.03.17 |
---|---|
개발 도서 리뷰(12) 도메인 주도 설계로 시작하는 마이크로 서비스 개발 4.5/5.0 (3) | 2023.03.06 |
개발 도서 리뷰 (10) 업무에 바로 쓰는 SQL 튜닝 4.0/5.0 (0) | 2022.12.24 |
개발 도서 리뷰 (9) 그림으로 공부하는 TCP/IP 구조 4.0/5.0 (0) | 2022.10.24 |
개발 도서 리뷰 (8) 만들면서 배우는 클린 아키텍처 4.0 / 5.0 (0) | 2022.10.05 |