피드로 돌아가기
Dev.toDatabase
원문 읽기
Single-table Design 기반 Real-time Game 상태 관리 최적화
Single-table DynamoDB design for a real-time game (rooms, rounds, leaderboards)
AI 요약
Context
엔티티별 테이블 분리 시 발생하는 다수의 Network Round-trip과 복잡한 IAM 권한 관리의 한계점 분석. 실시간 게임 특성상 Room 단위의 밀집된 데이터 액세스 패턴을 효율적으로 처리할 구조적 필요성 대두.
Technical Solution
- Room 코드를 Partition Key(PK)로 설정하여 META, Player, Round, Reaction 데이터를 단일 파티션에 배치한 구조 설계
begins_with(SK, ...)함수를 활용한 Sort Key prefix scan으로 특정 라운드의 모든 클릭 데이터를 단일 쿼리로 추출하는 로직 구현- GSI1의 Sort Key에 점수를 배치하고
ScanIndexForward: false설정을 통해 Top-N 리더보드를 구현하는 Index 전략 채택 - 데이터 성격에 따라 TTL 속성을 차등 적용하여 ephemeral 데이터의 자동 삭제와 Durable 데이터의 영구 보존을 동시에 달성
- Auth.js 세션 데이터를 동일 테이블 내 고유 Prefix로 통합하여 인프라 관리 포인트 및 보안 표면적 최소화
실천 포인트
- 데이터 엔티티 중심이 아닌 Access Pattern 중심으로 Partition Key 설계 여부 확인 - Range Query 최적화를 위해 Sort Key의 Prefix 기반 계층 구조 설계 검토 - 정렬 기능이 없는 NoSQL에서 GSI Sort Key를 활용한 Top-N 랭킹 구현 가능성 분석 - TTL 기반의 자동 데이터 정리 메커니즘을 통한 배치 작업 비용 제거 적용