Command : 시스템 상태를 변경, 결과를 반환하지 않음
Query : 시스템 상태를 변경하지 않고(사이드 이펙트가 없음), 결과를 반환
그래서 왜 분리하는가?!
👉 메서드 호출시 내부에서 변경(사이드 이펙트)가 일어나는 메서드인지, 아니면 내부에서 변경이 전혀 일어나지 않는 메서드인지 명확히 분리하려는 의도
👉 따라서 데이터 변경 관련 이슈가 발생했을 때, 변경이 일어나는 메서드만 찾아보면 된다
(심각한 이슈들은 대부분 데이터를 변경하는 곳에서 발생)
👉 변경 메서드도 변경에만 집중하면 되기 때문에 유지보수가 더 좋아진다
권장하는 방법은
참고
https://martinfowler.com/bliki/CommandQuerySeparation.html
https://hardlearner.tistory.com/383
https://www.inflearn.com/questions/27795/cqrs