티스토리 뷰
지금까지 성능테스트를 위해 써본 툴을 비교해보고자 합니다.
오픈소스이며 자유도가 높은 툴을 사용하고자 하다 보니 3가지 툴을 사용해보았습니다.
각각의 "스크립트 작성 방법", "gui 확인 방법"은 다음과 같습니다.
- locust
- 스크립트 작성 방법: Python
- gui 확인 방법: 명령어 실행시 실시간으로 확인할 수 있는 간단한 서버가 실행되어 브라우저로 접속하면 된다.
- k6
- 스크립트 작성 방법: Javascript
- gui 확인 방법: influxdb와 grafana를 연결하여 grafana에 제공되는 대시보드를 import하여 확인한다.
- 다른 방법이 있는지는 모르겠으며, docker를 사용하여 간단히 grafana, influxdb를 사용했었다.
- artillery
- 스크립트 작성 방법: yaml
- gui 확인 방법: 모두 실행된 이후 명령어를 통해 html 파일을 생성하여 열어본다.
- 개인적으로 스크립트 작성 방법은 본인의 언어나 포맷에 대한 능숙한 정도에 의존하며 모두 자유도는 높다고 생각합니다.
- gui 확인 방법에 대한 생각은 다음과 같습니다.
- locust는 주어지는 결과 정보가 불충분하다 느끼면 다른 툴을 고려해봐도 좋을 것 같습니다. (저는 충분하다 느꼈습니다.)
- k6의 경우 grafana로 결과 정보를 대시보드 커스텀이 가능합니다. 대신 docker 등 사전작업이 필요합니다.
- artillery는 실시간으로 확인할 수 없고 테스트가 끝난 이후 gui를 확인할 수 있습니다. 하지만 사용이 간편합니다.
- 세 기술 모두 장단점이 있기에 저는 다음과 같은 상황에 위 기술들을 선택할 것 같습니다.
- python이 익숙하며 실시간으로 간단하게 확인하고 싶다면 -> locust
- javascript가 익숙하며 원하는 정보를 다양한 방법으로 보고 싶은 경우 -> k6
- 정말 간단하게 테스트하고 싶으며 실시간으로 지표를 확인하지 않아도 되는 경우 -> artillery
세 기술의 대시보드 예시를 확인해봅시다.
1. locust
2. k6 (cli)
3. k6 + grafana
대시보드 정보: https://grafana.com/grafana/dashboards/2587-k6-load-testing-results/
3. artillery
추가적인 의견
- 기술 선택에 있어 신중하게 선택하는 것이 좋다 생각합니다.
- 이 관점에서 봤을때, 살펴본 세 기술 모두 약간의 차이점들이 있지만, 훌륭한 기술들이라 생각이 들며 그 약간의 차이를 고려하여 선택하는 것이 좋을 것 같습니다.
- 평소 python이나 yaml, js를 사용해본 것이 영향을 줄 수는 있으나, 설정이나 스크립트 작성에서의 난이도 차이가 크게 다가오지는 않았기에, 이 부분에 있어 처음 접하시더라도 두려움 없이 선택하셔도 괜찮을 것 같다는 생각입니다.
스크립트 예시가 궁금하시면 다음 저장소들을 확인하시면 됩니다.
테스트 Github 저장소
https://github.com/ohksj77/locust-load-test
https://github.com/ohksj77/k6-grafana-influxdb
https://github.com/ohksj77/artillery-load-test
'개발 탐구' 카테고리의 다른 글
Hibernate 6.4의 @SoftDelete 사용법 탐구 (7) | 2024.03.26 |
---|