추석 트래픽을 미리 겪어보기: k6·Locust 부하 테스트로 한계 찾는 법

🤖 AI Summary
서비스가 언제 무너지는지는 실제로 몰리기 전에는 알기 어렵습니다. 부하 테스트는 실제 트래픽과 비슷한 가상 요청을 만들어, 우리 시스템이 어디까지 견디고 어느 지점에서 느려지거나 실패하는지 미리 확인하는 시험이에요. 대표적인 오픈소스 도구가 k6와 Locust입니다. k6는 자바스크립트로 스크립트를 짜고 명령줄에서 돌리며 임계값으로 합격·불합격을 가르고, Locust는 파이썬으로 사용자 행동을 정의하고 웹 화면에서 부하를 조절하죠. 봐야 할 지표는 초당 요청 수, 응답시간의 95·99 백분위수, 에러율입니다. 이 글은 부하 테스트가 왜 지금 필요한지, 무엇을 측정하는지, 두 도구를 어떻게 고르는지, 흔한 실수는 무엇인지를 정리합니다.
블로그 목차
부하 테스트가 왜 지금 필요한가요?
추석이나 연말처럼 트래픽이 갑자기 몰리는 시기가 예정돼 있기 때문입니다. 평소에는 멀쩡하던 서비스도 방문자가 몇 배로 늘면 응답이 느려지고, 어느 선을 넘으면 오류를 쏟아내기 시작하죠. 문제는 그 한계선이 어디인지 평소에는 보이지 않는다는 점이에요.
부하 테스트는 이 한계선을 사고가 나기 전에 미리 확인하는 방법입니다. 명절 당일 실제 사용자가 몰려서 알게 되는 대신, 조용한 시간에 가상 사용자를 만들어 같은 상황을 재현해 보는 것이죠. 한계를 알면 준비가 구체적이 됩니다. 서버를 더 붙일지, 캐시를 손볼지, 병목이 되는 쿼리를 고칠지 판단할 근거가 생기니까요.

부하 테스트는 무엇을 측정하나요?
핵심 지표는 세 가지입니다. 초당 요청 수, 응답시간, 에러율이죠. 이 세 가지를 부하를 올려 가면서 함께 관찰합니다.
초당 요청 수(RPS)는 시스템이 단위 시간에 처리한 요청의 양입니다. 응답시간은 사용자가 기다린 시간인데, 평균만 보면 위험합니다. 대부분 빠르더라도 일부 사용자가 아주 느리게 겪는 지연은 평균에 묻히기 때문이에요. 그래서 95 백분위수(p95), 99 백분위수(p99)를 함께 봅니다. p95가 2초라면 100명 중 5명은 2초보다 더 기다렸다는 뜻이죠. 에러율은 실패한 요청의 비율입니다. 부하가 임계점을 넘으면 응답시간이 치솟고 에러율이 따라 오르는데, 바로 그 지점이 우리가 찾는 한계선입니다.
k6와 Locust는 어떻게 다른가요?
둘 다 무료로 쓰는 오픈소스 부하 테스트 도구지만, 스크립트 언어와 조작 방식이 다릅니다. 팀에 익숙한 언어와 운영 방식에 맞춰 고르면 됩니다.
구분 | k6 | Locust |
|---|---|---|
스크립트 언어 | 자바스크립트 | 파이썬 |
실행·조작 | 명령줄(CLI) 중심 | 웹 UI로 실시간 조절 |
합격 기준 | 임계값(thresholds)으로 자동 판정 | 지표 관찰 후 직접 판단 |
대규모 부하 | 단일 실행에 강함 | 여러 대로 분산 실행에 강함 |
잘 맞는 경우 | CI 파이프라인에 자동화하고 싶을 때 | 복잡한 사용자 시나리오를 유연하게 짤 때 |
정답은 없습니다. 자바스크립트가 익숙하고 배포 파이프라인에 성능 검증을 넣고 싶다면 k6가 편하고, 파이썬으로 사용자 흐름을 세밀하게 그리고 웹 화면에서 부하를 올렸다 내렸다 하고 싶다면 Locust가 잘 맞아요.

실제로 어떻게 시작하나요?
순서는 단순합니다. 시나리오를 정하고, 부하를 서서히 올리고, 지표를 보며 반복하는 흐름이에요.
먼저 어떤 사용자 행동을 재현할지 정합니다. 첫 화면 접속만 볼지, 로그인부터 결제까지 이어지는 흐름을 볼지에 따라 결과가 달라지니까요. 다음으로 부하를 한 번에 올리지 않고 서서히 늘리는 램프업(ramp-up)으로 설계합니다. 그래야 어느 지점에서 꺾이는지가 또렷하게 보여요. 부하를 올리는 동안 초당 요청 수, p95·p99 응답시간, 에러율을 함께 지켜보고, 꺾이는 구간이 나오면 그 앞에서 무엇이 병목인지 살핍니다. 데이터베이스 연결일 수도, 특정 API일 수도 있죠. 병목을 손보고 같은 테스트를 다시 돌려 한계선이 올라갔는지 확인합니다. 이 측정과 개선을 반복하는 것이 부하 테스트의 본질입니다.
부하 테스트에서 흔한 실수는 무엇인가요?
가장 위험한 실수는 프로덕션 환경에 그대로 부하를 거는 것입니다. 실제 사용자가 그 여파를 고스란히 겪을 수 있어, 스테이징 환경이나 트래픽이 적은 시간대에 통제된 범위로 진행해야 안전해요.
그다음 흔한 실수는 부하를 만드는 쪽의 한계를 간과하는 것입니다. 테스트를 돌리는 한 대의 장비가 먼저 지쳐 버리면, 정작 대상 서버가 아니라 부하 생성기의 성능을 측정하게 되죠. 큰 부하가 필요하면 여러 대로 분산해야 합니다. 마지막으로 비현실적인 시나리오도 문제입니다. 실제 사용자는 캐시가 데워진 상태에서 다양한 경로로 들어오는데, 같은 요청만 반복하면 실제보다 좋게 나옵니다. 테스트는 언제나 진짜 트래픽에 가깝게 설계할수록 믿을 만한 답을 줍니다.
이것만 기억하세요
부하 테스트는 트래픽이 몰리기 전에 우리 인프라의 한계선을 미리 확인하는 시험입니다. k6는 자바스크립트와 명령줄, 임계값 판정으로 CI 자동화에 강하고, Locust는 파이썬과 웹 UI, 분산 실행으로 복잡한 시나리오에 유연합니다. 초당 요청 수와 응답시간의 95·99 백분위수, 에러율을 함께 보고, 프로덕션 직접 테스트와 비현실적 시나리오는 피하는 것이 핵심입니다.
자주 묻는 질문 (FAQ)
Q. 부하 테스트가 무엇인가요?
실제 트래픽과 비슷한 가상 요청을 인위적으로 만들어, 시스템이 어느 지점까지 견디고 어디서 느려지거나 실패하는지 미리 확인하는 시험입니다.
Q. k6와 Locust 중 무엇을 골라야 하나요?
자바스크립트가 익숙하고 CI 파이프라인에 넣고 싶다면 k6, 파이썬으로 복잡한 사용자 시나리오를 짜고 웹 UI로 조절하고 싶다면 Locust가 잘 맞습니다.
Q. 어떤 지표를 봐야 하나요?
초당 요청 수(RPS), 응답시간의 95·99 백분위수, 에러율을 함께 봐야 합니다. 평균만 보면 일부 사용자가 겪는 지연을 놓칩니다.
Q. 프로덕션 서버에 바로 테스트해도 되나요?
권장하지 않습니다. 실제 사용자에게 영향을 줄 수 있어, 스테이징 환경이나 트래픽이 적은 시간대에 통제된 범위로 진행하는 것이 안전합니다.
Q. 언제 부하 테스트를 해야 하나요?
추석이나 연말처럼 트래픽 급증이 예상되는 이벤트 전, 그리고 인프라나 코드에 큰 변경이 있은 뒤에 하는 것이 효과적입니다.



