[Research] API LoadTest

Hoseok Ryu·2022년 3월 16일
0
post-thumbnail

2년여간의 개발에 걸쳐서 회사 내에 서비스가 굴러가기 시작했습니다. 기존에는 5개 팀의 10여명이 6달 정도에 걸쳐 중구난방으로 커뮤니케이션하면서 txt 나 json 파일들을 주고 받으며 엉망진창으로 서비스가 돌아갔습니다. 이를 개선하기 위한 서비스로 3개 팀에서 3명이 3시간만 협력하면 되게 진화됐습니다(여전히 json을 한 번은 주고 받습니다 ㅜㅜ)

서비스는 굴러가지만, 여전히 몇몇 api는 성능이 좋지 못해서 서버가 다운되곤합니다. 다행히 k8s를 쓰기 때문에 자동으로 복구되지만, 고쳐야 할 타이밍이 왔습니다. api의 성능 개선하기에 앞서 얼마나 느린 지를 알아야 개선이 됐는 지를 알 수 있습니다. 따라서 부하테스트(Load Test)를 통해 Performance를 먼저 확인하고자 합니다.

Requirement

무작정 Tool을 찾기에 앞서 저의 요구 사항을 먼저 확인해보았습니다.

  • Programming 기반
    가능하면 executable한 script로 작성하길 바랬습니다. 만약 Postman 등의 tool을 쓰게 된다면 여기에 의존되기 때문에 다른 팀원들에게 새로운 tool 설치를 강제하는 것이 부담됐습니다.
  • 무료
    Elastic으로 dashboard를 이미 쓰고 있기 때문에 monitoring을 엄청나게 많이 할 일이 없습니다. 따라서 단발성, 혹은 CI/CD에 붙일 정도로만 LoadTest를 할 계획입니다. 그래서 가능하면 무료이고 싶습니다.
  • Python Base
    팀의 main language가 python 이다보니 python 으로 작성 가능하길 바랍니다.
  • GUI [Optional]
    GUI 지원은 되면 좋고 아니면 어쩔 수 없다고 생각했습니다. 저도 개발자라서 무료에게 많은 걸 바라는 것이 양심 없음을 알기 때문이죠 ㅜㅜ

Tools

약간의 검색을 통해서 부하테스트를 해주는 널리 알려진 것들을 찾았습니다.

  • Apache Jmeter
  • SoapUI
  • Locust
  • Wrk

각각 장단점이 있지만, Locust를 제외하고는 Tool base 이기 때문에 GUI를 설치하고 익혀야 하며 초기 세팅에 시간이 조금 걸린다는 것이, 또한 회사 서비스의 규모에 Too Much 한 기능을 제공한다는 점 때문에 기각했습니다.

Locust의 경우, Python script를 사용해 쉽게 세팅이 가능하며, web page까지 간이로 생성해주기 때문에 편리합니다. 한 가지 걱정되는 것은 auth 정보까지 해결되는 가? 인데, 됐으면 좋겠네요. 결론적으로 선택한 것은 Locust이며, 이제 사용법을 공부한 다음에 각을 잰 뒤에 팀장님의 허가를 받으려 가야겠습니다.

profile
Research Engineer

0개의 댓글