목록 보기
MongoDB Read/Write Traffic 분산하기
백엔드

MongoDB Read/Write Traffic 분산하기

그린데이터
그린데이터
2022년 4월 1일

두줄요약

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 사용 서비스에 설정을 적용해야 전체 효과 확인 가능

다음 읽기

#MongoDB 주제를 다룬 다른 회사 글

Spring Boot MongoDB 트랜잭션 도입 실전 가이드

MongoDB 트랜잭션의 동작 조건과 Snapshot Isolation, Write Conflict를 설명했습니다. 또한 복제 지연과 이벤트 발행 타이밍 문제를 PRIMARY 설정과 AFTER_COMMIT 이벤트로 해결했습니다.

올리브영
올리브영
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...