Page History
...
| Info |
|---|
장바구니 기능을 만들고 싶은 단순하게 장바기느를 구매만 이용하는게 아닌 장바구니의 이벤트를 활용(담기/빼기..), 이벤트를 추적해 구매자의 최종 구매 심리적 요인과 구매예측을 만들고 싶음 기본 이벤트를 설계해.... |
용어설명
이 툴을 사용하기전 DDD에서 소개하는 개념을 간단하게 살펴보겠습니다.
✅ CQRS 기본 개념
🔸 정의
CQRS는 명령(Command) 과 조회(Query) 를 명확히 책임 분리(Responsibility Segregation) 하여 시스템을 설계하는 아키텍처 패턴입니다.
읽기와 쓰기 모델이 분리되어 각각 독립적으로 최적화될 수 있습니다.
...
🔄 CQRS 구성요소와 DDD의 연결
| 개념 | 설명 | DDD 요소와 연결 |
|---|---|---|
| Command | 데이터를 변경하는 요청 (예: 주문 생성) | Command, Aggregate Root, When |
| Command Handler | 명령을 받아 도메인 로직 실행 (비즈니스 규칙 검증 포함) | 도메인 서비스 or 애그리거트 메서드 |
| Aggregate Root | 실제 비즈니스 로직이 작동하는 단위. 상태 변경을 캡슐화 | Aggregate Root |
| Event | Command 처리 후 발생하는 결과 (이벤트 소싱일 경우 저장됨) | Then, 이벤트 핸들러 |
| Query | 데이터를 조회하는 요청 (상태 변경 없음) | Read Model, Projection, DTO |
| Read Model | 조회에 최적화된 모델 (DB View, Cache, Elastic 등) | Read Model, Given |
1. Command (명령)
정의: 시스템에 "무언가를 하라"고 요청하는 객체.
예시:
CreateOrderCommand,ChangeUserEmailCommand특징:
상태를 변경하는 의도(Intent) 를 나타냄
보통 쓰기 작업(write) 에 해당하며, 반환값은 없거나 간단한 결과 (ex: 성공/실패, ID 등)
컨트롤러나 API에서 입력값을 받아 생성됨
DDD 문맥에서 역할:
Aggregate에게 전달되어 비즈니스 규칙에 따라 실행됨
CQRS 구조에서는 Query와 명확히 분리됨
...
