• Command Query Responsibility segregation

    • Command : CUD
    • Query: R
  • 일반적으로 서비스단에서 요청되는 비율이 다음과 같다

    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로 보내는 기능 존재(미친건가..?)