-
[DevOps] Docker로 간편하게 k6 테스트 및 Prometheus+Grafana 로 모니터링 환경 구축개발/DevOps 2024. 4. 15. 22:42
들어가는 글
REST API를 이용한 endpoint를 개발하다보니 실제로 동시접속가능한 유저는 얼마가 되고, 사용되는 cpu/memory 사용량을 가늠해야할 필요성을 느끼던 찰나 load testing 을 위한 tool 들을 써볼 수 있는 기회가 있었다. 그와 관련된 내용들을 정리하고 공유하고자 글을두서 없이 써본다.
k6가 뭐길래?
k6는 오픈소스 load testing tool 이며, test를 매우 쉽게 그리고 제품의 생산성을 높혀주는 이점이 있다.
왜 k6?
k6 locust JMeter Gatling Language Javascript Python Application Scalar Stars(k) 21.4 22.1 – 6 Forks(k) 1.1 2.8 – 1.2 커뮤니티를 살펴보면 Top 4 load testing tool 이 있다. 위에 보이는 표에 소개된 툴들인데 github의 star/fork 로 유명세를 가늠할 수 있다.
파이썬을 기반으로 개발하다보니 locust 가 가장 먼저 눈에 들어왔다. locust 도 충분히 좋은 load testing tool 후보였지만, REST api 에 특화되어있고 다른 통신 protocol 들을 테스트하기에는 불편함이 많아보였다. 반면에 k6는 gRPC, websocket 같은 다른 protocol들을 테스트하기 간편했었고,무엇보다 k8s에 올려서 CI/CD 파이프라인에 연결할 수 있는 강력한 장점을 가지고 있어서 k6를 채택했다. 만약 지금 서비스하고 있는 제품이 오로지 REST API만 사용한다면 locust 를 load testing tool로 채택하는것도 나쁘지 않는 선택인거 같다. 단지 자유도를 충분히 주고 싶은 마음과 k8s 환경과의 쉬운 연동이 큰 장점으로 작용해서 k6를 선택했다.
테스트 환경 셋업
필자의 테스트 환경은 ubuntu 20.04이며 docker & docker-compose 가 설치되어있다.
git clone https://github.com/coolseaweed/apiserver_test.git cd apiserver_test && docker-compose up -d
테스트 실행
docker-compose -f docker-compose-test.yaml up
위 명령어를 실행하면 아래와 같이 테스트가 실행됨을 확인 할 수 있다.
Grafana 대쉬보드 체크
3000번 포트로 grafana dashboard에 접속하면 아래와 같이 k6 test 결과를 모니터링 할 수 있다.