목록 보기
Spring Boot MongoDB 트랜잭션 도입 실전 가이드
백엔드

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

올리브영
올리브영
2024년 12월 17일

두줄요약

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

핵심 내용

  • Spring Boot와 MongoDB에서 트랜잭션을 도입할 때의 동작 조건과 설정 요소 정리
  • Replica Set, Sharded Cluster, WiredTiger, Write Concern, Read Preference, MongoTransactionManager의 역할 설명
  • 트랜잭션 중 PRIMARY/SECONDARY 복제 지연과 Snapshot Isolation, Write Conflict 사례를 통한 주의점 제시

문제 상황

  • SECONDARY 복제 지연으로 조회 시 최신 데이터를 못 찾아 Not Found Exception이 발생할 수 있는 문제
  • @Transactional 내부에서 SQS 메시지를 먼저 발행해 커밋 전 데이터를 소비자가 조회하는 비일관성 문제

해결 방법

  • 트랜잭션 전용 readPreference를 PRIMARY로 설정해 일관성 확보
  • @TransactionalEventListener(AFTER_COMMIT)와 ApplicationEventPublisher로 커밋 이후 이벤트 발행
  • Outbox 패턴, 지연 전송은 대안이지만 현재 사례에서는 우선 적용하지 않음

적용해볼 점

  • 트랜잭션 환경과 단일 노드 환경의 설정 의미 차이 확인
  • 읽기 일관성이 중요한 구간만 PRIMARY 기준으로 분리 적용
  • 데이터 저장과 메시지 발행 시점을 분리해 커밋 이후 처리 구조 검토

댓글 0

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

댓글을 불러오는 중...