# CQS

3개의 포스트
post-thumbnail

영한갓님 JPA 실전 강의 들었는 데 CQS, CQRS 안다, 모른다?

영한갓님의 강의에서 회원의 정보를 수정하기 위해 MemberService에 update 메서드를 추가하던 와중이었습니다. > "update 메서드는 엔티티를 바꾸겠다는 변경성 메서드인데, > 이 메서드의 return type 을 Member로 한다면 update로 조회를 하는 꼴이 돼요. > > command와 query 가 같이 있는 꼴이 되죠. > 그래서 저는 update 메서드의 return type을 void로 하거나 id 값 정도로 해줘요." > > -갓영한님의 말씀- 영한님이 실무를 하시면서 되게 신경쓰는 규칙이라고 느껴지기도 하고, 뭔가 일종의 디자인 패턴인가 싶기도 하고, 대충 문맥은 알겠는 데 저 문장에서 command 와 query라는 단어가 정확히 무슨 뜻이지? 라는 각종 의문이

2023년 9월 11일
·
12개의 댓글
·
post-thumbnail

[기초] Command와 Query (CQS)

📋 Init 어떤 언어를 이용하든 함수를 이용하게 된다. 그 함수들 중에서도 같은 기능이지만 원시값의 상태를 변화시키는 함수와 원시값은 유지하면서 그 원시값을 기반으로 결과를 반환하는 함수가 있다. 이런 차이를 command와 query로 볼 수 있다. 필자와 같이 일하는 분의 기억법을 잠깐 빌려 한국어로 번역하여 뜻을 생각해보기로 했다. command와 query를 한국어로 번역해보면 명령과 질의이다. > query는 질의다. 질문이 있으면 답이 있을 것이다. 답변을 해준다! command는 명령이다. 명령? 그저 따르기만 하면 된다...(군대 ptsd가 오려고 한다..😨) 간단하게 정의를 적어보자 >query는 상태를 변화하지 않으면서 결과를 반환하는 것을 말한다. (side effect가 없다!) >command는 결과는 반환하지 않으면서 상태를 변화하는 것을 말한다. 이 정의들은 둘을 나눠야한다라는 원칙으로 학자들이 만들게

2022년 5월 14일
·
0개의 댓글
·

CQS를 생활화 하자

CQS... CQRS... 자주 언급 얘기이지만, 사실 실제 매우 큰 모노리틱 앱을 관리하고 있는 회사에서 일하기 전까지는 크게 와닿지 않았었다. 오늘은 시스템을 나누는 정도는 아니어도, 그냥 평소 코딩할 때 조회와 명령을 나누면 좋다고 생각이 들어서 이에대해 정리한다. 1. CQS - 명령 조회 분리 원칙 Bertrand Meyer가 제안한 개념으로 메소드는 액션을 수행하는 명령(command)이거나 데이터를 반환하는 조회(query) 둘중 하나이어야 한다는 원칙이다. 이름만 보면 뭔가 어려워보이지만, 사실 이게 끝이다. 기능이 명령이라면 명령쪽 로직을 타고, 조회라면 조회쪽 로직을 타면 된다. 그렇다면 CQS의 개념은 왜 어렵게 다가오는 것일까? 2. CQS가 어렵게 느껴지는 이유 CQS가 어렵게 느껴지는 이유는 주로 다른 개념들과 함께 사용되기 때문이다. CQS에 대해 검색하면 아래와 같은 다이어그램을 쉽게 찾을 수 있다. ![](

2022년 5월 2일
·
0개의 댓글
·