몰릴 때 버티나 미리 시험

손님이 한꺼번에 몰리는 상황을 일부러 만들어 보고, 어디가 먼저 부러지는지 숫자로 확인하는 점검이에요. 큰 프로모션을 열기 전에 하면 준비가 되고, 열고 나서 알면 그건 이미 사고예요.

쉽게 말하면

개업 전날 밤에 직원과 지인을 전부 불러다 손님인 척 한꺼번에 계산대로 보내 보는 리허설이 있어요. 몇 명째부터 줄이 문밖으로 나가는지, 봉투가 몇 장에서 떨어지는지, 카드 단말기가 몇 번째에서 먹통이 되는지를 미리 세어 보는 거예요. 몰릴 때 버티나 미리 시험(부하 테스트) 이 딱 그 리허설이에요. 진짜 손님이 오기 전에, 손님인 척하는 요청을 잔뜩 만들어 서비스에 부어 봐요.

여기서 재는 건 빠르기가 아니라 몇 명까지예요. 혼자 열었을 때 1초에 뜨는 화면이 200명이 동시에 열면 20초가 되기도 해요. 같은 코드인데도요.

안 재고 여는 경우
전단지 5천 장을 돌리고 나서 서비스가 버티는지 실전에서 확인

가장 손님이 많은 30분에 처음 알게 돼요. 그 30분은 다시 오지 않고, 그날 못 받은 주문은 나중에 고쳐도 돌아오지 않아요.

미리 재는 경우
전단지를 돌리기 한 주 전에 연습 무대에 요청을 몰아 넣어 한계를 확인

부러지는 지점과 그때의 증상을 미리 알아요. 넓힐지, 줄을 세울지, 홍보 시간을 나눌지를 여유 있게 고를 수 있어요.

무엇을 재는 건가요

"버틴다"는 느낌은 점검 결과가 될 수 없어요. 아래 다섯 가지 숫자가 실제로 보고서에 적히는 것들이고, 외주 견적서와 호스팅 업체 자료에도 그대로 나와요.

보고서에 적히는 말무슨 뜻인가사장님 가게로 치면
동시 사용자같은 시각에 서비스를 쓰고 있는 사람 수예요. 하루 방문자와 전혀 다른 숫자예요지금 가게 안에 들어와 있는 손님 수
초당 요청 수1초에 서버가 받는 부탁의 개수예요. 한 사람이 화면 한 장을 열어도 부탁은 여러 번 갈 수 있어요계산대에 1초마다 들어오는 주문 장수
응답 시간부탁 하나가 답을 받기까지 걸린 시간이에요. 손님이 체감하는 느림이 이거예요주문하고 물건 받기까지 걸린 시간
p95 · p99느린 쪽 5%와 1%가 얼마나 느렸는지예요. 평균이 아니라 가장 답답했던 손님의 시간이에요제일 오래 기다린 스무 명 중 한 명의 대기 시간
실패율답을 아예 못 받은 부탁의 비율이에요. 오류 화면이나 빈 화면으로 보여요그냥 나가 버린 손님의 비율
한계 지점숫자를 올리다가 응답 시간이 갑자기 꺾이는 그 지점이에요. 이 시험의 진짜 목적이에요줄이 문밖으로 나가기 시작하는 손님 수

평균에 속지 마세요

평균 응답 1초는 좋아 보여요. 그런데 스무 명 중 열아홉 명이 0.2초, 한 명이 16초여도 평균은 1초 근처예요. 떠나는 사람은 그 한 명이에요. 보고서를 받으면 평균 말고 p95 를 물어보세요. 이 한 마디로 대화의 급이 달라져요.

실제로 하는 순서

요청을 무작정 많이 쏘는 게 아니에요. 한 가지 길을, 조금씩 올리면서, 꺾이는 지점을 찾는 것이 전부예요.

  1. 1목표를 숫자로 적어요. "프로모션 첫 10분에 동시 300명, 그때도 화면이 3초 안에" 처럼요. 목표가 없으면 결과를 보고도 통과인지 실패인지 못 정해요. 이 숫자를 뽑는 법이 얼마나 준비해 둘까예요.
  2. 2시험할 길을 하나 골라요. 손님이 실제로 몰리는 길이어야 해요. 보통은 첫 화면이 아니라 상품 페이지에서 결제까지예요.
  3. 3연습 무대에 실서버와 같은 규모를 준비해요. 절반 크기에서 잰 숫자는 그대로 두 배가 되지 않아요. 손님 안 보는 연습 무대에서 하는 게 원칙이에요.
  4. 4사람 수를 계단처럼 올려요. 50명, 100명, 200명 식으로 올리면서 각 단계를 몇 분씩 유지해요. 한 번에 최고치를 때리면 어디서 꺾였는지 알 수 없어요.
  5. 5꺾이는 순간의 화면과 기록을 같이 봐요. 응답 시간이 튀는 그 시각에 서버 기록에 무엇이 남았는지가 원인이에요. 서비스 상태 지켜보기가 켜져 있어야 이걸 볼 수 있어요.
  6. 6한 군데만 고치고 다시 재요. 두 군데를 같이 고치면 무엇이 효과였는지 영영 몰라요. 고치기 전 숫자를 반드시 남겨 두세요.

실서버에 그냥 쏘면 안 돼요

실서버에 부하를 부으면 그 시간에 온 진짜 손님이 피해를 봐요. 시험용 주문과 회원이 실제 장부에 섞이기도 하고요. 게다가 호스팅 업체와 보안 장비가 이걸 공격으로 보고 차단하는 경우가 있어요. 하기 전에 쓰는 업체의 정책을 한 번 확인하고, 결제는 반드시 테스트용 키로 두세요.

결과를 읽는 법

부러지는 자리는 아무 데나가 아니에요. 증상마다 범인이 거의 정해져 있어서, 결과지 한 장으로 다음에 무엇을 손댈지가 정해져요.

시험에서 본 증상대개 좁은 곳다음에 볼 것
사람 수를 올리자 응답 시간만 길어지고 실패는 없어요일이 밀려서 줄을 서고 있어요. 처리하는 손이 부족한 상태예요무거운 일을 뒤로 미루는 일감 줄 세우기
특정 화면 하나만 유독 느려져요그 화면이 자료를 훑는 방식이 무거워요. 손님이 적을 땐 티가 안 나요색인으로 그 화면만 먼저 손보기
일정 수를 넘자 오류가 한꺼번에 쏟아져요연결 개수나 요청 한도 같은 정해진 상한에 닿았어요손님이 몰릴 때 버티기에서 좁은 목 넓히기
이미지와 첫 화면이 느려요같은 파일을 매번 멀리서 꺼내 오고 있어요가까운 창고에서 꺼내기 · 다시 안 만들고 꺼내 쓰기
외부 회사에 붙는 기능에서만 막혀요내 서버가 아니라 남의 한도예요. 결제·문자·지도 같은 것들이에요기다리다 포기하고 다시 걸기 규칙 정하기
숫자를 이렇게 읽으면
"동시 500명까지 통과" 한 줄만 받고 결과지를 닫음

몇 분을 유지했는지, 어떤 길을 밟았는지, p95 가 얼마였는지가 빠져 있어요. 30초 통과와 30분 통과는 완전히 다른 이야기예요.

이렇게 읽으면
"결제까지 가는 길, 동시 500명 30분 유지, p95 2.4초, 실패 0.1%, 620명에서 꺾임"

꺾이는 지점과 그때의 증상이 같이 있어요. 홍보 규모를 정할 때 이 숫자가 그대로 근거가 돼요.

현장에서 실제로 나는 일

장면 1 · 외주 개발자가 말했다

동시 접속 만 명까지 문제없습니다.

이 문장만으로는 아무것도 확인할 수 없어요. 되물을 말은 셋이에요. 어떤 길을 밟았나요, 몇 분 유지했나요, 그때 p95 와 실패율이 얼마였나요. 첫 화면만 열어 보는 시험이면 만 명은 쉽게 나와요. 결제까지 밟는 길은 보통 그 숫자의 일부에서 꺾여요.

장면 2 · 문자 발송 업체 담당자가 말했다

그 시간대 발송 요청이 발송사 초당 한도를 넘어서 뒤쪽이 버려졌습니다.

서버는 멀쩡했는데 손님은 인증 문자를 못 받은 경우예요. 몰림은 내 가게 안에서만 일어나지 않아요. 결제·문자·지도처럼 남의 회사에 붙는 곳마다 각자의 한도가 있어요. 시험 전에 붙어 있는 외부 회사 목록을 뽑고, 각 한도를 문의해 두는 게 순서예요.

  1. 1시험 자료가 실제 장부에 섞여요. 시험용 회원 3천 명이 실제 명단에 들어가면 골라내는 데 하루가 가요. 무대를 나누는 게 먼저예요.
  2. 2한 번 재고 끝내요. 기능을 더 붙이면 좁은 목이 옮겨 다녀요. 큰 프로모션 전마다 같은 시험을 다시 도는 게 값싼 방법이에요.
  3. 3고치고 나서 다시 안 재요. 고친 뒤 숫자가 없으면 나아졌는지 아무도 몰라요. 고치기 전과 후를 같은 조건으로 두 번 재야 그게 근거가 돼요.

화면 자동 점검과 뭐가 달라요

이름이 비슷한 점검이 여럿이라 헷갈리기 쉬워요. 묻는 질문이 다르다고 보면 한 번에 정리돼요.

점검묻는 질문언제 하나
부품 자동 점검계산 조각 하나가 맞게 나오나요코드를 고칠 때마다 기계가 자동으로
화면 자동 점검손님이 지나는 길이 끊기지 않았나요배포할 때마다
몰릴 때 버티나 미리 시험몇 명까지 그 길이 살아 있나요큰 홍보 전, 구조를 크게 바꾼 뒤
속도 점검손님 한 명이 얼마나 빨리 보나요화면이 느리다는 말을 들었을 때
서비스 상태 지켜보기지금 실제로 무슨 일이 있나요문 연 동안 늘

그래서 순서가 있어요. 길이 살아 있는지부터 확인하고(화면 자동 점검), 그 길에 사람을 몰아 보고(이 문서), 실제로 문을 연 뒤에는 지켜봐요(상태 지켜보기). 앞이 비어 있으면 뒤 숫자는 믿을 게 못 돼요. 끊긴 길에 사람을 몰아 봐야 나오는 건 오류뿐이에요.

안 해도 되는 때가 분명히 있어요

하루 손님 열 명인 서비스에 부하 시험은 시간 낭비예요. 필요해지는 신호는 셋이에요. 큰 홍보나 방송이 예정돼 있다 · 정해진 시각에 몰리는 판매를 연다 · 한 번에 몰려서 느려진 적이 이미 있다. 이 중 하나가 오면 그때 하세요. 그 전에는 상태 지켜보기를 켜 두는 편이 훨씬 값어치 있어요.

자주 묻는 것

Q. 동시 접속 몇 명을 목표로 잡아야 하나요?
감으로 잡지 않아요. 보내는 홍보의 규모에서 거꾸로 계산해요. 받는 사람 수, 그중 실제로 눌러 보는 비율, 그게 몰리는 시간대를 곱하면 나와요. 이 계산이 얼마나 준비해 둘까의 내용이에요. 목표 숫자가 먼저고 시험은 그다음이에요.
Q. 직접 할 수 있나요, 아니면 맡겨야 하나요?
요청을 만들어 주는 도구가 여럿 있어요. k6, JMeter, Locust 같은 이름을 견적서에서 보실 거예요. 다만 어려운 건 도구를 돌리는 일이 아니라 결과를 읽고 어디를 고칠지 정하는 일이에요. 처음 한 번은 같이 하면서 결과지 읽는 법을 배워 두면, 다음부터는 같은 조건으로 다시 돌리기만 하면 돼요.
Q. 연습 무대가 실서버보다 작은데 결과를 그대로 믿어도 되나요?
그대로 곱하면 안 돼요. 절반 규모에서 300명이 나왔다고 실서버가 600명인 건 아니에요. 작은 무대에서 얻는 값어치는 한계 숫자가 아니라 어디가 먼저 부러지는지예요. 좁은 목의 위치는 규모가 달라도 대체로 같은 곳이에요.
Q. 시험에서 통과했는데 실전에서 터졌어요. 왜죠?
가장 흔한 원인 셋이에요. 시험한 길과 손님이 실제로 간 길이 달랐거나, 유지 시간이 짧아 자료가 쌓인 뒤의 느려짐을 못 봤거나, 외부 회사의 한도에 걸렸거나예요. 사고 뒤에는 그 시각의 기록부터 확보하세요. 장애 났을 때의 첫 단계예요.
Q. 버티지 못한다는 결과가 나왔어요. 홍보를 미뤄야 하나요?
미루는 것 말고도 길이 있어요. 안내를 시간대로 나눠 보내기, 무거운 화면을 잠시 단순하게 바꾸기, 대기 안내 화면을 두기, 새 판을 한 번에 열지 않고 일부에게 먼저 여는 조금씩 열기가 있어요. 셋 다 서버를 키우는 것보다 싸고 빨라요.
Q. 바이브캠퍼스로 만들면 이걸 제가 해야 하나요?
만드는 동안에는 필요 없어요. 이 문서가 필요해지는 순간은 큰 홍보를 앞두고 목표 숫자를 정할 때, 그리고 개발자나 호스팅 업체가 보낸 결과지를 읽을 때예요. 그때 p95 와 유지 시간을 물어볼 수 있으면 충분해요.

확인해 보세요

받은 결과지에 "평균 응답 1.1초, 동시 500명 통과"라고만 적혀 있어요. 무엇을 먼저 물어야 할까요?

하나 더

다음 주 금요일 저녁에 할인 안내 문자를 보낼 계획이에요. 부하 시험은 어디서 해야 할까요?

직접 해보기

내 서비스에서 몰릴 때 위험한 곳부터 찾아보세요

스튜디오 대화창에 이렇게 그대로 붙여 넣어 보세요. "지금 만든 화면 중에서 손님이 한꺼번에 몰릴 때 가장 느려질 만한 곳을 순서대로 알려 주고, 그 이유를 한 줄씩 붙여 주세요." 목록을 받으면 그중 맨 위 한 곳이 이번 시험에서 밟아 볼 길이에요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

리허설 비유가 어디까지 맞고 어디부터 다른가 · "미리 손님인 척 몰아 본다"까지는 정확해요. 다른 점은 시험용 손님이 진짜 손님처럼 굴지 않는다는 거예요. 사람은 화면을 읽느라 몇 초 쉬고, 이미지를 한 번 받으면 다시 안 받아요. 시험 도구는 쉬는 시간 없이 같은 부탁만 반복하기 쉬워요. 그래서 결과가 실제보다 나쁘게 나오기도, 반대로 좋게 나오기도 해요. 시험 계획에 손님이 화면마다 몇 초 머무는지를 넣어 달라고 요청하는 이유가 이거예요.

부러지는 지점은 왜 갑자기 오나 · 손님이 두 배 늘면 느려짐도 두 배일 것 같지만 실제로는 그렇지 않아요. 처리할 손이 여유 있는 동안에는 사람이 늘어도 시간이 거의 그대로예요. 그러다 손이 다 차는 순간부터는 뒤에 온 부탁이 줄을 서기 시작하고, 대기 줄은 사람이 조금만 더 와도 급하게 길어져요. 그래서 그래프가 완만하다가 한 지점에서 꺾여요. 이 꺾이는 지점을 찾는 게 이 시험의 전부예요.

몰림에는 두 가지 모양이 있어요 · 정해진 시각에 안내를 보내서 생기는 몰림은 아주 짧고 뾰족해요. 방송이나 검색으로 생기는 몰림은 낮고 길어요. 대비법이 달라요. 뾰족한 쪽은 대기 줄과 일감 줄 세우기로 넘길 수 있고, 긴 쪽은 결국 넓히는 일이 필요해요. 시험할 때 어느 모양을 흉내 낼 것인지 먼저 정하고 시작하세요.

이것만 기억하세요

  • ·이 시험이 재는 건 빠르기가 아니라 몇 명까지예요. 목표 숫자를 먼저 정하고 시작해요
  • ·결과지에서 평균 말고 p95, 유지 시간, 밟은 길을 물어보세요. 이 셋이 없으면 통과인지 알 수 없어요
  • ·실서버 말고 연습 무대에서, 결제는 테스트용 키로 해요. 진짜 손님과 실제 장부를 지켜야 해요
  • ·몰림은 내 서버 밖에서도 나요. 결제·문자처럼 남의 회사에 붙는 곳의 한도를 미리 물어 두세요
  • ·손님이 하루 열 명이면 안 해도 돼요. 큰 홍보나 정해진 시각의 판매가 생기면 그때가 할 때예요
VibeCampus新建作品