작성중입니다....
비즈니스 로직 설계
핵심 내용
- 비즈니스 로직 패턴 적용: 트랜잭션 스크립트 패턴, 도메인 모델 패턴
- DDD Aggregate 패턴을 응용한 비즈니스 로직 설계
- 도메인 이벤트 패턴을 마이크로서비스 아키텍처에 적용
비즈니스 로직 구성 패턴
비즈니스 로직 설계: 트랜잭션 스크립트 패턴
- 트랜잭션 스크립트 패턴
- 비즈니스 로직을 요청 타입별로 하나씩 매핑된 절차적 트랜잭션 스크립트 뭉치로 구성
- 단순한 비즈니스 로직에 적합
비즈니스 로직 설계: 도메인 모델 패턴
- 도메인 모델 패턴
- 비즈니스 로직을 상태와 동작을 가진 클래스로 구성된 객체 모델로 구성
- 객체지향적으로 비즈니스 로직 설계
- MSA에서는 OOD도 한계가 있기에 OOD를 개선한 DDD가 필요
도메인 주도 설계 개요
- DDD는 복잡한 비즈니스 로직을 개발하기 위해 OOD를 개선한 접근 방식
- DDD 방식으로 설계하면 각 서비스는 자체 도메인 모델을 가지며, 애플리케이션 전체 도메인 모델의 문제점을 방지 할 수 있음
도메인 모델 설계: DDD Aggregate 패턴
- Aggregate 패턴
- 도메인 모델을 여러 Aggregate로 구성하여 각 Aggregate를 한 단위의 객체망으로 취급
불분명한 경계 문제
- 전통적인 객체 지향 설계에서는 비즈니스 객체들의 경계가 불분명함
Aggregate는 경계가 분명하다
- Aggregate는 한 단위로 취급 가능한 경계 내부의 도메인 객체들
- 도메일 모델을 개별적으로 이해하기 쉬운 덩어리로 분해
- CRUD 등의 작업 범위를 분명하게 설정
- DDD 도메인 설계의 핵심은 Aggregate와 그 경계, 루트를 식별하는 것
Aggregate 규칙
- 규칙1: Aggregate 루트만 참조
- 규칙2: Aggregate 간 참조는 반드시 기본키를 사용
- 규칙3: 하나의 트랜잭션으로 하나의 Aggregate를 생성/수정
Aggregate 입도
- Aggregate는 작으면 작을수록 좋음
- 잘게 나뉘어져 있으면 그만큼 동시 처리 가능한 요청 개수가 늘고 확장성이 좋아짐
비즈니스 로직 설계: Aggregate
- 대부분의 마이크로서비스 비즈니스 로직은 Aggregate로 구성
- 나머지는 비즈니스로직은 도메인 서비스와 사가에 위치
도메인 이벤트 발행
- 도메인 이벤트 패턴
- Aggregate는 뭔가 생성되거나 중요한 변경이 발생했을 때 도메인 이벤트를 발행
- DDD 맥락에서 도메인 이벤트는 Aggregate에 발생한 사건
- Aggregate는 상태가 전이될 떄마다 이에 관련된 컨슈머를 위해 이벤트를 발행
변경 이벤트를 발행하는 이유
- 다른 애플리케이션 또는 같은 애플리케이션 내부의 다른 컴포넌트들이 Aggregate 상태 변경에 영향을 받아 처리하는 업무들이 있기에 이벤트 발행
도메인 이벤트란 무언인가?
- 과거 분사형 동사로 명명한 클래스
- 이벤트에 의미를 부여하는 프로퍼티는 primitive value 또는 value Object가 있음
이벤트 강화
- 컨슈머에 필요한 정보를 이벤트가 갖고 다니는 이벤트 강화 기법
도메인 이벤트 식별
도메인 이벤트 생성 및 발행
도메인 이벤트 소비
주방 서비스 비즈니스 로직
주문 서비스 비즈니스 로직
참고
- 마이크로서비스 패턴 자바(저 : 크리스 리처드슨)
'dev > 아키텍처' 카테고리의 다른 글
| 마이크로서비스 패턴(7) (0) | 2022.04.06 |
|---|---|
| 마이크로서비스 패턴(6) (0) | 2022.03.31 |
| 마이크로서비스 패턴(4) (0) | 2022.03.10 |
| 마이크로서비스 패턴(3) (0) | 2022.03.03 |
| 도메인 주도 설계(Domain-Driven Design) (0) | 2022.02.24 |