공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/Autoscale

KubeCon2024 - Scaling New Heights with KEDA: Performance, Extensions, and Beyond

inspirit941 2024. 10. 30. 00:21
반응형

https://youtu.be/_5_njiPr5vg?si=W0MJDjYMbLMRYPU5

 

발표자

  • Jorge Turrado: SCRM에서 SRE 담당. KEDA maintainer
  • Zbynek Roubalik: Kedify CTO, Knative TOC, KEDA maintainer
    • Enterprise Autoscaling platform for our customers.

스크린샷 2024-10-28 오후 3 38 25스크린샷 2024-10-28 오후 3 45 56

 

Data Processing 관점에서, 한번에 데이터 처리가 많이 필요한 경우 / 그렇지 않은 경우가 있다. 리소스 효율화를 위해서라도, 필요한 순간에만 애플리케이션이 실행되면 좋을 것 같다.

  • HPA: target workload의 CPU / Memory 확인해서 autoscale. 단, 리소스 사용량과 Actual Need이 다른 경우 사용하기 어렵다.
    • 예컨대 위 그림의 경우 'RabbitMQ라는 외부 시스템에서 얼마나 많은 메시지가 들어오는지' 가 autoscale 판단에 중요한 요인.
    • scale to zero가 불가능하다.
  • KEDA: Custom Metric을 정의하고 수집해서, application scale의 기준으로 활용한다.
    • scale to zero 가능.
    • 위 예시의 경우, RabbitMQ에서 발생하는 데이터를 수정하거나 변경하지 않는다. Metric 체크만 하는 것

Architecture

스크린샷 2024-10-28 오후 3 51 15스크린샷 2024-10-28 오후 3 51 37

 

  • k8s의 리소스를 최대한 활용.
  • operator pattern. ScaledJob / ScaledObject 라는 리소스를 관리함.
    • scaling Metadata 정의하는 역할
  • External Metric 수집한 정보를 HPA에 전달.
    • 1 to N, N to 1은 HPA가 담당하고
    • scale Zero는 KEDA가 담당

스크린샷 2024-10-28 오후 4 00 56

 

ScaledObject: /scale 정의된 모든 종류의 k8s Resource에 적용 가능. 크게 세 가지 섹션으로 구분된다

  • scaleTarget: 어떤 애플리케이션을 scale out할 것인지
  • configuration부분 (min, max replica)
  • trigger: connectors to external services (예시는 rabbitmq)
    • 여러 개의 external service를 정의할 수 있다.

스크린샷 2024-10-28 오후 4 04 06

 

ScaledJob: Long-Running Process를 위한 작업.

  • 외부 이벤트 기반으로 job 생성 / 실행.

New Features

Scaling Modifier

스크린샷 2024-10-28 오후 4 06 21스크린샷 2024-10-28 오후 4 10 20

 

HPA는 기본적으로 takes decision based on the Maximun. 예컨대 multiple Trigger를 설정해두면

  • 정의된 Metric 토대로 계산해서 각각의 trigger별로 Replica 개수가 도출됨
  • 그 중 값이 가잔 큰 걸 선택함

Scaling Modifier: Maximun 선택을 원하지 않는 사람들을 위한 기능.

  • 커스텀할 수 있는 수식 지원. (formula)

Monitoring Updates

스크린샷 2024-10-28 오후 4 12 04

 

Prometheus, OpenTelemtry Collector 지원

  • 에러 모니터링, 환경설정 변경 등등... 에 유연하게 대응하기 위함
  • Prometheus 기준, serviceMonitor 배포하면 된다

스크린샷 2024-10-28 오후 4 14 31

 

cloudevent 지원

  • scale 변경 이벤트 발생하면 cloudevent emit 가능
  • 플러그인 형태로 사용 가능

Authentication

스크린샷 2024-10-28 오후 4 59 30

 

Secure 위한 작업들. KEDA 동작을 위해 외부 컴포넌트에 접근해야 하므로 특히 중요하다.

Performance

스크린샷 2024-10-28 오후 5 00 57

 

grafana k6와의 intergration 지원

  • testing KEDA with 1000 scale object, 1 metric
  • 사용자 인프라에서 KEDA 테스트를 쉽게 할 수 있는 repo로 개선해나갈 예정

https://github.com/kedacore/keda-performance

RoadMap

스크린샷 2024-10-28 오후 5 04 01

 

Predictive Scaling

  • 과거 metric 정보가 있고, 비슷한 시기에 비슷한 정도의 metric 변화를 예측할 수 있다면 predictive scale이 가능할 것.
  • 매주 금요일에 traffic spike가 발생했다? -> 금요일에 미리 scale out해둔다던가

Storage Scaling

cloudevents 강화

스크린샷 2024-10-28 오후 5 03 56

 

HTTP Add On

  • http 요청은 이벤트가 아니다. 이벤트라고 간주한다면, Synchronous Event인 셈. 제때 받아서 응답하지 못하면 사라지는 이벤트.
  • scale Zero 상태에서 hold the http request 역할을 하는 interceptor 구현.

스크린샷 2024-10-28 오후 5 27 57

 

Timeout 초과하기 전까지는 request를 holding -> scale up되면 전달.

반응형