studying...
  • 노트의목적
  • 웹전반
    • HTTP
      • 1. HTTP
      • 2. HTTP_Client
      • 3. HTTP_Server
      • 4. JAVA_HTTP_Server
      • 5. Spring_Web_MVC
    • REST_API
      • 1. REST_API
      • 2. URI&MIME_type
      • 3. COLLECTION_Pattern
      • 4. COLLECTION_Pattern_adjustment
      • 5. Spring_Web_MVC
    • DTO_JSON_CORS
      • 1. DTO
      • 2. 직렬화
      • 3. Jackson
      • 4. CORS
    • Layered_Architecture
      • 1. Layered_Architecure
      • 2. Data_Access
      • 3. Domain_Model
    • DI&Spring_Test
      • 1. Dependency_Injection
      • 2. Unit_Test
      • 3. Spring_Test
      • 4. TDD
    • Database
      • 1. Database
      • 2. Relational_Model
      • 3. JDBC
    • JPA
      • 1. ORM
      • 2. Hibernate
      • 3. Embeddable
      • 4. Relationship Mapping
      • 5. Spring Data JPA
    • 도메인_주도_설계
      • 1. DDD
      • 2. Strategic Design
      • 3. Entity, Value Object
      • 4. Aggregate
      • 5. Repository
    • Hexagonal_Architecture
      • 1. SOLID
      • 2. Hexagonal_Architecture
      • 3. 도메인 주도 설계 핵심
    • Spring_Security
      • 1. 애플리케이션 보안
      • 2. 인증
      • 3. 로그인 & 로그아웃
      • 4. 회원가입
      • 5. JWT&Authority
    • File_Upload
      • 1. Multipart_FormData
      • 2. Separation_of_Concerns
      • 3. Cloudinary
    • CQRS
      • 1. CQRS
      • 2. Redis
  • 면접대비
  • book
    • RealMySQL8.0
      • 4장
      • 5장
      • 8장
      • 9장
    • Object
      • 1장
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
      • 7장
      • 8장
      • 9장
    • ModernJava
      • ch1
      • ch2
    • 클라우드네이티브를위한 쿠버네티스 실전 프로젝트
      • 1장
      • 2장
      • 3장
      • 4장
    • 테라폼 쿡북
      • 2장
      • 3장
      • 4장
      • 5장
      • 6장
  • lecture
    • 외워서끝내는네트워크기초
    • 외워서끝내는네트워크심화
    • aws
      • Architecting_on_AWS
      • Architecrting-advanced
      • Developing_on_AWS
      • migration_essentials
      • Resilience
      • Running_Containers_on_EKS
    • Ansible
    • k8s
      • section2
      • section3
    • Terraform
  • experiences
    • workshops
      • EKS
Powered by GitBook
On this page
  1. 웹전반
  2. REST_API

4. COLLECTION_Pattern_adjustment

Previous3. COLLECTION_PatternNext5. Spring_Web_MVC

Last updated 1 year ago

CQS

CQS는 Command Query Separation Pattern이라는 하나의 디자인 패턴으로 어떤 메서드나 HTTP 요청을 구성하는데 있어서 모두 사용되는 패턴이다. 해당 매서드의 특성에 따라 모든 HTTP 요청과 메서드를 Command와 Query로 구분할 수 있는데

Commands(modifiers): 시스템의 상태를 바꾸지만 값을 return 하지 않는다. Queries: 결과를 반환하지만 시스탬의 상태를 변경하지 않는다(사이드 이펙트에서 자유롭다)

커맨드와 쿼리를 확실하게 분리하면 쿼리는 조금 더 자유롭게 사용할 수 있고 Commands는 상태변화를 일으키는 것들로 분류해서 관리할 수 있기 때문에 장애 상황에 편의성을 준다.

CQS에는 어긋나지만 편의를 위해 insert 문에는 id를 리턴해주면 조회시 더 편리해진다. 키워드는 커맨드와 쿼리의 완전한 구분이다.

출처

마틴파울러
Su Bak 블로그
CQS