어플리케이션을 개발하거나 운영할 때 흔히 마주치는 질문 중 하나는 “동시 접속자를 몇 명으로 제한해야 할까?”입니다. 이는 단순한 기술 설정이 아니라, 트래픽 예측, 인프라 용량, 사용자 경험까지 고려해야 하는 중요한 결정입니다. 이번 글에서는 실제 설정 과정과 함께 계산 예제, 일 사용자 수 추정 방법까지 순차적으로 정리해보았습니다.
동시 접속자 수란?
동시 접속자 수(concurrent users)는 특정 시점에 어플리케이션에 동시에 접속해 있는 사용자 수를 의미합니다. 예를 들어 하루 동안 1만 명이 접속해도, 특정 시간에 동시에 100명만 접속해 있다면 동시 접속자는 100명입니다. 이 수치는 서버 용량, DB 커넥션, 네트워크 자원 등을 고려한 인프라 설계의 핵심 기준이 됩니다.
동시 접속자 수를 어떻게 정할까?
먼저 서비스의 성격을 파악해야 합니다. 실시간성이 중요한 서비스인지, 사용자의 체류 시간이 긴 편인지, 피크 타임이 정해져 있는지도 확인해야 합니다. 그 다음에는 일일 사용자 수(DAU), 피크 시간대 비율, 평균 체류 시간을 바탕으로 예측 가능한 동시 접속자 수를 계산할 수 있습니다. 이후 성능 테스트를 통해 인프라가 감당 가능한 수준을 파악하고, 기술적 한계나 비용을 고려해 최종 수치를 정하게 됩니다.
계산 예제: 동시 접속자 수 추정
하루에 약 5,000명의 사용자가 접속하고, 이 중 20%가 오전 11시~12시 사이에 집중된다고 가정해보겠습니다. 피크 시간대 접속자는 약 1,000명이며, 한 명당 평균 체류 시간이 10분이라면 다음과 같이 계산할 수 있습니다.
1,000명 × (10분 ÷ 60분) = 약 166명
즉, 피크 시간대에는 약 166명이 동시에 접속할 수 있습니다. 여기에 트래픽 급증 등을 고려해 30% 정도의 여유를 두면 약 216명 정도가 됩니다. 이 숫자가 바로 기술적으로 고려해야 할 최소한의 동시 접속자 수 한계가 됩니다.
일일 사용자 수는 어떻게 구할까?
일일 사용자 수는 서버 로그 데이터를 통해 확인할 수 있습니다. 접속 로그에 사용자 ID와 접속 시간이 기록되어 있다면, 다음과 같은 SQL로 집계할 수 있습니다.
SELECT COUNT(DISTINCT user_id)
FROM user_logs
WHERE event_time::date = CURRENT_DATE;
최근 한 달간의 DAU 추이를 보고 싶다면 다음과 같이 쿼리를 작성할 수 있습니다.
SELECT event_time::date AS day,
COUNT(DISTINCT user_id) AS dau
FROM user_logs
WHERE event_time >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY day
ORDER BY day;
로그인 기반 식별자가 없다면 IP 주소나 브라우저 정보로 대체할 수도 있지만, 정확도가 떨어질 수 있습니다. 가능하다면 user_id 같은 고유 식별자를 기준으로 집계하는 것이 바람직합니다.
마무리하며
동시 접속자 수 제한은 단순한 설정값이 아니라, 서비스 성격과 사용자의 행동 패턴, 인프라 상황 등을 종합적으로 고려해 정해야 합니다. 처음에는 보수적으로 시작한 뒤, 실제 트래픽 추이를 모니터링하면서 점진적으로 조정하는 전략이 일반적입니다. 필요하다면 실시간 모니터링 도구나 대기열 시스템도 함께 도입하는 것이 좋습니다.
'개발 (Development) > General' 카테고리의 다른 글
[General] 테스트 커버리지 작성 방법과 측정 도구 활용법 (2) | 2025.08.03 |
---|---|
[General] UI 평균 응답시간 측정 방법 정리 (4) | 2025.08.03 |
[General] 파라미터 이름에서 특수문자를 제거해야 했던 이유 (6) | 2025.07.20 |
[General] Windows에서 Plane 서비스 Docker로 로컬 실행하기 (1) | 2025.06.28 |
[General] Data Model 문서와 인터페이스 정의 문서 (0) | 2025.04.12 |