[서적] 도메인 주도 개발 시작하기

‘도메인 주도 개발’이라는 용어에 흥미가 생겨서 이 책을 읽어보았다.
도메인 패턴을 중심에 놓고 설계하는 방식은 당연한 것 같으면서도 막상 그 실천이 쉽지만은 않다고 생각해왔고, 그렇기에 DDD에 대해 자세히 다루는 이 책은 인상깊게 다가왔다.
그동안 다뤄본 적 없는 영역이기에 목차가 자세하게 나눠진 부분이 큰 도움이 되었다.
또한 이러한 목차는 아래의 이미지처럼 책날개에서도 간략하게 요약된 형태로 바로 확인할 수 있어서 좋았다.

책을 모두 읽은 후, 정리해 본 각 장의 내용은 아래와 같다.

Chapter 1. 도메인 모델 시작하기

  • 도메인 모델이 뭘까?
  • 도메인 모델에서 사용하는 엔티티와 밸류, 유비쿼터스 언어는 뭘까?

Chapter 2. 아키텍처 개요

  • 어떠한 영역들로 구성된 아키텍처를 구성해야할까?
  • 도메인 영역을 구성하는 요소들은 무엇이 있을까?

Chapter 3. 애그리거트

  • 애그리거트는 복잡한 도메인 모델을 관리 가능한 단위로 묶어주기 위해 사용한다. 이것을 어떻게 구현할까?

Chapter 4. 리포지터리와 모델 구현

  • 리포지터리는 애그리거트의 저장소이다. 이것을 어떻게 구현할까?

Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능

  • 주문 취소나 상품 상세 보기 등의 조회 기능을 구현해보자.

Chapter 6. 응용 서비스와 표현 영역

  • 도메인 영역을 사용자와 연결하는 응용서비스와 표현 영역에 대해 설계하자.

Chpater 7. 도메인 서비스

  • 도메인 서비스는 어떠한 경우에 어떻게 사용할까?

Chapter 8. 애그리거트 트랜잭션 관리

  • 트랜잭션 충돌 문제를 방지하기 위한 방법들을 알아보자.

Chapter 9. 도메인 모델과 바운디드 컨텍스트

  • 서로 다른 도메인끼리 영역이 맞닿아 있는 컨텍스트를 바운디드 컨텍스트라고 한다. 이것을 어떻게 구현하고 유지할까?

Chapter 10. 이벤트

  • 이벤트 드리븐으로 동작들이 발생한다. 이 이벤트를 어떻게 처리해야할지 알아보자.

Chapter 11. CQRS

  • 도메인이 복잡해질수록 각 모델에 맞는 구현기술을 선택하여 구현하는 것이 중요하다. 이러한 것을 의미하는 CQRS의 장단점은 무엇이 있을까?

도메인주도개발에서만 사용하는 용어가 있고, 그 용어를 알아야 진행이 가능하기에 위 목차를 보면 그러한 용어들에 대해 자세히 다루고 있다는 것을 알아차릴 수 있을 것이다.
이 책이 목표로 하는 독자가 그동안 DDD를 다뤄보지 않은 사람인만큼, 정말 자세하게 용어의 정의 및 사용에 대해 알려준다.
각 챕터에서도 자세히 알 수 있지만, 아래 이미지처럼 실제적인 예시(온라인서점)를 통해 간략하게 정리할 수 있어서 좋았다.

자세한 용어 사용 외에도 인상 깊었던 점은 아래와 같다.

  • 자세한 NOTE기능

    • NOTE를 통해 유용한 팁, 참고사항들을 많이 알 수 있었다.
      아래의 이미지처럼 삭제 요청이 있을 때에도 바로 그 데이터를 삭제하는 것보다는 실무에서는 삭제 플래그를 사용한다는 정보를 얻게 되어 흥미로웠다. 꿀팁인데 기능 구현 설명과는 연관이 없을 수도 있기에 코드 구현부분에는 나오지 않는 내용!
  • 실질적인 예시를 통해 이해를 돕는다.

    • 한 가지의 기능을 구현할 때, 그 기능과 연결되어 있는 경우의 수를 생각하는 것이 중요하다.
      그렇지 않으면 경우의 수를 보완하기 위해 코드를 짜는 사람조차 구분하기 어려운 조건문들이 나열될 수도 있고, 처음부터 다시 코드를 작성해야할 수도 있기 때문이다.
    • 이 책에서는 아래의 이미지와 같이 자세한 예시를 통해 어떠한 상황에는 어떠한 것을 고려해야하는지에 대해 자세히 알려주고 있어 좋았다.
  • 단일 기능의 구현 뿐만이 아닌 DDD 전체를 조망할 수 있는 시야를 배울 수 있다.

    • 온라인서점의 예시를 통해 각 모델의 세부적인 사항을 알려준다. 그 기능이 어떠한 모델에 포함되어 있고, 어떠한 트랜잭션이 이루어져야하는지에 대해 코드로 자세히 구현한다. 기능 구현을 소분류라고 표현한다면, 소분류에 대해 다루는 동시에 그 소분류가 어느 중분류에 엮여 있고, 이러한 중분류는 어느 대분류에 엮여 있는지를 책 곳곳에서 이미지를 통해 보여준다.
    • 그래서 특정 기능에만 얽매여 있지 않고, 도메인 주도 개발 전체를 훑어볼 수 있는 시야를 가질 수 있도록 도와주는 점에서 인상깊었다.

도메인 주도 개발에 대해 다뤄본 적이 없음에도 이 책을 통해 다양한 용어에 익숙해질 수 있었다.
특히 스프링 부트를 사용한다면 책 내부의 코드를 이용해 특정 기능을 무척 수월하게 구현할 수 있으리라고 예상된다.
도메인 주도 설계와 개발에 흥미가 있고, 어디서부터 시작해야할지 모르겠다면 이 책을 강력하게 추천한다.

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


Written by
Sunmin
어제보다 나은 오늘을 만들기 위해 배우고, 기록하고, 회고합니다. Maker. Reader. Realistic optimist.