이 책의 독자는 DDD의 입문자를 위한 책입니다. 이 책은 Java, Spring 그리고 JPA코드로 주로 설명이 되어 있어서 해당 기술들을 조금 알고 있으면 도움이 될 것 같습니다. (객체 지향의 다형성, 상속, 캡슐화, DIP 개념도 알고 있으면 좋을 것 같습니다.)
사실 이 책이 재출간되기 전 DDD start!란책을 갖고는 있었지만 읽지는 못한 상태였습니다. 이 책을 재출간된다는 소식을 알고는 있었는데 4월 도서 리뷰 리스트에 이 책이 있는 걸 보자마자 주저 없이 바로 선택했습니다. 요즘 하고 있는 우아한테크코스 pro 프리코스에서도 도메인 단위로 기능 명세를 만들고 그 순서대로 테스트, 구현을 매우 중요하게 요구하고 있었는데, 그런 점으로 보아 도메인의 중요성은 크구나 느꼈습니다.
사실 DDD는 예전에 MSA 스터디할 때 조금 공부해본 것 말고는 잘 모르지만 이 책을 읽으면서 그때 공부했던 기억을 리마인드 할 수 있었던 게 개인적으로 좋았습니다. "마이크로 서비스 아키텍처는 도메인 중심으로 서비스를 모델링하는 것이 중요하다."라고 공부했던 게 기억이 나는데 서비스가 충분히 커서 MSA로 갈 때 그만큼 중요한 것이 도메인이라는 것이 다시 한번 생각났습니다. 개인적으로는 리뷰하기 어려운 상급(?) 난이도의 책인 거 같은데... 생각보다 두께가 두껍고 기술적인 내용이 거의 다여서 그냥 중요하다고 생각되는 일부분만 정리하고 마무리하려고 합니다.
내용 정리
도메인이란 소프트웨어로 해결하고자 하는 문제 영역입니다. 도메인은 여러 하위 도메인으로 구성되면 도메인끼리 연동하여 기능을 제공합니다. DDD 하면 떠오르는 것 중에 하나가 각각 Layer별 특징이 있는데 아래와 같습니다.
사용자 인터페이스 계층 : 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 여기서 사용자는 소프트웨어를 사용하는 사람뿐만 아니라 외부 시스템일 수 도 있다.
응용 계층 : 사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다.
도메인 계층 : 시스템이 제공할 도메인 규칙을 구현한다.
인프라스트럭쳐 계층 : 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다.
위 DDD에서 네 영역 중 가장 핵심은 아무래도 도메인 계층입니다. 도메인 계층의 주요 구성요소는 아래와 같습니다.
엔티티(Entity) : 고유의 식별자를 갖는 객체로 자신의 라이프 사이클을 갖는다.
밸류(Value) : 고유의 식별자를 갖지 않는 객체로 주로 개념적으로 하나인 값을 표현할 때 사용된다.
애그리거트(Aggregate) : 애그리거트는 연관된 엔티티와 밸류 객체를 개념적으로 묶은 것이다.
리포지토리(Repository) : 도메인 모델의 영속성을 처리한다. 예를 들어 DBMS 테이블에서 엔티티 객체를 로딩하거나 저장하는 기능을 제공한다.
도메인 서비스(Domain Service) : 특정 엔티티에 속하지 않는 도메인 로직을 제공한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'서평 > 한빛미디어, 나는리뷰어다 2022' 카테고리의 다른 글
[서평] 소플의 처음 만난 리액트 (0) | 2022.06.27 |
---|---|
[서평] 김상형의 SQL 정복 (0) | 2022.05.29 |
[서평] GraphQL 인 액션 (0) | 2022.02.14 |