-
Command Query Responsibility segregation
-
일반적으로 서비스단에서 요청되는 비율이 다음과 같다
Command 2 : Query 8
-
Read로 인해 부하가 많이 발생하고 있다고 하자
- Query Command 분리원칙을 안지키면, Read때문에 , 즉 Query 때문에 Command가 안동작하게 될수도 있음. 심각한 문제 발생 가능
-
query형 서비스와 command 서비스를 따로 나눠도 됨
-
애플리케이션 단에서 분리해도 됨
-
DB의 endpoint를 나눌 수 있음
-
Read, Write DB 나눈다
- MasterDB Write
- SlaveDB Read
이런식으로
-
더 자세히 말하면
- readOnly가 true값이면 A라는 DB로(즉, Read만하는 경우)
- 그게 아니면 B라는 DB로 보내도록 한다
- spring에서 readOnly로 나눠도 되고
- AWS AuroraDB의 경우에는 동일한 endpoint로 요청 보내도 readonly 값에 따라 다른 DB로 보내는 기능 존재(미친건가..?)