pile·
인프라 / DevOps·스캐터랩스캐터랩 (이루다)·

루다 선톡을 대비하는법

루다의 선톡(사용자에게 먼저 보내는 메시지)은 기념일·모델 생성 등으로 불규칙하게 몰려 순간 트래픽이 급증하는데, 기존 HPA는 트래픽이 온 뒤에야 늘려 모델 서버가 뜨기 전 장애가 났다. 이 글은 쿠버네티스 커스텀 컨트롤러 Prescaler로 발송 전에 미리 스케일업하는 예측 오토스케일링을 다룬다.

핵심 포인트
  • 문제는 세 가지다: 선톡 발송의 예측 불가능성, RPS 기반 HPA의 반응 지연(모델 서버는 가중치 다운로드로 배포가 느림), 쿠버네티스가 Custom Metrics Server를 하나만 허용해 Prometheus와 병행 불가.
  • 해결책 Prescaler는 VirtualMetric·VirtualMetricEvent·HorizontalPodPrescaler 세 커스텀 리소스로 예측 메트릭을 정의하고 스케일 목표를 잡는다.
  • 선톡 수신자 조회와 실제 발송을 10분 간격으로 분리해 발송될 메시지 수를 미리 알고 대응 시간을 확보한다.
  • 필요 replica는 desiredReplicas = ceil[currentReplicas x (currentMetricValue / desiredMetricValue)]로 계산해 HPA의 minReplicas로 주입한다.
  • 기존 HPA를 덮지 않고 minReplicas만 올렸다가 트래픽 정상화 후 어노테이션 백업값으로 복구한다.
상세 정리
  • VirtualMetric: 예측 대상 메트릭(rps)을 정의한다. 기본값 0, 중복 리소스 값을 합치는 mergeStrategy(Sum)를 지정한다.
  • VirtualMetricEvent: 메트릭 변화 요인을 정의한다. 메트릭 소스 API 주소와 서비스별 expression(예: scheduledMessage x 2)으로 값을 변환한다.
  • HorizontalPodPrescaler: 기존 HPA를 참조하되 averageValue로 보장할 메트릭을 명시하고 minReplicas를 동적으로 조정한다.
  • 운영 흐름: 선톡 발송 전 조회 단계에서 발송 예정 메시지 수를 파악한다. Source Metric API가 start·end·values(scheduledMessage) 형태 시계열을 반환한다.
  • 스케일 계산: 반환 값을 desiredReplicas 공식에 넣어 필요 replica를 산출하고 HPA minReplicas로 설정한다. 평상시엔 기존 HPA 규칙이 그대로 동작한다.
  • 복구: 기존 minReplicas는 어노테이션에 백업해 두고 스파이크가 지나면 원값으로 되돌린다.
  • 배포·권한: Helm Chart로 배포하고 ClusterRole로 VirtualMetric·VirtualMetricEvent·HorizontalPodPrescaler에 Get·List, HPA에 Get·Update 권한을 준다. ServiceAccount·ClusterRoleBinding으로 Deployment에 바인딩한다.
  • 결과: 선톡으로 인한 급증에 사전 대응이 가능해졌고, 선톡 응답률에 맞춰 target value와 event expression을 계속 조정 중이다.
  • 의의: Custom Resource와 Custom Controller 조합으로 쿠버네티스 기본 기능을 확장해 복잡한 비즈니스 로직을 선언적으로 구현한 패턴이다.
왜 읽나예측 가능한 이벤트성 트래픽을 HPA만으로 못 막는 SRE·플랫폼 엔지니어에게 커스텀 컨트롤러 기반 예측 스케일링 설계 레퍼런스.
스캐터랩
스캐터랩 (이루다) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·cloudflare-blogCloudflare Blog·

    대규모 도그푸딩: cdnjs를 Cloudflare 개발자 플랫폼으로 이전하다

    cdnjs는 하루 90억 요청을 처리하는 오픈소스 JS/CSS CDN으로, 전 세계 웹사이트의 12%가 의존한다. 2026년 6월, Cloudflare는 6년간 GCP에서 운영하던 발행 파이프라인을 Workers, Workflows, R2, KV, Queues, Containers, Durable Objects로 완전 전환했다. 성능 문제가 아닌 관측성·유지보수성 한계가 동인이었으며, 마이그레이션 과정에서 플랫폼 한도를 직접 끌어올렸다.

    #durable-objects#workflows#cloudflare-workers+2
  2. 인프라 / DevOps·github-engGitHub Engineering·

    Dependabot 길들이기: 업데이트 묶고, 주기 늦추고, 보안은 빠르게

    GitHub의 Dependabot은 의존성 업데이트를 자동화하지만, 기본 설정에서는 10개 업데이트 = 10개 PR이 쏟아져 메인테이너가 알림을 무시하게 된다. Microsoft의 GCToolkit 사례(578개 커밋 중 92개가 Dependabot 버전 범프)를 바탕으로, 그룹핑·주기 조절·보안 업데이트 분리 3가지 설정으로 노이즈를 줄이면서 보안 속도는 유지하는 방법을 다룬다.

    #github-actions#devops#supply-chain-security+2
  3. 인프라 / DevOps·cloudflare-blogCloudflare Blog·

    Cloudflare, 프라이버시 프로토콜 디버깅 CLI pvcli 오픈소스 공개

    Cloudflare가 OHTTP(Oblivious HTTP) 등 프라이버시 보존 프로토콜 디버깅을 위한 CLI 도구 pvcli를 오픈소스(Apache-2.0)로 공개했다. 기존에는 RFC를 참조하며 바이너리를 수작업으로 파싱해야 했는데, pvcli는 curl과 유사한 문법으로 이 과정을 단일 명령으로 줄인다. Apple Private Relay·Microsoft Edge Secure Network를 구동하는 실전 규모의 경험에서 나온 도구다.

    #rust#cli#ohttp+2