Skip to content

BlueCaf/CQueC

Repository files navigation

CQueC Queueing service

Logo

대규모 사용자 대기열 처리를 위한 고성능 Queueing 서비스

GitHub InteliJ IDEA VSCode Kotlin SpringBoot GoLang Linux Kubernetes Jenkins Redis Prometheus Grafana


🧙 Service Image

Service Image


👥 Contributors

이름 역할
Cloud 백엔드 개발
Chance 인프라 및 모니터링 구축

📚 Tech Stack

🚀 Back-End

  • Language: Kotlin 2.0.0
  • Framework: Spring Boot 3.4.4
  • Runtime: JDK 21

Application Flowchart


🛢️ In-Memory DB

  • Redis
    • Cluster / Sharding 구성 (확장 가능)
    • 자료구조 활용:
      • Processed (SET): Processed 사용자 관리 / 이미 입장 완료한 사용자 기록
      • Queueing (Sorted Set - ZSET): 대기열 관리 (순번, ETA 계산)
      • Count (KEY): 대기자 수 카운팅

⚙️ CI/CD

  • GitHub Webhooks : main Branch 감지 후 자동 배포
  • Jenkins : Build / Deploy 자동화

CI/CD Pipeline


🧩 Infrastructure

  • Kubernetes (예정) : 대기열 서비스 Pod 배포 및 관리 (이미지 배포 예정)
  • Auto Scaling : 트래픽 폭주 대응
  • Prometheus + Grafana : 자원 모니터링

Cloud Architecture Base


📈 Benchmark

  • nGrinder : 부하 테스트 진행
    • 10만 사용자 동시 접속 시 대기열 처리 성능 검증

📄 프로젝트 설명

본 프로젝트는 대규모 트래픽 상황에서도

  • 사용자 순번 대기
  • 처리 완료
  • ETA 예측
  • 자동 확장(AutoScaling)

이 모두를 지원하는 고성능 Queue 시스템 구축을 목표로 하였습니다.

10만 명 이상 동시 접속 처리 가능
Redis Cluster를 통한 확장성 보장
MSA 구조 + Monitoring 통합


📈 Performance Test (nGrinder)

본 프로젝트의 대기열 서비스 성능을 검증하기 위해 nGrinder를 사용하여 부하 테스트를 진행하였습니다.

📋 테스트 요약

항목 결과
총 가상 사용자 (Vuser) 6,000명 (에이전트 당 2,000명)
테스트 에이전트 수 3개 (4vCPU / 8GB RAM)
프로세스 / 쓰레드 수 10 / 200 (에이전트 당 2,000개의 쓰레드)
테스트 총 실행 수 7,411,514건
성공한 요청 수 7,411,473건
에러 수 41건
TPS (Transactions Per Second) 평균 12,775 TPS
최고 TPS 14,558 TPS
평균 응답 시간 416.93 ms
평균 첫 바이트 응답 시간 414.17 ms
테스트 기간 10분

성공률 약 99.999%
최대 14,558 TPS 처리 성능
평균 응답 시간 416ms 수준으로 처리


🖼️ 테스트 환경

  • Platform : NAVER CLOUD PLATFORM (Ncloud)
    • Application Server
      • OS : Rocky Linux 9.4 (64bit)
      • Spec : 4vCPU, 8GB RAM
      • Storage : SSD 100 GB
    • Database Server (In-Memory)
      • OS : Rocky Linux 9.4 (64bit)
      • Spec : 2vCPU, 4GB RAM
      • Storage : SSD 100 GB

Comment
RedisSingle Thread로 동작하는 특성에 따라 CPU 개수가 적은 사양 선택
또한, Redis 상 저장하는 데이터도 최소화하여 Memory도 낮은 사양을 선택

  • 사용자 당 최대 UUID v7 + Unix Timestamp까지 50 Byte로 예상되며,
    100만 명 기준으로 사용자 인원 추산 시 최대 50 MByte 이하로 예상

🛠 테스트 도구

  • nGrinder v3.5.9-p1 사용
  • 에이전트 3개 분산
  • 부하 분산 테스트 스크립트 작성 및 적용

📈 테스트 진행 흐름

  1. 초기 대기열 서비스 세팅
  2. 다수 사용자(가상 유저) 동시 접속 부하 생성
  3. 요청 성공률 및 평균 응답 시간 기록
  4. TPS(초당 처리량) 추적 및 최고 처리량 측정

📊 결과 요약 그래프

TPS (Transactions Per Second) nGrinder TPS

MTT (Mean Test Time) nGrinder MTT

MTTFB (Mean Test Time First Byte) nGrinder MTTFB

Virtual Users nGrinder Virtual Users

Errors nGrinder Errors


About

Queueing Service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •