목록 보기
뱅크샐러드가 게임을 만들 때 데이터 정합성을 유지하는 법 (feat. 낙관적 락)
백엔드

뱅크샐러드가 게임을 만들 때 데이터 정합성을 유지하는 법 (feat. 낙관적 락)

뱅크샐러드
뱅크샐러드
2026년 1월 16일

두줄요약

현금성 게임 재화의 정합성을 위해 시간 차분 정산과 낙관적 락을 결합했습니다. 버전 기반 CAS 구현과 복제 지연·재시도 운영 원칙을 공유합니다.

문제 상황

  • 현금 전환 가능한 게임 재화 SAL과 에너지·레벨 상태의 동시 업데이트
  • 사용자 API, 백오피스 수동 조정, 향후 배치·비동기 이벤트에 따른 레이스 컨디션 위험

선택 이유

  • 사용자별로 격리된 캐릭터 상태에 따른 낮은 충돌 확률
  • DB 잠금 대기와 Redis 기반 분산 락 인프라 복잡도 회피
  • 시간 차분 기반 보상 정산으로 충돌 요청의 보상 누락 방지

구조와 흐름

  • 정적 character와 빈번히 변경되는 character_state 테이블 분리
  • update_version 조건을 포함한 UPDATE 쿼리로 원자적 CAS 수행
  • 업데이트 행 수 0건을 동시성 충돌로 감지하고 다음 액션에서 미정산 보상 합산

성능/운영 포인트

  • 정합성이 중요한 상태 변경 경로의 Primary DB 조회 강제
  • 재시도 필요 시 최신 데이터 재조회, 지수 백오프·지터, 멱등성, 최대 횟수 제한 적용
  • 타임스탬프 대신 정수형 버전 필드 사용으로 시간 정밀도와 클럭 스큐 문제 회피

다음 읽기

#낙관적 락 주제를 이어서 읽기

뱅크샐러드가 게임을 만들 때 데이터 정합성을 유지하는 법 (feat. 낙관적 락)

뱅크샐러드는 게임형 앱테크 서비스의 데이터 정합성을 위해 낙관적 락을 적용했습니다. 버전 필드와 상태 분리, 시간 차분 정산으로 재시도 없이도 안정성을 확보했습니다.

뱅크샐러드
뱅크샐러드
백엔드
전체 보기

댓글 0개

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

댓글을 불러오는 중...