https://www.youtube.com/watch?v=xf0kXMTFJm8
https://www.youtube.com/watch?v=H1IF3BUeFb8
최범균님의 유튜브를 보면서 공부해 본 내용이다.
CQRS는 Command Query Responsibility Segregation의 약자입니다.
Command(명령)
- 시스템 데이터 변경
- 주문 취소, 배송 완료(주문 데이터를 변경함)
Query(쿼리)
- 시스템 데이터 조회
- 주문 목록 조회
Responsibility(책임)
- 구성 요소의 역할
- 구성 요소 (모델)
- 클래스, 함수
- 모듈/패키지
- 웹서버/DB
Segregation(분리)
- 역할에 따라 구성 요소 나누기
CQRS를 정리해보자면
명령 역할을 수행하는 구성 요소와 쿼리 역할을 수행하는 구성 요소를 나누는 것!
이렇게 보면 Member와 MemberData 클래스가 비슷한 부분이 많아서 중복되고, 개발이 느려지는 느낌!
명령과 조회에 단일 모델을 사용하면?
-> 멤버 클래스에 계속 필요한 메서드를 추가!
이러다 보면 코드가 난잡해짐.
- 코드 역할/책임 모호
- 의미/가독성 등 나빠짐
- 유지보수성이 떨어짐
명령과 쿼리가 다루는 데이터가 다르기 때문에 이런 문제가 발생
명령 -> 한 영역의 데이터
쿼리 -> 여러 영역의 데이터
변경 빈도가 다른 기능이 한 코드에 있으면
- 서로 다른 이유로 코드가 바뀌고 이는 곧 책임의 크기가 적당하지 않다는 것
기능마다 트래픽 패턴, 성능 요구 다름
- 사용자의 상품 목록 조회, 상품 상세 조회
- 사용자의 댓글 등록
- 사용자의 주문
- 백오피스의 판매 수치
기능마다 서로 다른 성능 향상 방법 필요
- 단일 모델로는 다양한 성능 향상 기법 적용이 어려울 수 있음
'Computer Science > 개발상식' 카테고리의 다른 글
Apache Kafka vs Amazon SQS (0) | 2022.05.27 |
---|---|
kafka 아는 척 하기(정리 실패) (0) | 2022.05.11 |
NGINX란 무엇인가? (0) | 2022.03.24 |
UX란 무엇인가? (0) | 2022.01.24 |
NTP란 무엇인가? (0) | 2021.11.05 |