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

✅ SLA 기반 실시간 오토스케일링 체계: KEDA + WebLogic 또는 Spring Boot 서비스

by frontier12 2025. 5. 30.



1. 개요

SLA(서비스 수준 계약) 기반 오토스케일링은 단순한 CPU/메모리 임계치가 아니라 서비스 지연, 에러율, 대기열 길이 등 비즈니스 관점의 지표를 기준으로 리소스를 자동 조정하는 방식입니다.

이때 KEDA(Kubernetes Event-Driven Autoscaler)는 Prometheus, Kafka, Redis, HTTP 트래픽 등 다양한 이벤트/지표 기반 트리거로 HPA를 제어할 수 있게 해줍니다.



2. 아키텍처 (Spring Boot on WebLogic + KEDA + Prometheus)

graph TD
  A[Spring Boot on WebLogic]
  B[Prometheus Exporter]
  C[Prometheus]
  D[KEDA ScaledObject]
  E[HPA Controller]
  F[K8s Deployment]

  A --> B --> C
  C --> D --> E --> F

KEDA가 Prometheus의 지표를 수집해 Pod 수를 제어하며, 이는 SLA 기준치를 기준으로 함



3. SLA 지표 예시

지표명 설명 기준 임계값
http_request_duration_seconds 요청 평균 응답 시간 95th Percentile > 1.2s
hikaricp_connections_active DB 커넥션 사용량 > 80%
queue_length 대기열 길이 (Kafka, RabbitMQ 등) > 1000
5xx_error_ratio 전체 요청 대비 5xx 오류 비율 > 3%




4. KEDA ScaledObject 예시 (Prometheus 기반)

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: spring-app-scaler
spec:
  scaleTargetRef:
    name: spring-on-weblogic
  minReplicaCount: 2
  maxReplicaCount: 10
  triggers:
    - type: prometheus
      metadata:
        serverAddress: http://prometheus-server.default.svc:9090
        metricName: http_request_duration_seconds
        query: |
          histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[2m])) by (le))
        threshold: '1.2'




5. KEDA의 장점

항목 설명
SLA 지표 기반 확장 HTTP 지연, DB 과부하, 큐 대기열 등 트리거 가능
이벤트 드리븐 스케일 업 조건 발생 시 즉시 반응
비용 최적화 미사용 시 scale-to-zero 구성도 가능
WebLogic 포함 확장 가능 WebLogic 파드도 targetRef로 지정 가능




6. WebLogic에 적용 시 고려사항

항목 설명
WebLogic Pod 구성 Domain-in-Image 또는 Operator 방식 필요
상태 저장 구성 비상태성 Pod로 변환 필요 (Session Clustering 등 고려)
스케일 아웃 시 부트 시간 WebLogic의 기동시간 고려하여 초기 Ready 대기 로직 필요
PreStop Hook 스케일 인 시 트랜잭션 종료 후 안전한 종료 필요




7. SLA 기반 오토스케일링 고도화 전략

전략 예시
지표 조합 트리거 (응답시간 > 1.5s) AND (오류율 > 3%)
Alertmanager 연계 특정 SLA 위반 시 Slack 알림 후 스케일
Nightly Downscale 야간 시간대 최소 인스턴스로 자동 축소
Custom Metrics Adapter Prometheus 외 HTTP, Kafka 큐, Redis TTL 등도 트리거 가능




8. 실무 적용시 팁
• WebLogic 기반 서비스라도 KEDA는 Pod 레벨에서 제어 가능 → Stateful한 경우 operator 사용 권장
• Spring Boot는 상태 비저장 설계가 기본 → SLA 기반 확장이 가장 효과적
• Prometheus의 SLA 지표는 반드시 미리 알람 기준과 연동하여 설계
• Trace → Metric 변환을 통해 고지연 트랜잭션만 추적해도 활용 가능



✅ 결론

WebLogic + Spring Boot 환경에서도 SLA 지표를 기반으로 한 이벤트 기반 오토스케일링 체계를 도입할 수 있으며,
이를 통해 비용 효율성, 고가용성, 사용자 체감 품질 유지를 동시에 확보할 수 있습니다.

특히 KEDA는 WebLogic의 복잡한 구조나 느린 부트타임을 고려하여
적절한 PreStop/Startup Hook, 트래픽 라우팅 로직과 함께 사용하는 것이 핵심입니다.