Playball Logo

Command Palette

Search for a command to run...

목차 열기

Redis 구성

Redis는 두 개의 독립적인 인스턴스로 분리하여 운영합니다. 티켓 오픈 시 대기열 트래픽이 폭발해도 인증과 좌석 분산 락 성능에 영향을 주지 않도록 설계했습니다.


인스턴스 분리 구성

Redis #1 — Queue 전용

KeyType설명TTL
queue:wait:{matchId}ZSET대기열 사용자 순서 관리없음
queue:ready:{m}:{u}STRING대기열 입장 허용 토큰30초
seat:preference:{m}:{u}STRING사용자 좌석 선호 캐시900초
queue:matchSET활성 티켓팅 경기 목록없음

Redis #2 — Auth / Lock 전용

KeyType설명TTL
refresh_token:{jti}STRINGRefresh Token 저장7일
token_blacklist:{jti}STRING로그아웃 토큰 차단남은 AccessToken TTL
block_lock:{blockId}STRING (SETNX)블록 단위 좌석 락5초
seat:session:{token}HASH좌석 선택 세션 관리세션 TTL

분리 이유

문제해결
대기열 폭발 시 Redis 부하 → 인증/락 지연Queue 전용 인스턴스 분리로 영향 차단
블랙리스트 확인 지연 → JWT 검증 병목Auth/Lock 인스턴스가 항상 안정적 응답 보장
좌석 분산 락 실패 → 동시성 이슈대기열 트래픽과 분리되어 락 성공률 보장

PostgreSQL 테이블 소유권

서비스소유 테이블비고
Auth-Guardusers, user_sns, withdrawal_requests회원 관리
Seatseats, blocks, match_seats, seat_holds, price_policies좌석/가격 구조
Order-Coreorders, order_seats, payments, cash_receipts주문/결제
common-corematches, clubs, stadiums공유 도메인