Redis-MySQL 정합성 보장: 고민, 측정, 그리고 선택
·
SPRING
들어가며: 축제 현장의 실시간 대기열, 한 명도 놓칠 수 없다Festin은 대학 축제 부스의 대기열을 실시간으로 관리하는 시스템입니다. 사용자들은 모바일로 대기 등록을 하고, 부스 운영자는 "다음 사람 호출" 버튼으로 순서대로 손님을 받습니다.성능과 이력 관리를 위해 다음과 같은 아키텍처를 선택했습니다.왜 이렇게 설계했을까?대기 등록 시점: Redis만 사용1. 부스 정보 조회 (Redis) 2. Lua Script로 원자적 등록 처리: 중복 체크 + enqueue + 활성 부스 추가를 단일 원자 연산으로 3. 결과 반환 4. MySQL 저장 없음이유:성능: 1,000 TPS 목표 - MySQL 트랜잭션은 병목실시간성: Redis는 메모리 기반, 응답 속도 원자성 보장: Lua ..