모든 프로젝트
Selected Work 2024 · Realtime
베팅덕 (실시간 베팅
서비스)
베팅덕 (실시간 베팅 서비스)
Role
아키텍처 기획 · 백엔드 개발
Timeline
2024.10 – 2025.02
Category
Realtime
— Overview

이 프로젝트는.

실시간 베팅과 채팅, 코인 보상을 결합한 웹 서비스. Redis 기반 처리 구조로 베팅 종료와 코인 정산 흐름의 응답성을 개선했습니다.

— Challenge

결정의 흐름.

“무엇을 만들었나” 보다 “왜 그렇게 결정했나” 를 남깁니다.

01·QUEUE

베팅 종료 작업을 Redis 큐로 분리한 경험

베팅 종료 시 사용자별 코인 정산과 DB 반영이 한 요청 안에 몰리면 응답이 느려지고 실패 복구도 어려워질 수 있었습니다. Redis List와 Pub/Sub을 조합해 정산 작업을 큐로 분리하고, ACK Timeout으로 처리되지 않은 메시지를 감지해 재처리할 수 있게 구성했습니다.

  • Redis List로 메시지 순차 처리
  • Pub/Sub으로 소비 시점 제어
  • ACK Timeout으로 미처리 메시지 감지·재처리
  • 베팅 종료 후 코인 정산 작업을 비동기화
02·PERFORMANCE

전체 키 탐색 병목을 줄여 응답 시간을 개선한 경험

베팅 종료 API는 Redis 전체 키를 탐색하는 과정에서 응답 지연이 발생했습니다. 필요한 정보를 큐와 데이터 구조에 미리 담도록 바꾸고, DB I/O를 메시지 큐 뒤로 분리해 API 응답 시간을 줄였습니다.

  • Redis 전체 키 탐색 제거
  • 정산에 필요한 정보를 큐에 직접 저장
  • DB I/O를 비동기 처리로 분리
  • 응답 시간 1441ms → 333ms 개선
03·CONSISTENCY

Redis 원자 연산으로 실시간 베팅 정합성을 지킨 경험

여러 사용자가 동시에 베팅할 때 금액 합산이 어긋나지 않도록 Redis의 단일 스레드 처리와 HINCRBY 원자 연산을 활용했습니다. 실시간 베팅 데이터는 Write Back 전략으로 관리하고, 동시 요청 테스트로 안정성을 확인했습니다.

  • HINCRBY 기반 베팅 금액 원자적 증가
  • 실시간 베팅 정보에 Write Back 캐시 전략 적용
  • 사용자 정보 조회는 Read Through로 최적화
  • 100만 번 동시 요청 테스트로 안정성 검증
— Impact

숫자로 남긴 결과.

API Latency Cut
베팅 종료 API 응답 시간 개선
Concurrency Test
Redis HINCRBY 기반 동시성 검증
— Stack

사용한 도구들.

Tools & Technologies
TypeScriptNestJSSocket.IOPostgreSQLRedisRedis ListPub/SubHINCRBYMessage Queue
— Quote
실시간 서비스에서 중요한 것은 빠른 반응뿐 아니라, 동시에 몰려도 같은 결과를 보장하는 구조였습니다.
프로젝트 회고