몰릴 때 버티나 미리 시험
손님이 한꺼번에 몰리는 상황을 일부러 만들어 보고, 어디가 먼저 부러지는지 숫자로 확인하는 점검이에요. 큰 프로모션을 열기 전에 하면 준비가 되고, 열고 나서 알면 그건 이미 사고예요.
쉽게 말하면
개업 전날 밤에 직원과 지인을 전부 불러다 손님인 척 한꺼번에 계산대로 보내 보는 리허설이 있어요. 몇 명째부터 줄이 문밖으로 나가는지, 봉투가 몇 장에서 떨어지는지, 카드 단말기가 몇 번째에서 먹통이 되는지를 미리 세어 보는 거예요. 몰릴 때 버티나 미리 시험(부하 테스트) 이 딱 그 리허설이에요. 진짜 손님이 오기 전에, 손님인 척하는 요청을 잔뜩 만들어 서비스에 부어 봐요.
여기서 재는 건 빠르기가 아니라 몇 명까지예요. 혼자 열었을 때 1초에 뜨는 화면이 200명이 동시에 열면 20초가 되기도 해요. 같은 코드인데도요.
가장 손님이 많은 30분에 처음 알게 돼요. 그 30분은 다시 오지 않고, 그날 못 받은 주문은 나중에 고쳐도 돌아오지 않아요.
부러지는 지점과 그때의 증상을 미리 알아요. 넓힐지, 줄을 세울지, 홍보 시간을 나눌지를 여유 있게 고를 수 있어요.
무엇을 재는 건가요
"버틴다"는 느낌은 점검 결과가 될 수 없어요. 아래 다섯 가지 숫자가 실제로 보고서에 적히는 것들이고, 외주 견적서와 호스팅 업체 자료에도 그대로 나와요.
| 보고서에 적히는 말 | 무슨 뜻인가 | 사장님 가게로 치면 |
|---|---|---|
| 동시 사용자 | 같은 시각에 서비스를 쓰고 있는 사람 수예요. 하루 방문자와 전혀 다른 숫자예요 | 지금 가게 안에 들어와 있는 손님 수 |
| 초당 요청 수 | 1초에 서버가 받는 부탁의 개수예요. 한 사람이 화면 한 장을 열어도 부탁은 여러 번 갈 수 있어요 | 계산대에 1초마다 들어오는 주문 장수 |
| 응답 시간 | 부탁 하나가 답을 받기까지 걸린 시간이에요. 손님이 체감하는 느림이 이거예요 | 주문하고 물건 받기까지 걸린 시간 |
| p95 · p99 | 느린 쪽 5%와 1%가 얼마나 느렸는지예요. 평균이 아니라 가장 답답했던 손님의 시간이에요 | 제일 오래 기다린 스무 명 중 한 명의 대기 시간 |
| 실패율 | 답을 아예 못 받은 부탁의 비율이에요. 오류 화면이나 빈 화면으로 보여요 | 그냥 나가 버린 손님의 비율 |
| 한계 지점 | 숫자를 올리다가 응답 시간이 갑자기 꺾이는 그 지점이에요. 이 시험의 진짜 목적이에요 | 줄이 문밖으로 나가기 시작하는 손님 수 |
평균에 속지 마세요
평균 응답 1초는 좋아 보여요. 그런데 스무 명 중 열아홉 명이 0.2초, 한 명이 16초여도 평균은 1초 근처예요. 떠나는 사람은 그 한 명이에요. 보고서를 받으면 평균 말고 p95 를 물어보세요. 이 한 마디로 대화의 급이 달라져요.
실제로 하는 순서
요청을 무작정 많이 쏘는 게 아니에요. 한 가지 길을, 조금씩 올리면서, 꺾이는 지점을 찾는 것이 전부예요.
- 1목표를 숫자로 적어요. "프로모션 첫 10분에 동시 300명, 그때도 화면이 3초 안에" 처럼요. 목표가 없으면 결과를 보고도 통과인지 실패인지 못 정해요. 이 숫자를 뽑는 법이 얼마나 준비해 둘까예요.
- 2시험할 길을 하나 골라요. 손님이 실제로 몰리는 길이어야 해요. 보통은 첫 화면이 아니라 상품 페이지에서 결제까지예요.
- 3연습 무대에 실서버와 같은 규모를 준비해요. 절반 크기에서 잰 숫자는 그대로 두 배가 되지 않아요. 손님 안 보는 연습 무대에서 하는 게 원칙이에요.
- 4사람 수를 계단처럼 올려요. 50명, 100명, 200명 식으로 올리면서 각 단계를 몇 분씩 유지해요. 한 번에 최고치를 때리면 어디서 꺾였는지 알 수 없어요.
- 5꺾이는 순간의 화면과 기록을 같이 봐요. 응답 시간이 튀는 그 시각에 서버 기록에 무엇이 남았는지가 원인이에요. 서비스 상태 지켜보기가 켜져 있어야 이걸 볼 수 있어요.
- 6한 군데만 고치고 다시 재요. 두 군데를 같이 고치면 무엇이 효과였는지 영영 몰라요. 고치기 전 숫자를 반드시 남겨 두세요.
실서버에 그냥 쏘면 안 돼요
실서버에 부하를 부으면 그 시간에 온 진짜 손님이 피해를 봐요. 시험용 주문과 회원이 실제 장부에 섞이기도 하고요. 게다가 호스팅 업체와 보안 장비가 이걸 공격으로 보고 차단하는 경우가 있어요. 하기 전에 쓰는 업체의 정책을 한 번 확인하고, 결제는 반드시 테스트용 키로 두세요.
결과를 읽는 법
부러지는 자리는 아무 데나가 아니에요. 증상마다 범인이 거의 정해져 있어서, 결과지 한 장으로 다음에 무엇을 손댈지가 정해져요.
| 시험에서 본 증상 | 대개 좁은 곳 | 다음에 볼 것 |
|---|---|---|
| 사람 수를 올리자 응답 시간만 길어지고 실패는 없어요 | 일이 밀려서 줄을 서고 있어요. 처리하는 손이 부족한 상태예요 | 무거운 일을 뒤로 미루는 일감 줄 세우기 |
| 특정 화면 하나만 유독 느려져요 | 그 화면이 자료를 훑는 방식이 무거워요. 손님이 적을 땐 티가 안 나요 | 색인으로 그 화면만 먼저 손보기 |
| 일정 수를 넘자 오류가 한꺼번에 쏟아져요 | 연결 개수나 요청 한도 같은 정해진 상한에 닿았어요 | 손님이 몰릴 때 버티기에서 좁은 목 넓히기 |
| 이미지와 첫 화면이 느려요 | 같은 파일을 매번 멀리서 꺼내 오고 있어요 | 가까운 창고에서 꺼내기 · 다시 안 만들고 꺼내 쓰기 |
| 외부 회사에 붙는 기능에서만 막혀요 | 내 서버가 아니라 남의 한도예요. 결제·문자·지도 같은 것들이에요 | 기다리다 포기하고 다시 걸기 규칙 정하기 |
몇 분을 유지했는지, 어떤 길을 밟았는지, p95 가 얼마였는지가 빠져 있어요. 30초 통과와 30분 통과는 완전히 다른 이야기예요.
꺾이는 지점과 그때의 증상이 같이 있어요. 홍보 규모를 정할 때 이 숫자가 그대로 근거가 돼요.
현장에서 실제로 나는 일
장면 1 · 외주 개발자가 말했다
“동시 접속 만 명까지 문제없습니다.”
이 문장만으로는 아무것도 확인할 수 없어요. 되물을 말은 셋이에요. 어떤 길을 밟았나요, 몇 분 유지했나요, 그때 p95 와 실패율이 얼마였나요. 첫 화면만 열어 보는 시험이면 만 명은 쉽게 나와요. 결제까지 밟는 길은 보통 그 숫자의 일부에서 꺾여요.
장면 2 · 문자 발송 업체 담당자가 말했다
“그 시간대 발송 요청이 발송사 초당 한도를 넘어서 뒤쪽이 버려졌습니다.”
서버는 멀쩡했는데 손님은 인증 문자를 못 받은 경우예요. 몰림은 내 가게 안에서만 일어나지 않아요. 결제·문자·지도처럼 남의 회사에 붙는 곳마다 각자의 한도가 있어요. 시험 전에 붙어 있는 외부 회사 목록을 뽑고, 각 한도를 문의해 두는 게 순서예요.
- 1시험 자료가 실제 장부에 섞여요. 시험용 회원 3천 명이 실제 명단에 들어가면 골라내는 데 하루가 가요. 무대를 나누는 게 먼저예요.
- 2한 번 재고 끝내요. 기능을 더 붙이면 좁은 목이 옮겨 다녀요. 큰 프로모션 전마다 같은 시험을 다시 도는 게 값싼 방법이에요.
- 3고치고 나서 다시 안 재요. 고친 뒤 숫자가 없으면 나아졌는지 아무도 몰라요. 고치기 전과 후를 같은 조건으로 두 번 재야 그게 근거가 돼요.
화면 자동 점검과 뭐가 달라요
이름이 비슷한 점검이 여럿이라 헷갈리기 쉬워요. 묻는 질문이 다르다고 보면 한 번에 정리돼요.
| 점검 | 묻는 질문 | 언제 하나 |
|---|---|---|
| 부품 자동 점검 | 계산 조각 하나가 맞게 나오나요 | 코드를 고칠 때마다 기계가 자동으로 |
| 화면 자동 점검 | 손님이 지나는 길이 끊기지 않았나요 | 배포할 때마다 |
| 몰릴 때 버티나 미리 시험 | 몇 명까지 그 길이 살아 있나요 | 큰 홍보 전, 구조를 크게 바꾼 뒤 |
| 속도 점검 | 손님 한 명이 얼마나 빨리 보나요 | 화면이 느리다는 말을 들었을 때 |
| 서비스 상태 지켜보기 | 지금 실제로 무슨 일이 있나요 | 문 연 동안 늘 |
그래서 순서가 있어요. 길이 살아 있는지부터 확인하고(화면 자동 점검), 그 길에 사람을 몰아 보고(이 문서), 실제로 문을 연 뒤에는 지켜봐요(상태 지켜보기). 앞이 비어 있으면 뒤 숫자는 믿을 게 못 돼요. 끊긴 길에 사람을 몰아 봐야 나오는 건 오류뿐이에요.
안 해도 되는 때가 분명히 있어요
하루 손님 열 명인 서비스에 부하 시험은 시간 낭비예요. 필요해지는 신호는 셋이에요. 큰 홍보나 방송이 예정돼 있다 · 정해진 시각에 몰리는 판매를 연다 · 한 번에 몰려서 느려진 적이 이미 있다. 이 중 하나가 오면 그때 하세요. 그 전에는 상태 지켜보기를 켜 두는 편이 훨씬 값어치 있어요.
자주 묻는 것
- Q. 동시 접속 몇 명을 목표로 잡아야 하나요?
- 감으로 잡지 않아요. 보내는 홍보의 규모에서 거꾸로 계산해요. 받는 사람 수, 그중 실제로 눌러 보는 비율, 그게 몰리는 시간대를 곱하면 나와요. 이 계산이 얼마나 준비해 둘까의 내용이에요. 목표 숫자가 먼저고 시험은 그다음이에요.
- Q. 직접 할 수 있나요, 아니면 맡겨야 하나요?
- 요청을 만들어 주는 도구가 여럿 있어요. k6, JMeter, Locust 같은 이름을 견적서에서 보실 거예요. 다만 어려운 건 도구를 돌리는 일이 아니라 결과를 읽고 어디를 고칠지 정하는 일이에요. 처음 한 번은 같이 하면서 결과지 읽는 법을 배워 두면, 다음부터는 같은 조건으로 다시 돌리기만 하면 돼요.
- Q. 연습 무대가 실서버보다 작은데 결과를 그대로 믿어도 되나요?
- 그대로 곱하면 안 돼요. 절반 규모에서 300명이 나왔다고 실서버가 600명인 건 아니에요. 작은 무대에서 얻는 값어치는 한계 숫자가 아니라 어디가 먼저 부러지는지예요. 좁은 목의 위치는 규모가 달라도 대체로 같은 곳이에요.
- Q. 시험에서 통과했는데 실전에서 터졌어요. 왜죠?
- 가장 흔한 원인 셋이에요. 시험한 길과 손님이 실제로 간 길이 달랐거나, 유지 시간이 짧아 자료가 쌓인 뒤의 느려짐을 못 봤거나, 외부 회사의 한도에 걸렸거나예요. 사고 뒤에는 그 시각의 기록부터 확보하세요. 장애 났을 때의 첫 단계예요.
- Q. 버티지 못한다는 결과가 나왔어요. 홍보를 미뤄야 하나요?
- 미루는 것 말고도 길이 있어요. 안내를 시간대로 나눠 보내기, 무거운 화면을 잠시 단순하게 바꾸기, 대기 안내 화면을 두기, 새 판을 한 번에 열지 않고 일부에게 먼저 여는 조금씩 열기가 있어요. 셋 다 서버를 키우는 것보다 싸고 빨라요.
- Q. 바이브캠퍼스로 만들면 이걸 제가 해야 하나요?
- 만드는 동안에는 필요 없어요. 이 문서가 필요해지는 순간은 큰 홍보를 앞두고 목표 숫자를 정할 때, 그리고 개발자나 호스팅 업체가 보낸 결과지를 읽을 때예요. 그때 p95 와 유지 시간을 물어볼 수 있으면 충분해요.
확인해 보세요
받은 결과지에 "평균 응답 1.1초, 동시 500명 통과"라고만 적혀 있어요. 무엇을 먼저 물어야 할까요?
하나 더
다음 주 금요일 저녁에 할인 안내 문자를 보낼 계획이에요. 부하 시험은 어디서 해야 할까요?
직접 해보기
내 서비스에서 몰릴 때 위험한 곳부터 찾아보세요
스튜디오 대화창에 이렇게 그대로 붙여 넣어 보세요. "지금 만든 화면 중에서 손님이 한꺼번에 몰릴 때 가장 느려질 만한 곳을 순서대로 알려 주고, 그 이유를 한 줄씩 붙여 주세요." 목록을 받으면 그중 맨 위 한 곳이 이번 시험에서 밟아 볼 길이에요.
스튜디오 열기더 깊이 (안 읽어도 괜찮아요)
리허설 비유가 어디까지 맞고 어디부터 다른가 · "미리 손님인 척 몰아 본다"까지는 정확해요. 다른 점은 시험용 손님이 진짜 손님처럼 굴지 않는다는 거예요. 사람은 화면을 읽느라 몇 초 쉬고, 이미지를 한 번 받으면 다시 안 받아요. 시험 도구는 쉬는 시간 없이 같은 부탁만 반복하기 쉬워요. 그래서 결과가 실제보다 나쁘게 나오기도, 반대로 좋게 나오기도 해요. 시험 계획에 손님이 화면마다 몇 초 머무는지를 넣어 달라고 요청하는 이유가 이거예요.
부러지는 지점은 왜 갑자기 오나 · 손님이 두 배 늘면 느려짐도 두 배일 것 같지만 실제로는 그렇지 않아요. 처리할 손이 여유 있는 동안에는 사람이 늘어도 시간이 거의 그대로예요. 그러다 손이 다 차는 순간부터는 뒤에 온 부탁이 줄을 서기 시작하고, 대기 줄은 사람이 조금만 더 와도 급하게 길어져요. 그래서 그래프가 완만하다가 한 지점에서 꺾여요. 이 꺾이는 지점을 찾는 게 이 시험의 전부예요.
몰림에는 두 가지 모양이 있어요 · 정해진 시각에 안내를 보내서 생기는 몰림은 아주 짧고 뾰족해요. 방송이나 검색으로 생기는 몰림은 낮고 길어요. 대비법이 달라요. 뾰족한 쪽은 대기 줄과 일감 줄 세우기로 넘길 수 있고, 긴 쪽은 결국 넓히는 일이 필요해요. 시험할 때 어느 모양을 흉내 낼 것인지 먼저 정하고 시작하세요.
이것만 기억하세요
- ·이 시험이 재는 건 빠르기가 아니라 몇 명까지예요. 목표 숫자를 먼저 정하고 시작해요
- ·결과지에서 평균 말고 p95, 유지 시간, 밟은 길을 물어보세요. 이 셋이 없으면 통과인지 알 수 없어요
- ·실서버 말고 연습 무대에서, 결제는 테스트용 키로 해요. 진짜 손님과 실제 장부를 지켜야 해요
- ·몰림은 내 서버 밖에서도 나요. 결제·문자처럼 남의 회사에 붙는 곳의 한도를 미리 물어 두세요
- ·손님이 하루 열 명이면 안 해도 돼요. 큰 홍보나 정해진 시각의 판매가 생기면 그때가 할 때예요