-
DDD START!후기/Book Review 2020. 4. 28. 23:27728x90반응형
회사 도서관에서 빌린 책. 코로나로 재택근무 중이지만 겸사겸사 회사 가서 받아왔다. 많이들 빌려 보았는지 책의 상태가 그리 양호하진 않았다. 그래서 빨리 읽어버리고 반납할 예정이다.
목차
- CHAPTER 1 도메인 모델 시작
- CHAPTER 2 아키텍처 개요
- CHAPTER 3 애그리거트
- CHAPTER 4 리포지터리와 모델구현(JPA 중심)
- CHAPTER 5 리포지터리의 조회 기능(JPA 중심)
- CHAPTER 6 응용 서비스와 표현 영역
- CHAPTER 7 도메인 서비스
- CHAPTER 8 애그리거트 트랜잭션 관리
- CHAPTER 9 도메인 모델과 BOUNDED CONTEXT
- CHAPTER 10 이벤트
- CHAPTER 11 CQRS
DDD에 대해 입문하고자 "도메인 주도 설계 핵심"이라는 책을 읽었었다. 후기에 "그냥 DDD START를 읽을까"라고 써놨는데 3년 만에 미션을 달성하였다. 그때 DDD가 뭔지 대충 맛만 보았고, 실무에서 일하면서 DDD 스타일의 코드나 패키지 구조를 만나게 되었고 DDD스럽게 코드를 짜고자 노력하고 있다. 그래서 조금 더 DDD가 뭔지 알기 쉽게 다가가기 위해 선택했다. 창시자인 에릭 에반스의 책은 언젠가 읽기로 하자.
DDD는 Domain Driven Design의 약자로서, 도메인 기반으로 프로그램을 설계하는 기법이다. TDD나 OOP와 상반되는 개념은 아니고 같이 어울려서 사용될 수 있다. Presentation, Application, Domain, Infrastructure의 계층을 나누어서 깨끗하게 개발하는 것이 핵심이다. 주요 로직들은 Domain 패키지에 있는 클래스들이 담당한다. 구체적인 DB 접근이나 외부 API 호출 등을 하는 클래스들은 Infrastructure 패키지에 몰아넣는다. 아래 사진을 보면 이해가 쉽다(Presentation 계층은 생략되어 있지만 보통들 아는 그 계층이 맞다). 한 가지 생소한 부분은 아무리 interface라고 하지만 Repository를 domain 패키지에 넣고, 실제 구현체를 infrastructure 패키지에 넣는 점이었다. 서로 다른 패키지에 있는 것을 구현(혹은 상속)하는 것이 새롭게 다가왔다. 이렇게 나눈 이유는 타당하긴 하다. 고수준의 것이 저수준의 것에 의존하지 않기 위함이다. 이렇게 분리해두면 domain 내의 객체들끼리만 소통을 하면 되고, 인프라와 관련된 구체적인 부분이 바뀌더라도 infrastructure 쪽만 손보면 된다. 깔끔하게 계층이 구분이 되는 장점이 있다.
DDD의 개념이나 설명을 쉬운 설명으로 얻고자 했는데 그런 이론적인 내용보다는 구체적인 코드들의 비중이 높아서 살짝 아쉬웠다. JPA를 활용한 구현이나 Event 관련 구현 코드 같은 예시 코드가 많았다. JPA가 옛날 방식이라(책이 16년도에 나온 것을 감안해야 한다) 딱히 도움은 안돼서 대충 넘어가기도 했다. 코드 예시를 좋아하는 사람이라면 도움이 될 것 같다.
유튜브에 저자 강의가 있는 사실을 좀 전에 알아서 아직 보지는 못했다. 길지 않아 보이니 한 번 쭉 보면 좋을 것 같다. 부담스럽지 않은 책의 두께와 페이지(약 300페이지) 폰트 사이즈, 여백 등이 맘에 들었다. 다만 회사 도서관에서 빌린 책이라 상태가 안 좋아서 책 소독기에 넣고 싶은 생각이 종종 들었다.
조금 더 DDD에 한 발 다가간 느낌이다. 실무에서 좀 더 DDD스럽게 일을 해보자!
유튜브 저자 강의
DDD START! 도메인 주도 설계 구현과 핵심 개념 익히기, 지앤선 (최범균)
반응형'후기 > Book Review' 카테고리의 다른 글
자바와 JUnit을 활용한 실용주의 단위 테스트 (0) 2020.06.14 오브젝트 (0) 2020.05.10 자바 퍼즐러 (0) 2020.04.23 마이크로서비스 패턴 (0) 2020.04.05 클린 코더 (The Clean Coder) (0) 2020.03.08