-
-
도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지
최범균 지음 / 한빛미디어 / 2022년 3월
평점 :
도메인 주도 개발 시작하기
백엔드 개발을 하다 보면 서비스가 확장될 때마다 레거시 코드의 수정이 필요한지 안 하는지 고민하게 됩니다.
옛말에도 ‘바퀴를 다시 발명하지 말라는 말’처럼 이미 만들어져 잘 되는 것을 처음부터 다시 만들 필요는 없다는 것이죠.
하지만 도메인이 전반적으로 달라지면 코드 크게 고쳐야 하므로 MSA형식으로 분할해서 개발하는 것이 더 편하다는 생각이 듭니다.
그럼 이러한 상황이 덜 오게 하려면 어떻게 해야 할까요? 제일 중요한 것은 서비스 로직의 변화를 예상하는 것입니다.
예를 들어 결제 시스템이 있습니다. 10년 전만 해도 카드 및 계좌이체만 생각했을 시스템이 지금은 각종 페이부터 간편 시스템들이 즐비한 시대가 됐습니다.
결제 시스템이 늘어날 때마다 코드 전반을 고치는 것보다 확장성이 좋게끔 변화의 여지를 주는 개발이 필요합니다.
이때 필요한 것은 바로 도메인 주도 개발입니다.
에릭 에반스가 직접 만든 시스템 설계 방법인데요. 일명 DDD라고도 불립니다.
10년 전에 나온 책(도메인 주도 설계)이 원서를 번역한 책이며 글 위주의 책이라 실무가 적은 개발자들이 보면 이해하기가 쉽지 않습니다.
이 책을 이해를 돕기 위한 책이 나왔습니다.
바로 ‘도메인 주도 개발 시작하기’입니다.

1) 애그리거트
복잡한 도메인 모델을 관리할 수 있는 단위로 묶는 것을 에그리거트라 말합니다.
애그리거트간 집합 연관을 살펴보기 위한 예시를 들어보겠습니다.
카테고리와 상품 간의 연관이 대표적입니다.
카테고리는 한 개이지만 카테고리에 속한 상품은 여러 개가 될 수 있습니다.
1-N 연관도 있지만 상품의 경우 여러 카테고리에 속할 수 있다 볼 수 있는데요.
그런 경우에는 M-N 연관도 요구사항을 고려하여 구현에 포함해야 합니다.

2) 도메인 서비스
도메인 서비스에 대해 알아보겠습니다.
도메인 서비스는 도메인 로직을 표현할 때 사용합니다.
도메인 로직을 사용하는 예를 몇 가지 알아보겠습니다.
먼저 계산 로직인데요.
간단한 계산은 한 애그리거트에 넣을 수 있습니다.
하지만 복잡한 계산 로직의 경우 여러 애그리거트에 로직을 넣어야 합니다.
외부 시스템의 경우 구현할 때 타 시스템을 사용해야 할 때가 있습니다.
다음 상황은 외부 시스템을 도메인 로직에 연동해야 합니다.

PS
도메인 주도 개발을 알고자 하는 자바 서버 개발자에게는 큰 도움이 되는 책인데요.
관련된 예제 소스도 실행이 잘되며 설명도 쉽게 되어 있어서 에릭 에반스의 책을 읽기 전에 이 책으로 개념을 잡고 넘어가면 좀 더 쉽게 잘 읽힐 것입니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."