요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 마이크로서비스 개발 (나머지 부분) 도메인 모델링 입고 도서 등록과 재고 도서 등록에 대한 유스케이스 흐름 내부 영역 - 도메인 모델 개발 메모 8.1.4 도메인 모델링 도서 서비스의 도메인 모델은 재고 도서(Stock Book)와 입고 도서(In-stock Book) 두 가지 엔티티로 구성됨. 도서제공업체로부터 도서가 입고되면 입고 도서 객체가 생성됨. 이렇게 입고된 도서는 특정 유형으로 분류되고, 도서관에 지정된 후, 대출 가능한 재고 도서로 등록됨. 재고 도서는 대출 가능 여부를 나타내는 도서 상태를 가지고 있음. 도서가 대출되면 '대출 불가' 상태가 되고, 반납되면 '대출 가능' 상태로 변경됨. 두 엔티티 각각은 애그리거트 루트의..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 사용자 마이크로서비스 - 포인트 관리 기능 구현 (나머지 부분) 포인트 적립, 결제 기능에 대한 호출 구현 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 마이크로서비스 개발 구현 기능 소개 내부 아키텍처 결정 API 설계 메모 7.3.3 포인트 적립, 결제 기능에 대한 호출 구현 포인트 적립은 대출 마이크로서비스가 사용자 마이크로서비스에 메시지를 보내면 이루어짐. 이를 위해 사용자 마이크로서비스는 컨슈머 어댑터 GatewayConsumer를 통해 포인트 적립 이벤트 메시지에 반응함. 컨슈머 어댑터는 대출 서비스가 전송한 SavePointEvent 적립 이벤트를 수신하여 userService.savePoint를 호출하고, 사용..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 사용자 마이크로서비스 개발 (나머지 부분) 외부 영역 - REST 컨트롤러 개발 외부 영역 - 아웃바운드 어댑터 개발 사용자 마이크로서비스 - 포인트 관리 기능 구현 기본 포인트 부여 기능 구현 포인트 적립/결제 기능 구현 메모 7.2.8 외부 영역 - REST 컨트롤러 개발 두 가지 종류의 컨트롤러가 주로 사용됨 개인정보관리(AccountResource) 컨트롤러 회원 가입, 사용자 개인 정보 수정, 사용자 본인의 비밀번호 찾기 등을 처리함. 관리자용 회원정보관리(UserResource) 컨트롤러 관리자가 사용자 정보를 생성, 수정, 삭제하는 등의 작업을 처리함. UserResource에서는 요청을 받을 때 사용자가 관리자(ADMIN)인지..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 사용자 마이크로서비스 개발 사용자 마이크로서비스의 기능 소개 API 설계 도메인 모델링 유스케이스 흐름 내부 영역 - 도메인 모델 개발 내부 영역 - 서비스 개발 내부 영역 - 리포지토리 개발 메모 7.2 사용자 마이크로서비스 개발 JHipster를 사용하여 게이트웨이 서비스를 생성하면, 사용자 기능이 자동으로 구현됨. JHipster의 게이트웨이는 프런트엔드도 담당하기 때문에 회원가입, 로그인, 회원관리 등 기본적으로 갖추어야 할 사용자 기능을 모두 포함하고 있음. 추가로, 스프링 시큐리티(Spring Security)를 활용한 보안, 권한 관리도 제공하며, 이메일 인증도 제공함. 그러나, 회원 가입 시 사용되는 이메일 인증의 경우 외부 ..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 도서 대출 마이크로서비스 개발 (나머지 부분) 내부 영역 - 도메인 모델 개발: 도서 연체 및 연체된 도서 반납 서비스 흐름 처리 내부 영역 - 도메인 모델 개발: 대출 불가 해제 처리 기능 구현 외부 영역 - REST 컨트롤러 개발 메모 7.1.12 내부 영역 - 도메인 모델 개발: 도서 연체 및 연체된 도서 반납 Rental 엔티티 객체의 책임으로, 세 가지 주요 비즈니스 로직을 처리하는 메서드를 통해 수행됨. overdueBook(연체 처리) 이 메서드는 도서 일련번호로 대출아이템(RentedItem) 객체를 찾아 연체아이템 객체(OverdueItem)를 만들어 Rental에 추가하고, 기존의 대출아이템 객체는 삭제함. returnOv..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 도서 대출 마이크로서비스 개발 (나머지 부분) 외부 영역 - 아웃바운드 어댑터 개발(비동기 호출 EDA 구현) 타 서비스에 대한 비동기 호출 처리: 카프카를 이용한 EDA 구현(Rental과 Book) 대출 서비스에 카프카 Producer 만들기 도메인 이벤트 객체 - StockChanged.java 도서 마이크로서비스에 컨슈머(Consumer) 어댑터 구현하기 메모 7.1.11 외부 영역 - 아웃바운드 어댑터 개발(비동기 호출 EDA 구현) 타 서비스에 대한 비동기 호출 처리: 카프카를 이용한 EDA 구현(Rental과 Book) 대출 마이크로서비스에서 도서가 대출 또는 반납 처리될 때마다, 도서 마이크로서비스는 해당 도서의 상태를 각각 ..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 도서 대출 마이크로서비스 개발 (나머지 부분) 내부 영역 - 리포지토리 개발 외부 영역 - REST 컨트롤러 개발 외부 영역 - 아웃바운드 어댑터 개발(동기 호출) 타 서비스에 대한 동기 호출: 페인 클라이언트 연결 EnableFeignClients 처리 메모 7.1.8 내부 영역 - 리포지토리 개발 RentalRepository는 Spring Data JPA의 Repository 인터페이스를 확장함. 이것은 데이터의 CRUD(Create, Read, Update, Delete) 처리를 담당하며, 이러한 기본 CRUD 메서드 외에도 필요에 따라 추가 메서드를 제공함. 리포지토리 패턴은 도메인 계층과 인프라스트럭처 계층을 분리하여 계층 간의 ..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 도서 대출 마이크로서비스 개발 (나머지 부분) 내부 영역 - 도메인 모델 개발(도서 대출, 반납) 내부 영역 - 서비스 개발 메모 7.1.6 내부 영역 - 도메인 모델 개발(도서 대출, 반납) 도메인 모델의 비즈니스 로직은 도메인 객체에 부여된 책임으로 수행됨. 즉, 도메인 객체는 해당 로직을 수행할 수 있는 책임을 가지게 됨. 개발의 시작점은 Rental 클래스로, Rental 애그리거트의 최상위 엔티티에 해당함. 이 클래스는 다양한 속성을 가지고 있으며, 이러한 속성들은 사용자 ID, 대출 가능 상태, 연체료, 대출 아이템, 연체 아이템, 반납 아이템 등을 포함함. 사용자 일련번호(userId)는 사용자마다 유일하게 생성되는 고유 번호로..
요약 7장. 사례연구 - 백엔드 마이크로서비스 구현에 대한 내용 도서 대출 마이크로서비스 개발 구현 기능 소개 도서 대출 도서 반납 도서 연체 연체 해제 내부 아키텍처 결정 API 설계 도메인 모델링 유스케이스 흐름 메모 7장. 사례 연구 - 백엔드 마이크로서비스 구현 이번 장은 세부 구현 코드보다는 도메인 모델링을 수행하고 마이크로서비스의 내부 구조를 정의하는 데 초점을 두고 진행함. 앞에서 구성한 내부 아키텍처를 기반으로 다음과 같은 순서로 진행함. 구현 기능 소개 내부 아키텍처 결정사항 API 설계 도메인 모델링 유스케이스 흐름 내부 영역 개발 외부 영역 개발 단위 테스트 수행 7.1 도서 대출 마이크로서비스 개발 7.1.1 구현 기능 소개 이 마이크로서비스는 도서 대출, 도서 반납, 도서 연체, ..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 JHipster를 활용한 아키텍처 구성 백엔드 서비스의 프로젝트 구조 리팩터링 DTO, 매퍼, 카프카, 페인의 위치 DTO, 매퍼를 사용하는 방식 정리 메모 6.5.3 백엔드 서비스의 프로젝트 구조 리팩터링 DTO, 매퍼, 카프카, 페인의 위치 기본적으로 JHipster는 DTO(Data Transfer Object), 매퍼, 카프카, 페인 등이 포함된 패키지 구조를 자동으로 생성함. 이러한 구성요소들은 외부 서비스와의 통신에 주로 사용되며, JHipster에서는 DTO와 매퍼를 service 패키지에, 카프카를 web.rest 패키지에 위치시킴. 그러나 헥사고날 아키텍처를 적용하려면, 이들 구성요소들의 위치가 바뀌어..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 JHipster를 활용한 아키텍처 구성 마이크로서비스 빠르게 만들어 보기 (나머지 부분) 백엔드 서비스에 엔티티 만들기 추가한 엔티티를 게이트웨이에 등록 재실행 후 테스트 메모 백엔드 서비스에 엔티티 만들기 백엔드 서비스가 기능을 제공하려면, 각 서비스 내부에서 기능을 제공할 객체 모델이 필요함. 즉, 내부 아키텍처에 맞게 비즈니스를 표현할 도메인 모델과 서비스 구현체, 리포지토리, 그리고 외부 영역의 REST 컨트롤러 등을 생성해야 함. JHipster는 도메인의 기본 유형인 엔티티를 정의하면 나머지 요소를 자동으로 생성하고, 프런트엔드 서비스까지 연결해 주는 편리한 기능을 제공함. 엔티티 생성 방법은 주로 두 가지..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 JHipster를 활용한 아키텍처 구성 마이크로서비스 빠르게 만들어 보기 서비스 만들기 도서 서비스 생성 도서 카탈로그 서비스 대출 서비스 백엔드 마이크로서비스 실행 메모 6.5.2 마이크로서비스 빠르게 만들어 보기 도서대출시스템의 주요 기능 구현을 위한 도서, 도서 카탈로그, 대출 백엔드 서비스를 JHipster CLI를 통해 만들어 봄. 서비스 만들기 도서대출시스템의 주요 서비스인 도서(book), 도서 카탈로그(bookCatalog), 대출(rental) 서비스를 생성하는 방법에 각 서비스를 만드는 방식은 동일하지만, 포트와 패키지명은 각각 다르게 설정해야 함. 도서(book) 서비스: 포트는 8081, 패키지명..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.