주니어 서버 개발자가 유저향 서비스를 개발하며 마주친 이슈와 해결 방안
·2024.11.05 19:00
카카오페이 혜택 서비스 개발 중 발생한 동시성, DB 성능, 멱등성 이슈를 Redis 분산 락 등으로 해결했다.
카카오페이 혜택 서비스(퀴즈타임, 페이래플 등)를 개발하며 마주한 동시성, DB 성능, 멱등성 이슈와 해결 방안을 다룬다.
주요 이슈인 **동시성 이슈(따닥 이슈)**는 유저의 중복 클릭으로 인해 페이포인트가 중복 지급될 위험이 있는 문제다. 이를 해결하기 위해 애플리케이션 단에서 **Redis(Lettuce)**를 활용한 **분산 락(Distributed Lock)**을 구현했다.
DB 베타 락 대신 분산 락을 선택한 이유는 유지보수 편의성과 Controller 단에서의 빠른 실패(Fail-fast)를 통한 리소스 낭비 방지 때문이다. 구현에는 Redis의 SETNX 명령어를 활용한 스핀 락(Spin Lock) 방식을 사용했다.
- LockManager: Redis에 키를 저장하여 락을 설정하고 해제하는 역할을 수행한다.
- RedisLockUtil: 비즈니스 로직을 락 범위 내에서 실행하며, 작업 완료 후 락을 해제하는 유틸리티다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.