-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.load-test.yml
More file actions
84 lines (77 loc) · 2.77 KB
/
Copy pathdocker-compose.load-test.yml
File metadata and controls
84 lines (77 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 부하 테스트 전용 Compose 파일
# Resilience4j 적용 전후 비교 측정 환경
#
# 데이터 흐름: k6 → 로컬 앱(8080) → toxiproxy(8666) → wiremock(8080)
# prometheus-test → host.docker.internal:8080 (로컬 앱 스크랩)
# grafana-test → prometheus-test:9090
#
# 실행:
# docker compose -f docker-compose.load-test.yml up -d
# ./load-test/toxiproxy/setup.sh # toxiproxy 프록시 등록
# ./load-test/toxiproxy/scenarios.sh s1|s2|s3
# k6 run load-test/k6/baseline.js
services:
# AI 서버 장애 주입 프록시
# 로컬 앱은 AI_SERVER_URL=http://localhost:8666 으로 이 프록시를 경유
toxiproxy:
image: ghcr.io/shopify/toxiproxy:2.9.0
container_name: acci-toxiproxy
restart: unless-stopped
ports:
- "8474:8474" # 관리 API (프록시/toxic 설정)
- "8666:8666" # AI 서버 프록시 포트 (로컬 앱 → toxiproxy → wiremock)
networks:
- load-test
# AI 서버를 흉내내는 가짜 서버
# 재현 가능한 응답으로 측정 노이즈 최소화 (실제 AI 분석 시간 변동 제거)
wiremock:
image: wiremock/wiremock:3.9.1
container_name: acci-wiremock
restart: unless-stopped
ports:
- "8089:8080" # 호스트 디버깅용 (앱은 toxiproxy 경유)
volumes:
- ./load-test/wiremock/mappings:/home/wiremock/mappings:ro
- ./load-test/wiremock/__files:/home/wiremock/__files:ro
command:
- "--global-response-templating" # 동적 응답 (UUID 생성 등)
- "--disable-banner"
- "--no-request-journal" # 요청 로그 메모리 누적 방지 (OOM 방어, 3.x 변경된 옵션명)
networks:
- load-test
# 로컬 앱 메트릭 수집용 Prometheus
# host.docker.internal:8080 으로 로컬에서 실행 중인 앱을 스크랩
prometheus-test:
image: prom/prometheus:latest
container_name: prometheus-test
restart: unless-stopped
ports:
- "9091:9090"
volumes:
- ./monitoring/prometheus/prometheus-test.yml:/etc/prometheus/prometheus.yml
- prometheus-test-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
extra_hosts:
- "host.docker.internal:host-gateway" # 로컬 앱 접근용
networks:
- load-test
# 부하 테스트 전용 Grafana
# prometheus-test 를 datasource 로 사용 (운영 grafana 와 분리)
grafana-test:
image: grafana/grafana:latest
container_name: grafana-test
restart: unless-stopped
ports:
- "3001:3000"
volumes:
- grafana-test-data:/var/lib/grafana
- ./monitoring/grafana/provisioning-test:/etc/grafana/provisioning
networks:
- load-test
networks:
load-test:
driver: bridge
volumes:
prometheus-test-data:
grafana-test-data: