Replies: 2 comments
-
(추가)
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
좋은 제안 감사합니다.
하지만 견희님이 말씀해 주신 것처럼 CQRS-lite 전략으로 모든 도메인에 대해 QueryService, CommandService로 분리하도록 컨벤션을 정하는 게 좋을 것 같습니다. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
배경
현재 API 설계/구현 과정에서 아래 2가지 의사결정이 필요합니다.
팀 차원의 기준을 정해두면 이후 일관된 설계에 도움이 될 것 같아 Discussion을 남깁니다.
1. 수정 API: PUT vs PATCH
✅ 제안: 기본은 PATCH 사용, 전체 교체가 필요한 경우에만 PUT 허용
이유
실제 수정은 대부분 “일부 필드만 변경”하는 경우가 많음
PUT은 리소스 전체 교체 의미이기 때문에
→ 누락된 필드를 어떻게 처리할지 명확한 규칙이 필요
PATCH는 “요청에 포함된 필드만 변경”이라는 의미가 명확하여
부분 수정이 많은 현재 구조에 더 적합하다고 판단됩니다.
권장 설계 규칙
PATCH /resource/{id}
→ 부분 수정 (기본 update 방식)
PUT /resource/{id}
→ 전체 리소스 교체가 명확한 경우에만 사용
PATCH 설계 시 고려사항
최종 제안
Update API는 기본적으로 PATCH로 통일
정말 “전체 교체 의미”가 필요한 도메인에서만 PUT 허용
2. 읽기 트랜잭션 분리 여부 (CQRS 도입)
✅ 제안: CQRS-lite 형태로 읽기/쓰기 분리 도입
(완전한 CQRS가 아닌, 서비스 레벨에서의 책임 분리)
이유
조회 로직이 점점 복잡해질 경우:
읽기
쓰기
요구사항이 서로 달라지기 때문에
하나의 서비스에서 모두 처리하면 빠르게 복잡해질 가능성이 높습니다.
적용 방식 제안
초기부터 거창하게 분리하기보다는:
CommandService → 쓰기 전용
QueryService → 조회 전용 (DTO Projection 기반)
형태로 시작하는 CQRS-lite 전략 제안
적용 전략
조회 요구사항이 복잡하거나, 성능 고려가 필요한 도메인부터 우선 적용
단순 조회 도메인은 굳이 분리하지 않아도 됨
점진적 확장 전략이 좋은 거 같습니다.
결론
Update API는 기본 PATCH 채택 제안
읽기/쓰기 분리(CQRS-lite) 도입 제안
팀 논의 요청
PATCH 기본 통일에 동의하는지
CQRS를 전체 도메인에 즉시 적용 vs 점진적 적용 중 어떤 전략이 좋은지
null 처리 정책은 어떻게 가져갈지
의견 부탁드립니다 🙏
Beta Was this translation helpful? Give feedback.
All reactions