대규모 사용자 대기열 처리를 위한 고성능 Queueing 서비스
| 이름 | 역할 |
|---|---|
| Cloud | 백엔드 개발 |
| Chance | 인프라 및 모니터링 구축 |
- Language: Kotlin 2.0.0
- Framework: Spring Boot 3.4.4
- Runtime: JDK 21
- Redis
- Cluster / Sharding 구성 (확장 가능)
- 자료구조 활용:
- Processed (SET): Processed 사용자 관리 / 이미 입장 완료한 사용자 기록
- Queueing (Sorted Set - ZSET): 대기열 관리 (순번, ETA 계산)
- Count (KEY): 대기자 수 카운팅
- GitHub Webhooks :
mainBranch 감지 후 자동 배포 - Jenkins : Build / Deploy 자동화
- Kubernetes (예정) : 대기열 서비스 Pod 배포 및 관리 (이미지 배포 예정)
- Auto Scaling : 트래픽 폭주 대응
- Prometheus + Grafana : 자원 모니터링
- nGrinder : 부하 테스트 진행
- 10만 사용자 동시 접속 시 대기열 처리 성능 검증
본 프로젝트는 대규모 트래픽 상황에서도
- 사용자 순번 대기
- 처리 완료
- ETA 예측
- 자동 확장(AutoScaling)
이 모두를 지원하는 고성능 Queue 시스템 구축을 목표로 하였습니다.
✅ 10만 명 이상 동시 접속 처리 가능
✅ Redis Cluster를 통한 확장성 보장
✅ MSA 구조 + Monitoring 통합
본 프로젝트의 대기열 서비스 성능을 검증하기 위해 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
- Application Server
Comment
Redis의Single Thread로 동작하는 특성에 따라CPU개수가 적은 사양 선택
또한,Redis상 저장하는 데이터도 최소화하여Memory도 낮은 사양을 선택
- 사용자 당 최대 UUID v7 + Unix Timestamp까지 50 Byte로 예상되며,
100만 명 기준으로 사용자 인원 추산 시 최대 50 MByte 이하로 예상
- nGrinder v3.5.9-p1 사용
- 에이전트 3개 분산
- 부하 분산 테스트 스크립트 작성 및 적용
- 초기 대기열 서비스 세팅
- 다수 사용자(가상 유저) 동시 접속 부하 생성
- 요청 성공률 및 평균 응답 시간 기록
- TPS(초당 처리량) 추적 및 최고 처리량 측정









