책너두 (도메인 주도 설계로 시작하는 마이크로서비스 개발) 39일차 (~333p)

요약

  • 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 내부 영역 - 도메인 모델 개발

  1. 도서 카탈로그 엔티티 클래스
    • 이 클래스는 도서 정보를 보관하며, 주요 필드로는 도서명, 설명, 저자, 출간일, 도서 분류, 대출 가능 여부, 대출 횟수, 도서 일련번호 등이 있음.
    • MongoDB를 사용하는 이 클래스는 @Document라는 애너테이션을 사용함.
  2. 비즈니스 로직
    • 도서 카탈로그 엔티티 클래스에는 신규 도서 카탈로그 생성, 도서 카탈로그 정보 수정, 도서 카탈로그 대출 상태 수정에 대한 비즈니스 로직이 구현되어 있음.
      • registerNewBookCatalog
      • rentBook
      • returnBook
      • updateBookCatalogInfo
  • 도서 카탈로그 마이크로서비스가 읽기 전용 서비스임.
    • API로 생성, 변경, 삭제 기능은 제공하지 않지만, 다른 서비스의 비동기 메시지 요청에 따라 데이터 일관성을 맞추는 생성, 변경 기능을 제공함.
    • 이 기능들은 컨슈머 어댑터에 의해 호출됨.

댓글

Designed by JB FACTORY