본문 바로가기
카테고리 없음

Docker Compose로 Locust 부하 테스트 환경 구성하기

by codeomni 2025. 4. 7.
반응형

📊 Docker Compose로 Locust 부하 테스트 환경 구축하기

Docker
Locust
License

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

▶️ 실행 방법

  1. 3개의 worker로 컨테이너 실행:
docker-compose up -d --scale locust-worker=3
  1. 웹 브라우저로 Locust UI 접속:
http://localhost:8089
  1. 사용자 수, 스폰 속도, 요청 URL 등을 입력 후 테스트 시작

🧹 종료 방법

docker-compose down -v

📸 Web UI 스크린샷

Locust Web UI


💡 확장 아이디어

  • Prometheus + Grafana를 활용한 모니터링 환경 구축
  • JWT, OAuth2, API Key 인증을 포함한 테스트 구성
  • CI/CD 파이프라인과 연동하여 자동화된 성능 회귀 테스트

📝 라이선스

이 프로젝트는 MIT License를 따릅니다.


댓글