반응형
📊 Docker Compose로 Locust 부하 테스트 환경 구축하기
Docker Compose를 활용하여 Locust의 Master-Worker 구조로 확장 가능한 부하 테스트 환경을 구성합니다.
📦 사용 기술 스택
기술 | 설명 |
---|---|
Locust | Python 기반 사용자 시나리오 부하 테스트 도구 |
Docker | 컨테이너 가상화 플랫폼 |
Docker Compose | 멀티 컨테이너 애플리케이션 구성 도구 |
🗂️ 프로젝트 구조
load-test/
├── docker-compose.yml # Locust Master & Worker 설정
├── locustfile-test.py # 부하 테스트 시나리오
└── README.md # 문서
🧪 테스트 시나리오 예시 (locustfile-test.py
)
from locust import HttpUser, task, between
class MyUser(HttpUser):
wait_time = between(1, 2)
@task
def hello_world(self):
self.client.get("/hello")
🐳 Docker Compose 설정 (docker-compose.yml
)
services:
locust-master:
container_name: locust-master
image: locustio/locust
ports:
- "8089:8089"
volumes:
- ./:/mnt/locust
command: >
-f /mnt/locust/locustfile-test.py
--master
-H http://host.docker.internal:8080
locust-worker:
image: locustio/locust
depends_on:
- locust-master
volumes:
- ./:/mnt/locust
command: >
-f /mnt/locust/locustfile-test.py
--worker
--master-host locust-master
⚠️ 주의: --scale
옵션을 사용할 때는 container_name
을 제거해야 함
Docker Compose의 --scale
옵션을 사용해 여러 개의 worker를 띄우려면container_name:
을 지정하면 안 됩니다.
❌ 잘못된 예시 (스케일링 불가능)
container_name: locust-worker
✅ 올바른 예시 (스케일링 가능)
# container_name 제거
이렇게 구성 후 실행하면 아래처럼 작동합니다:
docker-compose up -d --scale locust-worker=3
생성된 컨테이너 이름:
load-test_locust-worker_1
load-test_locust-worker_2
load-test_locust-worker_3
▶️ 실행 방법
- 3개의 worker로 컨테이너 실행:
docker-compose up -d --scale locust-worker=3
- 웹 브라우저로 Locust UI 접속:
http://localhost:8089
- 사용자 수, 스폰 속도, 요청 URL 등을 입력 후 테스트 시작
🧹 종료 방법
docker-compose down -v
📸 Web UI 스크린샷
💡 확장 아이디어
- Prometheus + Grafana를 활용한 모니터링 환경 구축
- JWT, OAuth2, API Key 인증을 포함한 테스트 구성
- CI/CD 파이프라인과 연동하여 자동화된 성능 회귀 테스트
📝 라이선스
이 프로젝트는 MIT License를 따릅니다.
댓글