현 시대는 회사 업무를 할 때 노트북, 컴퓨터, 모바일 기기(휴대폰, 갤럭시 탭, 아이패드)등을 사용하여 보다 편리한 생활을 하고 있습니다. 그에 따라 업무가 시스템적으로 발전하면서 업무를 진행할 때 필요한 기능들의 구조와 그러한 기능들을 담당하는 부서들간의 협업이 매우 중요하게 되었습니다. 시스템상에서 이러한 것을 도메인이라고 합니다.
도메인이란 정확히는 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력할 수 있도록 문자(영문, 한글 등)로 만든 인터넷 주소를 말하며 인터넷을 이루는 각 구조들을 의미하기도 합니다.
제가 이 책을 선택한 이유는 이 책이 DDD(Domain-Driven-Design) 입문자들을 대상으로 제작된 책이여서 DDD를 처음 접하는 개발자들을 학습하기 쉬운 내용으로 구성된 책이기 때문입니다.
이 책의 특성은 책 내용이 현재까지도 많은 개발자들에게 생소한 DDD(Domain-Driven-Design)와 도메인 모델 구현라는 분야를 처음 입문하는 사람도 쉽게 학습할 수 있게 내용을 구성하였다는 점입니다. 그래서 어느정도 연차가 있는 개발자들은 물론 신입 개발자들이 처음 개발업무를 접할 때 보다 쉽게 개발을 할 수 있도록 많은 도움이 될것이라고 생각합니다.
구성
Chapter 1: 도메인 모델 시작하기
Chapter 2: 아키텍처 개요
Chapter 3: 애그리거트
Chapter 4: 리포지터리와 모델 구현
Chapter 5: 스프링 데이터 JPA를 이용한 조회 기능
Chapter 6: 응용 서비스와 표현 영역
Chapter 7: 도메인 서비스
Chapter 8: 애그리거트 트랜잭션 관리
Chapter 9: 도메인 모델과 바운디드 컨텍스트
Chapter 10: 이벤트
Chapter 11: CQRS
파트별로 나누어 봤을때 1, 2장은 도메인 모델을 구현할 때 알아야 할 기본적인 내용을 다루고 있으며, 1장에서는 도메인 모델이 무엇인지 알아보고 Entity와 Value에 대해, 2장에서는 상위 수준에서 아키텍처의 네 영역과 DIP패턴을 설명하고 도메인 영역의 구성 요소에 대해 설명하고 있고, 3, 4, 5장은 애그리거트와 리포지터리에 대해 설명하고 있으며, 3장에서는 애그리거트가 무엇이고 구현을 어떻게 하는지에 대해, 4장에서는 애그리거트의 논리적인 저장소인 리포지터리를 구현하는 방법에 대해, 5장에서는 검색 조건을 위한 스펙, 정렬, 페이징 등 조회 기능을 구현하는 방법에 대해 설명하고 있고, 6장은 응용 서비스가 어떻게 도메인 모델을 사용하고 어떤 역할을 수행하는지 알아보고, 표현 영역과 응용 서비스의 연동에 대해 설명하고 있습니다. 7장에서는 도메인 영역의 구성요소 중 하나인 도메인 서비스가 필요한 이유와 구현에 대해 설명하고 있고, 8장에서는 애그리거트의 트랜잭션 범위에 대해, 9장은 바운디드 컨텍스트에 대해, 10장은 도메인 이벤트를 이용해서 시스템의 결합도를 낮추고 기능을 확장하는 방법에 대해, 11장은 CQRS에 대해 설명하고 있습니다.
개인적인 생각으로 학습은 서버 운영 담당자나 서버 관련 프로그램 개발자로 취업을 희망하시거나 이제 막 개발자로 시작한 초보자이신 분들께서는 JAVA 언어 관련 입문서를 먼저 학습하시고 난 뒤 1장부터 시작하시면 좋을 것 같고 어느정도 경험이 있으신 분들(2년차~)부터는 1장까지는 쭉 보시면서 도메인의 개념과 도메인 모델, Entity, Value에 대해 숙지한다는 방식으로 보시고 2장부터 학습하시는 것이 좋을것 같습니다.
개인적으로 약간의 단점이 어쩌면 욕심일수도 있는게 좀더 많은 실습 예제 및 비즈니스 케이스가 담겨있으면 더 좋았지 않았을까라는 아쉬움이 있습니다.
저의 리뷰를 읽어주셔서 감사합니다. 다음에는 좀더 유용하고 좋은 책으로 더 나은 리뷰를 통해 여러분께 책을 소개시켜드릴 수 있도록 더 노력하겠습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."