Part 4: 부하 테스트 및 스케일링

난이도: 중급 (Intermediate) 예상 소요 시간: 45분 마지막 업데이트: 2026년 2월 22일

학습 목표

  • k6/Locust를 사용한 부하 시나리오 실행

  • KEDA Pod 오토스케일링 동작 확인

  • Karpenter Node 오토스케일링 관찰

  • Grafana 실시간 대시보드 모니터링

부하 테스트 및 스케일링 타임라인

spinner

Step 4.1: k6 부하 시나리오

부하 테스트 단계

Phase
Duration
VUs
목표

Ramp-up

2분

1 → 50

점진적 트래픽 증가

Sustained

5분

50

안정 상태 부하

Spike

2분

200

트래픽 스파이크

Sustained 2

3분

50

스파이크 후 안정화

Cool-down

2분

50 → 0

점진적 감소

Step 4.1.1: k6 스크립트 작성

Step 4.1.2: k6 실행


Step 4.2: Locust 배포 (대안)

Step 4.2.1: Locust 스크립트

Step 4.2.2: Locust Helm 배포


Step 4.3: 부하 실행 중 관찰 항목

관찰 포인트

관찰 대상
도구
주요 지표

Traffic Rate

Grafana (Prometheus)

http_requests_total

Pod Scaling

KEDA / kubectl

HPA replicas, ScaledObject status

Node Scaling

Karpenter / kubectl

Node count, pending pods

Latency

Grafana / Tempo

p50, p95, p99 latency

Error Rate

Grafana

5xx errors / total requests

SQS Depth

CloudWatch / KEDA

ApproximateNumberOfMessages

Step 4.3.1: 실시간 모니터링 터미널

Step 4.3.2: Grafana 대시보드 쿼리


Step 4.4: Cool-down 스케일-인

부하 테스트가 완료되면 KEDA와 Karpenter가 자동으로 스케일-인을 수행합니다.

스케일-인 동작

컴포넌트
Trigger
동작
대기 시간

KEDA

SQS depth < 10

Pod 스케일-인

cooldownPeriod: 60s

KEDA

Request rate < 100 RPS

Pod 스케일-인

cooldownPeriod: 60s

Karpenter

Underutilized nodes

Node consolidation

consolidateAfter: 30s

Karpenter

Empty nodes

Node termination

즉시

Step 4.4.1: 스케일-인 관찰


Step 4.5: 스케일링 대시보드 패널 구성

Grafana Dashboard 패널

패널
쿼리
시각화

Pod Count

count(kube_pod_status_phase{namespace="msa", phase="Running"}) by (pod)

Time Series

Node Count

count(kube_node_info{node=~".*karpenter.*"})

Stat

CPU Usage

sum(rate(container_cpu_usage_seconds_total{namespace="msa"}[5m])) by (pod)

Time Series

Memory Usage

sum(container_memory_working_set_bytes{namespace="msa"}) by (pod) / 1024 / 1024

Time Series

SQS Depth

CloudWatch: AWS/SQS.ApproximateNumberOfMessages

Time Series

Request Rate

sum(rate(http_requests_total{namespace="msa"}[1m])) by (service)

Time Series

KEDA Scaler Metrics

keda_scaler_metrics_value

Time Series

HPA Desired Replicas

kube_horizontalpodautoscaler_status_desired_replicas{namespace="msa"}

Time Series

Step 4.5.1: Dashboard JSON 예시


검증 (Verification)

스케일 아웃/인 이벤트 확인

예상 결과

Phase
Pod Count
Node Count
SQS Depth

Before Load

2-4

3

0

Ramp-up

4-6

3-4

10-50

Sustained

6-10

4-5

50-100

Spike

10-20

5-8

100-500

Cool-down

2-4

3-4

0-10

After Load

2-4

3

0

Grafana 확인 항목

  1. Request Rate 그래프: Ramp-up → Sustained → Spike → Cool-down 패턴 확인

  2. Pod Count 그래프: KEDA에 의한 스케일 아웃/인 확인

  3. Node Count 그래프: Karpenter에 의한 노드 추가/제거 확인

  4. SQS Depth 그래프: 메시지 처리량과 큐 깊이 상관관계 확인

  5. Latency 그래프: 부하 증가에 따른 latency 변화 확인


참조 문서


다음 단계

부하 테스트 및 스케일링 관찰이 완료되었습니다. Part 5: 알림 및 AIOps로 진행하여 이상 탐지 및 자동화된 인시던트 대응을 구성합니다.

마지막 업데이트