1. 프로젝트 타이틀
  2. 프로젝트 소개 ( 2~3장 )
  3. 기술적 고민 및 해결과정 : 우리가 해결하고자 하는 사용자의 문제를 구체적으로 정의하고, 기술적으로 완성도 있게 해결하는 문제 해결의 전 과정
    1. 첫번째 목표 : 실전과 유사한 환경의 티켓팅 시뮬레이터 만들기

      🤔 어떻게 유저가 실제 티켓팅처럼 느끼게할까?

      1. 티켓팅 대기열 시스템 → Jerry (ALL)
      2. **가상 트래픽(**봇) 발생 기능 ⇒ Chad & Jerry
    2. 두번째 목표 : 수십만명 트래픽을 감당할 수 있는 규모로 안정적인 시스템을 확장

      🤔 어떻게 수십만명 유저를 감당할 수 있을까?

      1. 클라우드 아키텍처 구조도 ( 현재 ) : MSA 모노레포 구조 ⇒ Parrot
      2. 대규모 시스템 확장 아키텍처 소개 : LB+Auto-scaling, DB 다중화, CDN ⇒ Parrot
      3. 유지보수 + 장애 대응을 위한 로깅 & 모니터링 서버 ⇒ Chad
  4. 마무리 ⇒ Jude

기술적 고민 및 해결과정

Ch1. 실전과 유사한 환경의 티켓팅 시뮬레이터

사용자를 위해 실전과 유사한 환경의 티켓팅 시뮬레이터를 만들기 위해서 고민한 기술적인 문제 해결 과정들에 대해 소개하려고 합니다.

대기열 시스템 동작 원리

우선, 저희는 실전과 유사한 경쟁 환경을 위해서 실제 티켓팅 사이트에 있는 대기열 시스템을 구현하고자 했습니다.

사용자가 저희 티켓팅 사이트에 접속해서 예매하기 버튼을 클릭하면 대기열 서버로 요청을 보냅니다. Queue Server에서는 Redis Sorted Set을 이용해 대기큐와 활성큐를 관리합니다. 대기열 서버에서는 대기큐와 예매를 기다리는 요청을 대기큐에 넣고

사용자에게 순번을 부여합니다. 대기열 서버가 티켓팅 서버 앞단에서 처리량을 조절하며 특정 시점에 트래픽이 몰리더라도 예매 서버에 직접적인 부하가 가지 않도록 안정적으로 제어합니다.

사용자는 대기열 서버로 주기적으로 Polling 을 보내서 “내순서가 되었는지" 묻습니다. 아직 차례가 아니면 대기인원과 순번을 갱신하여 보여줍니다.

순서가 되면 대기열 서버가 요청을 대기큐 → 활성큐로 이동하고 “활성 토큰"을 발급합니다.