목차

도메인 주도 개발 시작하기 – 책 소개

🗓️

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

  • 저자 : 최범균
  • 한빛미디어, 2022 / 지앤선, 2016

범균님의 DDD 입문서가 재발간 되었다. 개인적으로는 스프링 입문을 이분 책✳︎으로 하게 되서 반가운 마음에 읽게 되었다. 에릭 에반스의 DDD를 바로 보는 것이 가장 베스트지만 서점에서 몇 번을 시도 했다가 나에게 문턱이 너무 높아 매번 후순위로 밀려났다. (그 외에 Effective Java, Clean Code, Designing Data Intensive Applications 가 있다) 범균님 특유의 자극적이지 않고 나긋나긋한 문장과 이해하기 쉬운 예시를 드는 빌드업이 좋다.

도메인은 쉽게 말해 각 비즈니스가 요구하는 바를 소프트웨어로 해결하기 위한 단위를 말한다. 사업 분야에 따라 커머스, 금융, 보안, 플랫폼, 통신 등이 있다. 이에 따라 커머스 개발자, 플랫폼 개발자 등으로 일컫는다. 책에서는 온라인 서점인 커머스 도메인을 예시로 든다. 커머스 도메인의 예를 들어 다시 상품, 회원, 결제, 물류, 클레임, 정산 마케팅 등의 하위 도메인으로 나눌 수 있다. 하위 도메인에 따라 영업, 마케팅, MD, 디자인, 기획, 경영지원 등의 전문가들의 비즈니스적 요구사항을 소프트웨어적으로 풀어나가는 것이 개발자의 역할이다.

하위 도메인은 다시 상태 다이어그램으로 분해 할 수 있다. 가령 주문 프로세스의 경우 장바구니, 결제, 출고지시, 배송, 구매확정 같은 순서도를 가질 수 있다. 이 작은 모델들을 묶어 애그리거트(집합)으로 칭한다. 애그리거트는 도메인 하나를 표현하기 때문에 객체의 영속성을 처리하는 리포지터리는 애그리거트 단위로 존재한다.

4장 리포지터리와 모델 구현, 5장 스프링 데이터 JPA를 이용한 조회 기능, 6장 응용 서비스와 표현 영역에서는 Spring과 Spring Data JPA를 이용해서 구현할 시 조심해야 하는 부분과 애그리거트를 확장하는 부분에 대해서 예시를 들어 설명한다. UUID 사용, N+1 이슈, 1-N 관계, Lazy Loading, Validation 전략, 응용 서비스에서 의존관계 해소 방법 등 여러 노하우들을 소개한다. 이렇게 세 파트가 이 책의 핵심인듯 하다. 특히 JPA를 다루는데 있어 많은 내용이 나오니 JPA가 어떻게 사용되는지 정도는 알고 보는게 좋을 것 같다.

11장은 CQRS로 조회/명령 모델의 분리에 대한 설명을 담고 있다. 모델이 분리되니 구현역시 분리할 수 있다는 이야기다. 주문, 배송지변경, 회원수정 같은 명령 모델엔 JPA같은 ORM을, 성능이 중요한 각종 조회 모델은 MyBatis, JDBCTemplate같은 Mapper를 이용 할 수 있다.

더불어 책에 나오는 예제들은 모두 GitHub에 공개되어 있으니 전체 코드를 볼 수 있다.

이 책을 추천하는 이유

이 책을 한번 보면 좋을 것 같은 사람들

  • MyBatis, JDBC와 RDB를 이용해 서비스를 구현 해 본 사람들
  • (ORM을 아는 상태에서) 어플리케이션 설계에 대한 입문이 필요한 사람들
  • Java와 Spring 으로 웹 개발을 하는 사람들

아직은 읽을 대상이 아닌 것 같은 사람들

  • JPA를 들어본 적 없는 사람들
  • JPA 필패론자
  • JPA 만능론자

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

✳︎ 스프링5 프로그래밍 입문 (최범균, 가메출판사)