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

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

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

두줄요약

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

문제 상황

  • 게임형 앱테크 서비스에서 SAL과 에너지 같은 캐릭터 상태를 실시간으로 갱신해야 하는 상황
  • 유저 액션과 운영자 백오피스 수정, 향후 배치·비동기 이벤트까지 겹치며 데이터 정합성 유지 필요성 증가

원인 분석

  • 현금성 자산으로 전환 가능한 재화라서 레이스 컨디션이 곧 신뢰 저하로 직결
  • 분산 환경에서 잘못된 동시성 제어는 기술적 부채와 운영 리스크로 확장

해결 방법

  • 비관적 락과 분산 락을 검토한 뒤, 낮은 충돌 확률과 단순한 인프라 구성을 이유로 낙관적 락 채택
  • update_version 버전 필드로 CAS 방식 검증을 수행하고, character와 character_state 분리로 락 범위 축소
  • 시간 차분 기반 보상 정산과 자기 수정 구조로 재시도 로직 없이도 누락 없는 정산 유도

주의할 점

  • updated_at 같은 시간값을 버전 필드로 쓰는 방식은 정밀도와 클럭 스큐 문제로 부적합
  • 복제 지연 환경에서는 최신 버전 읽기를 보장하지 않으면 충돌률 상승

적용해볼 점

  • 충돌을 장애가 아닌 제어 흐름으로 보고, 비즈니스 특성에 맞는 재시도·멱등성 전략을 함께 설계
  • 정합성이 중요한 경로는 최신 데이터 조회를 강제해 stale read를 방지

댓글 0

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

댓글을 불러오는 중...