Artillery (부하테스트 툴)
Artillery란?
Artillery는 웹 애플리케이션이나 API의 성능을 측정하고, 부하 테스트(Load Test)를 수행하는 오픈소스 성능 테스트 도구임.
주로 웹 서비스의 부하 상황을 가정하여 동시에 많은 사용자가 접근했을 때 서비스가 얼마나 빠르고 안정적으로 작동하는지 측정하기 위해 사용됨.
• 공식 홈페이지: https://www.artillery.io/
• GitHub 레포지토리: https://github.com/artilleryio/artillery
Artillery의 주요 기능과 장점
Artillery의 주요 특징 및 장점은 다음과 같음.
• 간단한 설정: YAML 파일로 시나리오를 설정하고 간편하게 테스트 가능함.
• 성능 측정 및 모니터링: 응답시간(Response time), 초당 요청 수(RPS), 에러율(Error rate) 등을 쉽게 측정 가능함.
• HTTP, WebSocket 등 다양한 프로토콜 지원: REST API, GraphQL, 웹소켓(WebSocket) 등 다양한 프로토콜에 대한 부하 테스트 가능함.
• 확장성과 클라우드 연동성: AWS Lambda, ECS, Kubernetes 등 클라우드 서비스와 쉽게 통합하여 대규모 부하 테스트 가능함.
• 실시간 성능 지표를 쉽게 확인할 수 있도록 보고서(Report)를 생성해 줌.
Artillery 설치 방법
Artillery는 Node.js 기반의 CLI(Command Line Interface) 도구이므로, 먼저 Node.js가 설치되어 있어야 함.
🔹 설치 명령어
npm install -g artillery
설치 확인 명령어:
artillery --version
Artillery로 부하 테스트 시나리오 작성 방법
Artillery 테스트는 YAML 파일 형태로 시나리오를 정의하여 진행함.
🔹 간단한 YAML 시나리오 예시
파일명: load-test.yml
config:
target: "https://example.com"
phases:
- duration: 60
arrivalRate: 10 # 초당 10명의 사용자가 60초 동안 요청함
scenarios:
- flow:
- get:
url: "/api/users"
이 YAML 파일을 기반으로 부하 테스트를 실행하면,
매 초당 10개의 HTTP 요청을 60초 동안 총 600번 전송하여 서비스의 성능을 측정함.
주요 YAML 설정 옵션 정리
옵션명 | 설명 |
target | 부하 테스트를 수행할 대상 서버 URL |
phases | 부하 테스트의 기간(duration)과 초당 요청 수(arrivalRate)를 설정 |
scenarios | 실제 테스트할 요청들을 정의함 |
flow | 요청의 흐름을 정의, GET, POST 등 HTTP 요청을 설정함 |
Artillery 부하 테스트 실행 방법
작성한 YAML 파일을 가지고 실제 부하 테스트를 수행하는 명령어는 다음과 같음.
artillery run load-test.yml
결과를 JSON 형식의 보고서로 저장하고 싶다면 아래처럼 실행 가능:
artillery run --output report.json load-test.yml
테스트 결과 보고서를 HTML 형태로 보기 좋게 출력하려면 아래 명령을 사용함:
artillery report --output report.html report.json
이 HTML 보고서는 웹 브라우저로 열어서 직관적으로 확인할 수 있음.
부하 테스트 결과 보고서에서 확인할 수 있는 지표들
Artillery 보고서에서는 아래와 같은 핵심적인 성능 지표를 확인할 수 있음.
• Scenarios launched: 테스트 동안 실행된 총 시나리오 수
• Requests completed: 완료된 HTTP 요청 수
• Response time: 평균 응답시간(ms), 최소/최대 응답시간 등
• Latency Distribution: 지연시간 분포도 (50%, 95%, 99% 등 퍼센타일 기반)
• RPS (Requests Per Second): 초당 처리 요청 수
• Status Codes: HTTP 상태코드별 응답 수(200, 404, 500 등)
• Errors: 에러 발생 건수 및 유형
Artillery를 사용할 때 유의사항 및 팁
• 항상 실제 운영 환경과 유사한 조건으로 부하 테스트 환경을 설정하는 것이 중요함.
• 부하 테스트를 수행하기 전에 관련자들과 충분히 협의하여 서비스에 영향을 최소화해야 함.
• 초당 요청 수(arrivalRate)를 단계적으로 높이면서 서비스의 한계를 측정하는 방식이 좋음.
• 성능 테스트 이후 개선한 내용이 실제 성능에 어떤 영향을 주는지 꾸준히 비교 분석하는 것이 중요함.
Artillery의 대표적인 사용 사례
다음은 Artillery가 주로 사용되는 대표적인 사례임.
• 신규 서비스 오픈 전에 부하 테스트 및 성능 검증
• 이벤트(특가 판매, 티켓 오픈 등) 이전에 시스템 안정성 확인
• 성능 개선 작업 후 실제 개선 여부 확인
• 지속적인 성능 모니터링 및 서비스 수준 관리(SLA 확인)
정리하면:
• Artillery는 웹 애플리케이션/API의 성능 측정과 부하 테스트를 쉽게 해주는 오픈소스 도구임.
• YAML 파일로 간편하게 테스트 시나리오를 정의하고, 명령어 하나로 성능 테스트를 실행함.
• HTTP, WebSocket 등 다양한 프로토콜을 지원하며, 성능 지표를 쉽게 분석할 수 있는 보고서를 제공함.
• 특히 클라우드 기반으로 대규모 부하 테스트를 손쉽게 수행할 수 있어 최근 많은 프로젝트에서 사용됨.
출처 : ChatGPT