ybh***
2022-04-24

실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
몇해 전부터 도메인 주도 개발에 대한 이야기를 들어오고 있었고 스프링(Spring) 기반의 도메인 주도 개발을 프로젝트에 적용해 볼까 생각하는 도중에 "최범균" 님의 "도메인 주도 개발 시작하기"를 읽어보게 되었다.
우선 최범균님의 다른 책들도 꾸준히 읽어 봤고 기초 개념 확립 및 프로젝트 개발, 운영에서 많은 도움이 되었었는데 이번 책 "도메인 주도 개발 시작하기" 도 기본 개념을 잡기가 쉬웠으며 관련 내용을 조금만 응용하면 개발, 운영 프로젝트에 적용이 가능할 정도로 좋은 내용이 많았다.
언제나 최범균님의 책은 기초와 개념 정리가 잘 되어 있어 업무에 적용하기위한 핵심을 쉽게 익힐수 있는것 같다.
"도메인 주도 개발 시작하기" 책에도 언급하고 있지만
"도메인 주도 개발 시작하기" 책의 대상 독자는 초중급이며
예제코드는 자바, 스프링(Spring MVC), JPA(ORM)을 기반으로 설명을 하고 있다.
책을 전체적으로 읽어봤는데 해당 언어나 기술을 몰라도 책을 읽는데는 큰 문제는 없었다.
JPA는 현재 업무에 사용을 하지 않아서 잘 모르지만 개념 및 전체적인 소스 및 설명을 읽어보니 도메인 주도 개발을 알기에는 큰 문제가 없었다. "도메인 주도 개발 시작하기" 책 에서는 JPA의 개념 및 간단한 예제만 설명하고 있다.
하지만 "도메인 주도 개발 시작하기" 개념 및 기초를 익히고 JPA를 추가 공부한다면 도메인 주도 개발에서도 JPA를 100% 활용할 수 있다고 본다.
또한 다른 언어를 학습한 사용자도 "도메인 주도 개발 시작하기" 책을 통해 도메인 주도 개발 주제를 쉽게 학습하고 기본 개념 및 활용 방법을 도출할 수 있다고 생각한다.
"도메인 주도 개발 시작하기" 책의 목차 는 11개로 구성되어 있는데 각각 단원마다 도메인 주도 개발을 위한 기본 개념과 어떻게 설계 및 그리고 어떤 방식으로 도메인 주도 개발을 진행할 수 있는지 자세히 설명하고 있다.
1. 도메인 모델 시작하기
2. 아키텍처 개요
3. 애그리거트
4. 리포지터리와 모델 구현
5. 스프링 데이터 JPA를 이용한 조회 기능
6. 응용 서비스와 표현 영역
7. 도메인 서비스
8. 애그리거트 트랜잭션 관리
9. 도메인 모델과 바운디드 컨텍스트
10. 이벤트
11. CQRS
각 목차별로 객체지향, 데이터베이스 개발 설계에서 도메인 주도 개발로 변경하면서 각각에 대한 문제점 및 개선 방향을 제시하고 왜 도메인 주도 개발로 나아가야 하는지 그리고 각각 방식에 대한 설명함으로써 해당 방법을 왜 써야 하는지 알 수 있게 쓰여 있었다.
도메인 주도 개발을 전부는 적용하지 못해도 하나씩 업무에 적용하여 개선할 수 있는 주제로 쓰여있고 부분적으로 활용해 볼 수 있다고 생각한다.
"도메인 주도 개발 시작하기" 책을 읽으면서 도메인 주도 개발과 현재 개발, 운영하는 프로젝트를 비교해 봤는데 회사 프로젝트가 업무중심이라 도메인 주도 개발 처럼은 진행을 하고 있는것을 알게 되었고 몇개의 설계 문제점 등을 "도메인 주도 개발 시작하기" 책을 통해 알게 되었다.
그리고 책을 읽으면서 JPA도 이제는 적용을 할수 밖에 없는 것을 알 수 있었다. SI 프로젝트에서는 아직 Mybatis를 사용하고 있는데 이제는 JPA 혼용 방식등도 생각해봐야 할 것 같다.
마지막으로 책은 전체적으로 세세하게 읽기 편하게 구성되어 있었다.
1. 그림에 의한 프로세스 설명
2. 소스에 대한 설명
3. 소스에 대한 기능개선을 진행하면서 설명
그림을 통해 프로세스를 설명하고 반복하면서 도메인 주도 개발에 대한 개념 및 기능을 학습하게 할 수 있게 구성되어 있으며 조금씩 구조를 바뀌어서 올바른 방향 및 더 좋은 방법에 대한 것을 소스코드 및 관련 설명을 읽으면서 학습할 수 있게 쓰여 있었다.
도메인 주도 개발에 관심이 있고 방향성을 고민해 본다면 이 책을 한번 읽어보기를 권하고 싶다.