목록 보기
그 많던 메시지는 누가 다 먹었을까?
백엔드

그 많던 메시지는 누가 다 먹었을까?

카카오뱅크
카카오뱅크
2025년 8월 8일

두줄요약

카카오뱅크 알림탭에서 발생한 간헐적 동시성 문제를 ShardingSphere 내부 상태와 초기화 경쟁으로 분석했습니다. SQL 대체와 Warm-Up으로 해결하고, 핵심 라이브러리 관리 체계도 도입했습니다.

문제 상황

  • 카카오뱅크 알림탭에서 간헐적으로 알림 메시지 누락, 모든 샤드 조회, 엉뚱한 샤드 조회가 발생
  • 개발 환경에서는 잘 재현되지 않았고, 운영에서만 드물게 나타나는 동시성 문제로 보임

원인 분석

  • ShardingSphere-JDBC 내부의 공유 상태와 싱글톤 초기화 과정에서 경쟁 상태 발생
  • SQL 파싱 결과 캐시 재사용, FromWhereExtractor의 공유 멤버 변수, ParsingRuleRegistry 초기화 시점 분리로 잘못된 세그먼트와 규칙 사용

해결 방법

  • LIMIT 1 쿼리를 다른 SQL로 대체해 동일 구문 트리 공유를 제거
  • 애플리케이션 시작 시 Warm-Up으로 SQL을 순차 실행해 초기화 경쟁 제거
  • 핵심 라이브러리 변경사항을 RSS, Owner, ADR로 관리하는 프로세스 도입

댓글 0

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

댓글을 불러오는 중...