인프런 커뮤니티 질문&답변

김영빈님의 프로필 이미지

작성한 질문수

백엔드 애플리케이션 성능 테스트하기

시나리오 작성해서 테스트하기

시나리오가 여러개면 요청이 분리되는 것 아닌가요?

해결된 질문

24.09.18 01:08 작성

·

83

·

수정됨

1

안녕하세요? 좋은 강의 감사드립니다. 몇가지 질문이 있어서 여쭤봅니다.

 1.

시나리오 작성해서 테스트하기 강의 11분 즈음에 보면,
요청 개수가 184개고 이게 요청 개수 90 시나리오 개수 2에서 나온거라고 말씀하시면서
시나리오가 여러 개면 요청 개수 * 시나리오 개수만큼 요청이 된다고 해주셨습니다.

그런데, 요청은 분배되는데
첫번재 테스트는 api가 한개이고, 두번째 테스트는 api가 3개라 결과적으로 180 언저리의 값이 나오는 거 아닌가 싶어서여쭤봅니다. 실제로 강의 영상에서도
시나리오 카운트에서 43, 47로 90이 나뉘고

43 1 + 47 * 3해서 184가 나오는 것이 아닌가

결과적으로 요청은 시나리오 개수만큼 분리되는 것 아닌가 싶어서 질문드립니다.

2. 강의 중에, 실제로 사내에서는 ngrinder를 사용하고 계시다고 말씀하셨는데, 혹시 최신버전의 artillery를 사용해보셨는지 그럼에도 불구하고 여전히 ngrinder를 사용하시는 게 편하신지가 궁금합니다..

  • artillery 최신버전을 써보니 간편하게 사용할 수 있는 게 너무 마음에 들어서 손에 익혀두면서 사용해보고 싶은 마음이 있습니다.

  • 하지만 ngrinder를 보통 사내에서 쓴다면 가능하다면 ngrinder를 익혀두는 게 더 좋지 않을까 싶어서 ㅎㅎ.. 의견을 구해봅니다.

  • 아니면 혹시 artillery가 ngrinder에 비해 부족한 부분이 있는지도 궁금합니다.

 

답변 4

1

김영빈님의 프로필 이미지
김영빈
질문자

2024. 09. 26. 17:25

답변 감사합니다~

0

이준형(Foo)님의 프로필 이미지
이준형(Foo)
지식공유자

2024. 09. 24. 00:50

김영빈님 우선 답변 늦어져서 죄송합니다.

질문 주신 내용에 대해 답변 드려보겠습니다!

 

우선 1번 관련해서는 말씀해주신 내용을 보고 저도 다시 한번 확인해봤는데, 말씀하신 내용이 맞는 것 같습니다. 🙂

'두 시나리오 중 어떤게 선택될지는 랜덤'으로 50%에 수렴하겠지만, 영상에서의 케이스에서는 43:47(47.778% vs 52.222%)가 나온듯합니다. 이 상태에서 43 * 1 + 47 * 3을 해서 184가 나온게 맞습니다~

 

다음으로 2번 관련해서는 2.0.11 버전이 마지막으로 썼던 버전인데요, 저는 artillery가 더 편합니다. ㅎㅎ

아래는 제가 과거 느꼈던 ngrinder가 artillery에 비해 불편했던 점들입니다. (사내에 세팅된 ngrinder 기준이라 이 역시 최신 버전의 ngrinder에서는 해결된 문제일 수도 있습니다.)

 

  • 스크립트 작성이 번거로움 (but, 프로그래머블하긴함)

  • ramp up 등 시나리오 작성 기능이 빈약함. 스트레스 테스트 도중 한번의 ramp up만 가능함.

  • p99, p95, p50 등 전체 트래픽 중 일부 혹은 대부분의 트래픽에 대한 통계만 별도로 볼 수 없음.

  • vuser를 설정해도 TPS가 고정이 아니라 애플리케이션이 받을 수 있는 만큼으로 adaptive하게 변경됨.

  • 도중에 오류가 임계치 이상으로 발생하면 테스트가 자동으로 중단됨.

 

이중에서 스크립트 작성의 번거로움에 대한 내용은 ChatGPT가 등장한 이후에는 많이 해소되긴 했지만, 여전히 작성했을 때 가독성이 떨어지는건 어쩔 수 없는 것 같습니다.

아무튼 위와 같은 불편함을 감수하더라도 ngrinder를 여전히 성능 테스트에서 쓰고 있는건, 사내에 이미 성능 테스트 툴론 ngrinder가 있기 때문에 그걸 사용하는게 편하고, 제가 따로 인프라를 구축해서 사용하긴 번거롭기 때문입니다. 또 artillery가 이 부분에 있어서는 좀 빈약한데, 큰 트래픽을 만들기 위해서 대규모로 클러스터링을 하는걸 지원하지 않습니다. (유료버전에서는 되는 것 같기도 한데 잘 모르겠네요 이부분까진.. 설령 된다고 하더라도 제가 사내에 따로 구축하긴 좀 어려울 것 같습니다.) 반면 ngrinder는 간단하게 클러스터링 구성을 할 수 있습니다.

 

아무튼 결과적으로 artillery로 우선 성능 테스트 방법을 익혀보시면 좋을 것 같아요. 소규모 테스트에선 저도 여전히 잘 사용하고 있습니다. 그리고 ngrinder 사용하는 방법도 필요하다면 연습해보시는 것도 나쁘지 않을 것 같습니다. docker로 띄우면 세팅도 간단해서요 ㅎㅎ

 

위 내용이 답변이 됐을지 모르겠는데, 또 궁금한 내용 있으면 질문 남겨주세요~

감사합니다.

 

0

이준형(Foo)님의 프로필 이미지
이준형(Foo)
지식공유자

2024. 09. 20. 21:59

김영빈님 안녕하세요~

제가 노트북 없이 해외에 나와 있어서 월요일에 돌아가는대로 답변 드리겠습니다. 답변이 늦어져서 죄송합니다 ㅠ

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 18. 01:11

안녕하세요, 인프런 AI 인턴입니다. 김영빈님.

시나리오 작성 시 요청 개수와 시나리오 개수의 관계에 대해 질문해주셨죠. 관련해서 유사한 답변이 올라온 게시물을 찾았습니다.

사용자가 여러 시나리오를 작성했고 이들 시나리오가 여러 개의 API 요청을 포함하고 있다면, 각 시나리오가 독립적으로 실행될 때마다 해당 시나리오 안의 모든 API 요청이 실행됩니다. 예를 들어, 한 시나리오 안에 3개의 API 호출이 있고 다른 시나리오 안에 1개의 API 호출이 있을 경우, 각 시나리오가 독립적으로 실행될 때 총 요청 수는 해당 API 호출 수의 합입니다.

추가로 참고하실 만한 유사한 질문과 답변은 아래 링크를 통해 확인하실 수 있습니다:

위 답변들을 통해 시나리오 설계 시 각 시나리오별 API 호출이 독립적으로 수행된다는 점과 그로 인해 발생하는 전체 요청의 계산 방식 등을 이해하는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.