Skip to content

[TASK:1단계:1] 대규모 트래픽 선착순 시스템 한계(현재 구조에서의) #19

@oownahcohc

Description

@oownahcohc

현재 시스템의 병목 구간

현재 시스템은 "데이터 정합성"을 최우선으로 하여, RDBMS의 비관적 락에 의존함.
이에 따라 다음과 같은 문제가 발생함.

  • 비관적 락의 한계
    • 모든 요청은 DB의 특정 Row 하나를 잡기 위해 대기함.
  • Blocking I/O
    • 락을 획득할 때까지 스레드가 대기
    • 이는 DB Connection Pool 고갈 → 사용자 요청 스레드 대기 → 전체 시스템 처리량 저하 로 이어짐

발생 가능한 위험 시나리오

  1. 재고 1만개, 유저 10만명 같은 상황 → 주문 예약 서비스가 DB 커넥션을 모두 점유

    • 현재 TPS 로는 품절까지 수 분 소요 예상.
    • 후순위 유저는 대기 시간이 상당히 늘어남.
    • 이에 따라 Timeout 발생 → 유저 이탈 등의 문제 발생
    • 연관 없는 기능들도 DB 접속 불가로 전체 서비스 마비 가능.
  2. 유저의 새로고침 연타

    • 응답이 늦자 유저가 재요청(새로고침 or 주문 연타)
    • 기존 요청은 DB 락 대기 중이고, 신규 요청이 또 스레드를 점유함.
  3. 빈 재고 조회하는 문제 (?)

    • 재고가 0 인 상황에도 비관적 락을 잡고 쿼리를 날리는 중.

참고

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions