Skip to content

chore: 부하테스트 시나리오 개선 및 성능 분석 문서화#81

Merged
lsh1215 merged 9 commits intodevelopfrom
chore/load-test-improvement
Feb 27, 2026
Merged

chore: 부하테스트 시나리오 개선 및 성능 분석 문서화#81
lsh1215 merged 9 commits intodevelopfrom
chore/load-test-improvement

Conversation

@lsh1215
Copy link
Member

@lsh1215 lsh1215 commented Feb 12, 2026

Summary

  • k6 HTTP 부하테스트 스크립트를 실제 사용 패턴 기반 4시나리오로 리라이트 (dashboard_polling, admin_ops, mixed_workload, spike_resilience)
  • MQTT 파이프라인 테스트 스크립트를 3시나리오로 리라이트 (normal, rush_hour, burst) + PipelineVerifier로 E2E 검증
  • 가설-실행-비교 프레임워크 기반 부하테스트 계획서 작성 (docs/load-test-plan.md)
  • 실측 결과 포함 성능 분석 보고서 작성 (docs/performance-analysis.md)
  • MQTT subscriber 장기 실행 시 stale DB 연결 방지 (close_old_connections())
  • 아키텍처 문서 시퀀스 다이어그램 수정 (Edge→RabbitMQ→Django 흐름 반영)

Changed files

파일 변경
docker/k6/load-test.js 4시나리오 리라이트
docker/k6/mqtt-load-test.py 3시나리오 + PipelineVerifier 리라이트
docs/load-test-plan.md 신규 - 부하테스트 계획서
docs/performance-analysis.md 신규 - 성능 분석 보고서
core/mqtt/subscriber.py close_old_connections() 추가
docs/ARCHITECTURE_COMPARISON.md 시퀀스 다이어그램 교정

Test plan

…enarios

- k6 HTTP: 4 scenarios (dashboard_polling, admin_ops, mixed_workload,
  spike_resilience) with infrastructure-derived thresholds
- MQTT pipeline: 3 scenarios (normal, rush_hour, burst) with
  PipelineVerifier using /api/v1/detections/statistics/ and RabbitMQ
  Management API for end-to-end verification
- load-test-plan.md: hypothesis-driven test framework with 7 scenarios,
  capacity calculations, and execution guide
- performance-analysis.md: comprehensive results from k6 HTTP (4 scenarios,
  all thresholds PASS) and MQTT pipeline (3 scenarios, OCR bottleneck
  identified at ~0.06 msg/s)
Add close_old_connections() before DB operations in the long-running
MQTT subscriber thread to prevent stale connection errors.
Edge devices publish directly to RabbitMQ (MQTT plugin), not to Django.
Django subscribes from RabbitMQ, not receives from edge devices.
# Conflicts:
#	core/mqtt/subscriber.py
#	docker/k6/mqtt-load-test.py
…ource config

- Rewrite README.md as Software Design Document (Korean)
- Enhance k6 load-test.js with improved scenarios and thresholds
- Update mqtt-load-test.py with refined test parameters
- Add 8 Grafana dashboard JSON provisioning files
- Fix datasources.yml configuration
- Break long line (E501) by extracting variable
- Remove unused f-string prefix (F541)
@lsh1215 lsh1215 merged commit 6f1f0f2 into develop Feb 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant