Skip to content

Latest commit

 

History

History
92 lines (59 loc) · 2.74 KB

File metadata and controls

92 lines (59 loc) · 2.74 KB

시나리오 요구사항 분석

1. 서비스 개요

  • 서비스명: 콘서트 예약 서비스
  • 목적: 사용자가 콘서트 좌석을 예약하고 결제할 수 있는 시스템 구현

2. 주요 기능 및 시나리오

2.1 대기열 시스템

  • 사용자는 서비스 접근 전 대기열에 진입
  • 대기열 순서에 따라 서비스 이용 권한 부여
  • 대기열 토큰을 통해 사용자 식별 및 접근 권한 관리

2.2 좌석 예약

  • 사용자는 예약 가능한 날짜와 좌석 조회
  • 원하는 좌석 선택 및 임시 예약 (5분간 유효)
  • 임시 예약 상태에서 다른 사용자의 해당 좌석 접근 제한

2.3 결제 시스템

  • 사용자는 잔액 충전 가능
  • 예약한 좌석에 대해 충전된 잔액으로 결제
  • 결제 완료 시 좌석 소유권 확정 및 대기열 토큰 만료

3. 세부 요구사항

3.1 유저 토큰 발급 API

  • 기능: 서비스 이용을 위한 토큰 발급
  • 포함 정보: 유저 UUID, 대기 순서 또는 잔여 시간
  • 유효 기간 설정 및 관리

3.2 예약 가능 날짜/좌석 API

  • 예약 가능한 날짜 목록 조회 기능
  • 특정 날짜의 예약 가능한 좌석 정보 조회 기능
  • 좌석 번호는 1~50까지 관리

3.3 좌석 예약 요청 API

  • 날짜와 좌석 정보를 입력받아 예약 처리
  • 임시 배정 기능 (약 5분간)
  • 배정 시간 내 결제 미완료 시 자동 해제

3.4 잔액 충전/조회 API

  • 사용자별 잔액 충전 기능
  • 현재 잔액 조회 기능

3.5 결제 API

  • 선택한 좌석에 대한 결제 처리
  • 결제 완료 시 좌석 소유권 확정
  • 결제 완료 후 대기열 토큰 만료 처리

4. 기술적 요구사항

4.1 동시성 제어

  • 다수의 사용자가 동시에 같은 좌석 예약 시도 시 충돌 방지
  • 데이터베이스 레벨의 락(lock) 메커니즘 고려

4.2 분산 시스템 지원

  • 다수의 서버 인스턴스에서 동작 가능하도록 설계
  • DB에서 데이터 일관성 유지 (트랜잭션 처리, Lock 등)
  • 분산 캐시 시스템(예: Redis) 활용 고려

4.3 성능 및 확장성

  • 대규모 트래픽 처리 가능한 아키텍처 설계
  • 마이크로서비스 아키텍처 고려

4.4 보안

  • 토큰 생성 및 관리 시 암호화 적용
  • 사용자 인증 및 권한 관리 철저

5. 테스트 요구사항

  • 각 API에 대한 단위 테스트 최소 1개 이상 작성
  • 동시성 이슈에 대한 테스트 케이스 포함
  • 대기열 시스템의 정확성 검증 테스트

6. 심화 요구사항

  • 대기열 시스템의 효율적인 관리 방안 제시
  • e.g. 특정 시간 동안 N 명에게만 권한을 부여한다.
  • e.g. 한번에 활성화된 최대 유저를 N 으로 유지한다.