본문 바로가기
후기/책

[책 후기] 도메인 주도 개발 시작하기

by 신재권 2023. 3. 17.

https://product.kyobobook.co.kr/detail/S000001810495

 

도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지 | 최범균 - 교보문고

도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지 | 가장 쉽게 배우는 도메인 주도 설계 입문서!이 책은 도메인 주도 설계(DDD)를 처음 배우는 개발자를 위한 책이다. 실제 업무에 DDD를

product.kyobobook.co.kr

책에 나와있는 대상 독자

이 책은 DDD를 처음 접하는 개발자를 위한 책으로 DDD 입문자를 대상으로 한다.

DDD 고수가 되는 법을 알려주는 책은 아니다.

이미 DDD 기초를 마스터했다면 다른 책을 통해 DDD의 심오함을 느끼길 바란다.

아직 DDD에 대해 잘 모르지만 관심이 있다면 이 책을 통해 DDD에 대한 호기심을 채울 수 있을 것이다.

 

요약

1장 : 도메인 모델에서 중점이 되는 엔티티와 밸류를 간단하게 설명해주고, 애플리케이션 아키텍처와, 요구사항을 도출 후 설계 방식을 간단하게 알려준다.

2장 : 아키텍처의 4개 요소(표현, 응용, 도메인, 레포지터리)에 대해 설명해주고, DIP가 왜 필요한지, 언제 적용해야 되는지 알려준다.

3장 : 애그리거트에 관해 알려준다. 또한 JPA를 사용할때의 연관관계 처리를 엔티티간 ID 참조 방식으로 연결하는 법과 장점, 단점을 알려준다.

4장 : spring data jpa를 사용해 Order 애그리거트를 구현한다. 

5장 : spring data jpa를 사용한 조회 기능을 소개해준다. CQRS 를 간단히 소개해준다. 저자님의 유튜브도 있다.

https://www.youtube.com/watch?v=xf0kXMTFJm8 

6장 : 표현 영역(컨트롤러)와 서비스 영역의 역할을 알려준다.

7장 : 도메인 서비스가 뭔지 언제 사용해야 하는지 알려준다.

8장 : 트랜잭션의 잠금에 대해 알려준다. DDD는 트랜잭션이 정말 중요한 것 같다.

9장 : 바운디드 컨텍스트에 대해 알려준다.

10장 : 이벤트에 대해 알려준다. 정확한 구현은 하지 않고 대략적인 설명만 해준다.

11장 : CQRS에 대해 알려준다. 위의 유튜브 링크랑 내용이 비슷하다.

 

책 후기

도메인 주도 개발을 듣기만 하고 해보진 않았을 때 입문책으로 정말 좋은 책이다.

도메인 주도 개발 뿐 아니라, 아키텍처 부분에 대해서도 잘 설명해준다.

대부분 스프링 프로젝트를 시작할 때 레이어드 아키텍처로 시작한다.

도메인보다 서비스에서 많이 도메인 로직을 해결할 것이다.

몇개의 프로젝트를 경험한 상태에서 보면 정말 효율이 좋을꺼 같은 책이다.

 

과거 프로젝트를 진행하며 응용 서비스의 크기가 가장 고민이였다.

그 고민을 이유를 들어주며 어떤 것을 선택해야하는지 알려주어서, 내 고민을 해결해줬다.

또한 CQRS 쪽을 보며, 이벤트를 사용하는 것에도 관심이 생겼다.

CQRS의 단점은 구현해야할 코드가 많고, 구현 기술이 더 많이 필요하다고 나와있다.

대용량 서비스를 제공하는 곳에서는 단점을 극복하면 정말 좋을 것 같다 생각된다. 내가 구현하기에는 이벤트 쪽이 가장 걸린다. 간단한 예제를 만들며 연습할 것이다.

예제 소스는 있으나 모든 기능이 구현되어 있지 않다. 이 책의 범위에서 벗어나는 부분이라 없는 것 같다.

 

일단 책을 몇번 더 보면서 도메인 주도 개발에 익숙해져야 할꺼같다.

근데 이미 프로젝트를 진행하며, 도메인 영역에서 도메인 로직을 많이 구현했었다. 나도 모르게 JPA를 사용하면서 그렇게 된거 같다.

코드 짜는 것보다 엔티티, 밸류를 나누는게 정말 어렵다.

 

현재 책을 읽으며 과거 프로젝트 리팩토링 중이다.

처음 클론코딩으로 시작한 프로젝트라 정말 코드가 더럽다.

setter 남발, 응용 서비스 영역에서 대부분의 것을 해결, entity 그대로 반환 해 클라이언트에 노출 등 코드에 정말 문제가 많다.