"커맨드 쿼리 분리"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 18개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;Command Query Responsibility Segregation; CQRS
;command-query separation (CQS), command-query responsibility segregation (CQRS)
;커맨드 쿼리 책임 분리
;커맨드 쿼리 분리, 커맨드 쿼리 책임 분리
* 명령과 쿼리의 역할구분
* 전통적 MVC에서는 하나의 모델이 DB 조회·갱신을 모두 담당했으나...
* 전통적 MVC에서는 하나의 모델이 DB 조회·갱신을 모두 담당했으나...
* CQRS에서는 DB조회를 담당하는 쿼리 모델, DB갱신을 담당하는 커맨드 모델로 분리함
* CQRS에서는 DB조회를 담당하는 쿼리 모델, DB갱신을 담당하는 커맨드 모델로 분리한다.
* 그에 따라 UI측 서비스 인터페이스도 분리됨
* 상태조회 쿼리(query), 상태변경 명령(command) 모델로 분리하는 패턴
* 그에 따라 UI측 서비스 인터페이스도 분리된다.


https://martinfowler.com/bliki/images/cqrs/single-model.png
[[파일:Martinfowler-cqrs.png]]


https://martinfowler.com/bliki/images/cqrs/cqrs.png
[[파일:dynimg-IC702503.png]]
 
[[파일:dynimg-IC702504.png]]
 
==장단점==
{| class='wikitable'
! 장점 !! 단점
|-
|
* 변경과 조회 로직이 분리되어 각각의 복잡도가 낮아진다.
* 조회 성능이 향상된다.
|
* 변경과 조회를 따로 구현하므로 코드가 더 많아진다.
* 조회 트래픽이 크지 않다면 딱히 필요없다.
|}


==같이 보기==
==같이 보기==
{{z컬럼3|
* [[쿼리]]
* [[MVC]]
* [[MVC]]
* [[커맨드]]
* [[커맨드 패턴]]
* [[참조 투명성]]
* [[플루언트 인터페이스]]
* [[프라이머리-세컨더리 복제]]
}}


==참고 자료==
==참고==
* {{영어위키백과|Command–query separation}}
* https://martinfowler.com/bliki/CQRS.html
* https://martinfowler.com/bliki/CQRS.html
* https://msdn.microsoft.com/en-us/library/dn568103.aspx
* https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs


[[분류: MVC]]
[[분류: MVC]]

2022년 7월 6일 (수) 13:36 기준 최신판

1 개요[ | ]

command-query separation (CQS), command-query responsibility segregation (CQRS)
커맨드 쿼리 분리, 커맨드 쿼리 책임 분리
  • 명령과 쿼리의 역할구분
  • 전통적 MVC에서는 하나의 모델이 DB 조회·갱신을 모두 담당했으나...
  • CQRS에서는 DB조회를 담당하는 쿼리 모델, DB갱신을 담당하는 커맨드 모델로 분리한다.
  • 상태조회 쿼리(query), 상태변경 명령(command) 모델로 분리하는 패턴
  • 그에 따라 UI측 서비스 인터페이스도 분리된다.

Martinfowler-cqrs.png

Dynimg-IC702503.png

Dynimg-IC702504.png

2 장단점[ | ]

장점 단점
  • 변경과 조회 로직이 분리되어 각각의 복잡도가 낮아진다.
  • 조회 성능이 향상된다.
  • 변경과 조회를 따로 구현하므로 코드가 더 많아진다.
  • 조회 트래픽이 크지 않다면 딱히 필요없다.

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}