강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

초보송이님의 프로필 이미지
초보송이

작성한 질문수

멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]

기능 디버깅 및 테스트 진행하기

CQRS 설계 팁

해결된 질문

작성

·

16

0

대규모 트래픽 환경에서 Write Service의 부하를 줄이기 위한 CQRS 설계 팁이 있을까요?

답변 2

1

Hong님의 프로필 이미지
Hong
지식공유자

안녕하세요 초보송이님 질문 주셔서 감사합니다.

 

우선 Write와 Read하는 행위에 대해서 나눈것이 기본적으로 부하를 줄일 수 있는 형태가 CQRS입니다.

 

  1. 배치 처리

기본적으로 줄일 수 있는 방식이죠. 처리해야 하는 데이터를 모아서 한번에 배치처리를 통해 데이터를 처리하는 방법입니다.

물론 이 과정에서 실패하는 케이스들에 대해서 핸들링 해야하는 부분이 존재하죠

 

  1. Write Debouncing

같은 리소스에 대해서 잦은 Update를 최근 상태 하나로 압축하는 겁니다.

예를들면 장바구니 데이터나, 좋아요등이 존재하겠죠

Redis나 Kafka Stream 같은 중간 버퍼에서 key 단위로 마지막 command만 남기고 이전 요청은 버려버리는거에요.

  • 즉 가장 최근 올라온 상태만 처리하는 것이죠

이런 형태라면 1000건이 와도 최근 값만 반영되기 떄문에 총 1건만 반영하면 됩니다.

하지만 도입하기에 너무 부답스럽고 까다롭다는 특징이 있습니다.

 

이외에는 MSQ를 도입함으로써 인스턴스의 부하를 방지하는 방법도 있을 꺼 같아요. 하지만 이는 Write 하는 DB에 대한 부하를 줄일 수는 없는 형태이고 기본적인 인스턴스의 부하를 줄일 수 있는 방법입니다.

 

감사합니다.

 

1

안녕하세요, 인프런 AI 인턴입니다. 초보송이님.

대규모 트래픽 환경에서 CQRS(Command Query Responsibility Segregation) 패턴을 설계할 때, Write Service의 부하를 효과적으로 줄이는 방법에 대해 몇 가지 팁을 드리겠습니다. 이 패턴은 읽기와 쓰기 작업을 분리하여 시스템의 확장성과 성능을 향상시키는 데 유용합니다.

  1. 커맨드 핸들링 최적화:

    • 비동기적으로 커맨드를 처리하여 Write Service의 부하를 줄일 수 있습니다. 비동기 메시지 큐(ex. Kafka, RabbitMQ)를 사용하여 커맨드를 수신하고 처리하는 방식을 고려해 보세요.
    • 데이터 유효성 검사는 클라이언트 측에서 최대한 수행하여 Write Service로의 불필요한 호출을 줄이세요.
  2. 데이터 일관성 유지:

    • CQRS에서는 Eventually Consistent 모델을 자주 활용하게 됩니다. 이를 위해 이벤트 소싱을 통해 상태 변화를 추적하고, 이러한 이벤트를 기반으로 시스템의 일관성을 유지할 수 있습니다.
  3. 서비스 확장:

    • Write 서비스와 Read 서비스는 서로 다른 요구 사항을 가지고 있기 때문에 개별적으로 확장 가능합니다. Write Service의 처리량이 한계에 도달할 경우, 샤딩이나 파티셔닝을 통해 분산 처리할 수 있습니다.
  4. 적절한 캐싱 사용:

    • Write 작업 후에는 잠재적으로 시간이 오래 걸리는 데이터 업데이트가 발생할 수 있습니다. Redis와 같은 캐시 시스템을 사용하여 주로 사용되는 데이터를 캐싱하면 직접 DB에 접근하지 않고도 빠른 응답을 제공할 수 있습니다.

관련하여 추가적인 내용을 더 알고 싶거나, 실무 경험을 통해 적절한 예시를 보고자 한다면 다음의 유사 질문들을 참고해 보세요:

이 링크들은 실제 프로젝트에서 CQRS 패턴을 어떻게 구현하고 활용할 수 있는지에 대한 통찰력을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

초보송이님의 프로필 이미지
초보송이

작성한 질문수

질문하기