선생님 안녕하십니까
올해 성능 테스트에 관심을 가지고 선생님의 강의를 수강하게 된 학생입니다.
강의를 다 보고 궁금한 점이 있어서 이렇게 글을 올려봅니다.
예를들면, 카테고리별 식당 찾기라는 로직을 부하 테스트 진행하려고 할 때 실제 운영 환경과 비슷하게 하기 위해서
가상의 데이터인 카테고리별 식당을 미리 DB에 저장하는게 맞을까요?
만약 맞다면 해당 DB에 접근하여 알맞은 카테고리의 식당을 찾는데 레이턴시가 길어지게 되고 부하 테스트에도 영향이 갈텐데
이때 어느정도의 식당이 DB에 있어야할지 가늠이 안갑니다.
이런 범위는 어떤식으로 구해야할까요?
늦은시간에 질문을 올려 죄송합니다 또한,
긴 글 읽어주셔서 감사합니다!
유동아님 안녕하세요~
우선 강의 잘 들어주셔서 감사합니다!
바로 궁금하다고 이야기해주신 내용에 대해 답변드려볼게요.
질문 주신대로 성능 테스트를 위해선 가급적 실제 서비스 환경과 비슷하게 데이터가 준비되어 있는게 좋습니다. (성능 테스트는 어떤 상황에서 왜 하는가? 참고)
카테고리별로 몇개의 식당이 있는게 적당한지에 대한 기준은 따로 존재하지 않습니다. 유동아님이 생각했을 때 "실제 서비스 환경에서는 몇개의 식당이 존재할지?"를 기준으로 잡아주시면 되는데요. 다만, 실제 서비스가 아니고 성능 테스트와 개선에 대해 학습을 하는 단계라면 인프라를 실제 서비스 환경처럼 갖출 수 없기 때문에 너무 많은 양의 식당을 등록해두고 테스트하는건 현실적이지 않을겁니다.
따라서 학습하는 단계에서 제가 추천드리는 방법은 식당의 수를 점점 늘려가면서 latency가 늘어나는걸 직접 확인해보시고 기록해보세요. 그리고 이렇게 늘어나는 latency를 줄일 수 있는 방법이 어떤게 있을지 고민해보고 성능 개선 방법을 하나씩 적용해보는겁니다.
실무에서도 성능 테스트를 할 때는 실제 서비스가 오픈했을 때 몇개 정도의 데이터가 존재하고, 어느정도 속도로 늘어날지, 사용자는 동시에 얼마나 될지(API에 대한 tps가 몇이나 될지) 등을 가상으로 산정하고 튜닝을 진행하거나 인프라를 추가로 투입합니다. 위에 이야기드린 것처럼 인프라를 실제로 더 투입하는건 학습할 땐 어렵기 때문에 지나치게 많은 데이터, 사용자가 존재한다고 가정하고 테스트해서는 목표로 하는 성능(latency, throughput)을 달성하기는 어렵습니다.
고민하고 계신 내용에 대한 답변이 됐을까요?
또 궁금한 내용 있거나 추가로 이야기하고 싶은 내용 있으면 질문 남겨주세요.
감사합니다. (_ _)
답글