
백엔드
MongoDB Read/Write Traffic 분산하기
두줄요약
MongoDB Atlas의 Primary 집중 트래픽으로 데이터 덤프 시 API 지연이 발생했습니다. Mongoose의 `secondaryPreferred`로 Read를 Secondary에 분산했습니다.
문제 상황
- Dev 환경의 Prod 데이터 덤프 주기마다 API 호출 지연
- MongoDB Atlas에서 Primary 노드에 모든 쿼리 트래픽 집중, Secondary 노드 미사용
원인 분석
- 기본
primary읽기 선호도로 모든 Read 작업의 Primary 실행 - CQRS가 아닌 Replica Set 기반 Read/Write 트래픽 분산 필요
해결 방법
mongodb+srv연결을 통한 Replica Set 노드 정보 활용- Mongoose의
readPreference를secondaryPreferred로 설정해 Read의 Secondary 우선 처리 - Primary의 Write 처리와 Secondary의 Read 처리 분리
성능/운영 포인트
- 적용 후 Secondary에 없던 Query 요청 발생 확인
- Read 작업 포함 multi-document 트랜잭션에는 일관성을 위해
primary설정 필요 - 모든 DB 사용 서비스에 설정을 적용해야 전체 효과 확인 가능

