1. 부하테스트를 위한 테스트 도구 도입
2025. 1. 14. 12:39ㆍTest/Artillery
Artillery란?
- 성능 테스트와 부하 테스트를 위한 간단하고 강력한 도구
- HTTP, WebSocket, GraphQL 등 다양한 프로토콜을 지원하는 부하 테스트 도구
- AWS free tier 만으로 어느정도 트래픽까지 감당 가능할지 알아보기 위하여
프로젝트 배경
- NestJS와 Socket.IO를 사용해 실시간 채팅 서비스 구축
- 높은 동시 연결을 처리하고 안정적인 성능을 제공하기 위해 성능 테스트가 필수
목표
- Artillery를 사용해 성능 테스트를 설정, 실행, 분석하는 과정을 공유
- 성능 병목을 해결하고 효율적인 실시간 시스템 설계 구축
부하테스트 필요성
- 성능 검증: 웹사이트나 API가 높은 트래픽에서도 안정적으로 작동하는지 확인
- 취약점 발견: 높은 요청으로 인해 발생할 수 있는 병목현상과 오류를 미리 확인
- WebSocket 안정성 테스트: 실시간 애플리케이션에서 WebSocket 연결을 검증
- 사용자 경험 개선: 응답 시간이 느리거나 오류가 발생하지 않도록 최적화
Artillery 선택 이유
1. Socket.IO에 대한 강력한 지원
- Artillery는 WebSocket뿐 아니라 Socket.IO를 위한 전용 엔진을 제공
- 다른 도구들은 Socket.IO 지원이 제한적이거나 추가 스크립팅이 필요하지만, Artillery는 간단한 설정으로 Socket.IO 이벤트를 테스트
2. 간단한 설치 및 사용
- 간단한 설치
- YAML 파일로 테스트를 구성하므로 코드 작성이 최소화
3. 경량화 및 자원 친화성
- 가벼운 자원 사용량으로, AWS Free Tier EC2 인스턴스에서도 실행 가능
- 기본 설정으로도 활용 용이
4. 유용한 보고서 기능
- 부하 테스트 결과를 JSON 형식으로 출력하며, 추가 도구(Grafana, Kibana)와 통합해 시각화가능
artillery run --output results.json test.yml
다른 도구와의 비교
도구 사용성 Socket.IO 지원 스케일링 보고서 기능 추천 시나리오
JMeter | GUI 기반, 설정이 복잡 | 직접 지원하지 않음 | 높은 확장성 | 상세한 보고서 | API, HTTP 부하 테스트 |
Locust | Python 스크립팅 기반, 유연함 | 커스텀 스크립트 필요 | 고성능 분산 처리 | 제한적 | 대규모 분산 테스트 |
Gatling | Scala 기반, 코드 중심 | WebSocket만 지원 | JVM 기반 고성능 | 실시간 대시보드 | WebSocket 대규모 테스트 |
K6 | JavaScript 기반, 클라우드 친화적 | WebSocket 지원 | 클라우드 통합 | 대화형 보고서 | CI/CD 파이프라인 통합 |
Artillery | YAML 기반, 간단한 설정 | Socket.IO 직접 지원 | 간단한 스케일링 | JSON 및 CLI 보고서 | WebSocket, Socket.IO 테스트 |
결론: 왜 Artillery 인가?
- Socket.IO 전용 지원: WebSocket 및 Socket.IO 이벤트를 테스트하기 위한 엔진 제공
- 가벼운 자원 사용량: Free Tier EC2에서도 원활하게 작동
- 간단한 설정: YAML 기반 구성으로 테스트를 쉽게 작성할 수 있음
- 확장 가능성: JSON 출력 및 도구 통합을 통해 유연한 데이터 분석 가능
- Socket.IO 기반의 채팅서비스 프로젝트 이며 첫 부하테스트인 만큼 가볍고 간단한 테스트 도구가 필요해 Artillery를 선택
'Test > Artillery' 카테고리의 다른 글
6. [최적화3] ulimit와 PAM 설정을 통한 테스트 환경 최적화 (0) | 2025.01.24 |
---|---|
5. [최적화2] Nginx 및 WebSocket 서버 설정 최적화 (0) | 2025.01.24 |
4. [최적화 1] Node.js 프로세스 최적화 (0) | 2025.01.24 |
3. AWS EC2 t2.micro 환경에서 WebSocket 타임아웃 문제 (0) | 2025.01.16 |
2. Artillery를 활용한 Socket.IO 기반 채팅 서비스 부하 테스트: Local vs EC2 환경 성능 비교 및 분석 (0) | 2025.01.14 |