-
논란의 여지가 없는 통찰이 하나 있다. 읽기 (질의)와 쓰기(명령)은 다르다. 따라서 서로 다르게 취급해야 한다. (또는 각각의 책임을 분리해야 한다고 표현할 수 도 있다.)
-
여태까지 도메인 규칙을 강화하는 소프트에어를 만드는 방법에 대해서 설명하였다. 연산의 일관성을 위해서 작은 작업 덩어리를 커밋할 때 도움이 되는 작업 단위나 애그리게이트와 같은 패턴을 도입하였다.
-
이러한 작은 작업 덩어리 사이에서 변경된 내용을 통신하기 위해 도메인 이벤트 패턴을 도입해 ‘재고가 손상되거나 분실될 경우’ 배치의 사용 가능한 수량을 조절하고 필요하다면 주문을 재할당하라 와 같은 규칙을 작성할 수 있다.
-
이 모든 복잡도는 시스템 상태를 변경할 때 규칙 적용을 강화하기 위해 존재한다. 즉 데이터를 유연하게 쓰기 위한 도구를 만든 것이다. 그렇다면 읽기는 어떨까?
POST / 리디렉션 / GET 그리고 CQS
-
웹 개발을 하는 사람에게는 POST / 리디렉션 / GET 패턴이 익숙할 것이다. 이 기법에서 웹 엔드포인트는 HTTP POST 요청을 받고 처리한 결과를 보여주기 위해서 리디렉션으로 응답한다.
-
CQS에서는 한 가지 간단한 규칙을 따른다. 함수는 상태를 변경하거나 질문에 답하는 일 중에 한 가지만 해야 한다. 두가지 일을 모두 다 해서는 안된다. 그래야지 소프트웨어를 더 쉽게 추론할 수 있다.
-
CQS 원칙을 사용하여 시스템을 더 빠르고 확장성 있도록 만들 수 있다.
참고 문헌
>> Home