요약
- 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발
- 도서 카탈로그 마이크로서비스
- 기능 소개
- 내부 아키텍처 결정
- API 설계
- 도메인 모델링
- 내부 영역 - 도메인 모델 개발
메모
8.2 도서 카탈로그 마이크로서비스
- 도서 카탈로그는 온전히 도서 목록 조회와 검색을 위한 읽기 전용 마이크로서비스임.
- 이 서비스는 도서 마이크로서비스와 함께 CQRS(Command Query Responsibility Segregation) 패턴을 적용하였으며, 저장소로는 조회와 검색 속도가 빠른 NoSQL 중 하나인 MongoDB를 사용함.
- 도서 카탈로그 마이크로서비스의 기본 기능 외에도, 도서 마이크로서비스에서 발행한 도서변경됨(BookChanged) 이벤트 메시지를 수신하고 도서 카탈로그의 저장소를 동기화하는 과정에 대해 살펴봄
8.2.1 기능 소개
- 도서 검색 기능과 인기도서 목록 조회(TOP10) 기능을 제공함.
8.2.2 내부 아키텍처 결정
- 관계형 데이터베이스 대신에 NoSQL 중 하나인 MongoDB를 사용함.
8.2.3 API 설계
- 인기도서 목록 조회 API
- 이 API는 도서 대출시스템에서 대출 횟수가 상위 1~10위인 도서 목록을 조회할 때 사용.
- 주로 도서 대출시스템의 메인 홈에서 사용자에게 최근 인기도서 목록을 보여줄 때 호출되며, 대출 횟수가 많은 순으로 상위 10권의 도서 목록을 조회함.
- 도서 목록 검색 API
- 사용자가 도서 이름으로 도서를 검색하는 경우에 사용.
8.2.4 도메인 모델링
- 도서 카탈로그 마이크로서비스의 도메인 모델은 오직 한 개의 엔티티 클래스로 이루어져 있음.
- 도서 카탈로그 엔티티는 사용자가 도서를 조회하거나 검색할 때 필요한 정보만을 포함하고 있음.
- 이 정보에는 도서명, 설명, 저자, 출간일, 도서 분류, 대출 여부, 대출 횟수가 포함됨.
8.2.5 내부 영역 - 도메인 모델 개발
- 도서 카탈로그 엔티티 클래스
- 이 클래스는 도서 정보를 보관하며, 주요 필드로는 도서명, 설명, 저자, 출간일, 도서 분류, 대출 가능 여부, 대출 횟수, 도서 일련번호 등이 있음.
- MongoDB를 사용하는 이 클래스는 @Document라는 애너테이션을 사용함.
- 비즈니스 로직
- 도서 카탈로그 엔티티 클래스에는 신규 도서 카탈로그 생성, 도서 카탈로그 정보 수정, 도서 카탈로그 대출 상태 수정에 대한 비즈니스 로직이 구현되어 있음.
- registerNewBookCatalog
- rentBook
- returnBook
- updateBookCatalogInfo
- 도서 카탈로그 마이크로서비스가 읽기 전용 서비스임.
- API로 생성, 변경, 삭제 기능은 제공하지 않지만, 다른 서비스의 비동기 메시지 요청에 따라 데이터 일관성을 맞추는 생성, 변경 기능을 제공함.
- 이 기능들은 컨슈머 어댑터에 의해 호출됨.
댓글