korean-docs
Wave Autoscale
Autopilot Scheduler

Autopilot Scheduler

Autopilot Scheduler를 사용하면 cron 표현식으로 특정 시간에 서로 다른 Autopilot 설정(Autopilot Presets라고 부릅니다)을 적용할 수 있습니다. 영업시간, 프로모션 이벤트, 유지보수 기간처럼 트래픽 패턴을 미리 알 수 있는 경우에 사용하세요.

개요

Autopilot의 ML은 동적 스케일링을 처리하고, Scheduler는 다음을 가능하게 합니다:

  • 예정된 시간에 서로 다른 Autopilot Preset으로 전환
  • 알려진 트래픽 이벤트(세일, 런칭, 캠페인)에 대비
  • 오프피크 시간대 비용 최적화
  • 평일과 주말에 서로 다른 전략 적용

예시: 영업시간에는 "Optimize for Performance" preset을 실행하고, 야간에는 "Optimize for Cost" preset으로 전환합니다.

Scheduler 접근하기

  1. 사이드바에서 Deployments로 이동합니다
  2. 페이지 상단의 Schedules 탭을 클릭합니다
  3. 페이지에는 다음이 표시됩니다:
    • 왼쪽: 예정된 이벤트를 모두 보여주는 월간 캘린더
    • 오른쪽: 스케줄 목록과 사용 가능한 Autopilot Preset

핵심 개념

Schedules

특정 시간에 Autopilot Preset을 활성화하는 시간 기반 규칙입니다:

  • Cron 표현식: 스케줄이 활성화되는 시점을 정의합니다(분, 시, 일, 월, 요일, 연도)
  • Duration: preset이 활성 상태를 유지하는 시간(분)입니다
  • Pre-execution: cron 시각보다 몇 분 먼저 활성화할지 설정하는 선택 항목입니다
  • Multiple Presets: 하나의 schedule에서 배포마다 서로 다른 preset을 적용할 수 있습니다

예시: 하나의 schedule이 api-server에는 "Performance" preset을, worker 배포에는 "Cost" preset을 적용할 수 있습니다. 둘 다 월요일부터 금요일 오전 9시부터 오후 5시까지 실행됩니다.

Autopilot Presets

schedule에 할당할 수 있는 재사용 가능한 Autopilot 설정입니다:

  • Autopilot Presets 카드에서 schedule과 별도로 생성합니다
  • 전략, 임계값, min/max replica 등 모든 Autopilot 설정을 포함합니다
  • 하나의 preset을 여러 schedule에서 사용할 수 있습니다
  • 각 preset에는 설명이 담긴 제목이 필요합니다(예: "Business Hours Performance", "Weekend Cost Mode")

함께 동작하는 방식

  1. 서로 다른 설정으로 Autopilot Presets를 생성합니다
  2. cron 표현식으로 Schedule을 생성합니다
  3. schedule에 preset을 추가하고, 각 preset을 어떤 배포에 적용할지 선택합니다
  4. cron 시각이 되면 Wave가 지정된 배포에 preset을 적용합니다
  5. duration이 끝나면 배포는 기본 설정으로 돌아갑니다

첫 Schedule 만들기

1단계: 클러스터 선택

Schedules 탭 상단의 Cluster Selector 드롭다운에서 스케줄을 적용할 클러스터를 선택합니다.

Cluster Select

2단계: Autopilot Preset 생성(필요한 경우)

schedule을 만들기 전에 Autopilot Preset이 필요합니다. 오른쪽 Autopilot Presets 카드에서:

  1. 카드 헤더의 "+" 버튼을 클릭합니다
  2. 모든 Autopilot 설정 옵션이 담긴 모달이 열립니다:
    • Title: 설명이 담긴 이름을 입력합니다
    • Strategy: Performance 또는 Cost
    • Application Type: CPU Intensive 또는 Memory Intensive
    • Thresholds: CPU%, Memory%, Network, Request 메트릭
    • Min/Max Replicas: 스케일링 범위
    • Cooldown Periods: stabilization 시간
    • 그 외 다양한 옵션(자세한 내용은 Core Configuration 참고)
  3. Save를 클릭합니다

시나리오별로 여러 preset을 만들어 두세요(예: "Business Hours", "Off Hours", "Flash Sale").

Autopilot Preset

3단계: Schedule 생성

오른쪽 Schedules 카드에서:

  1. 카드 헤더의 "+" 버튼을 클릭합니다
  2. 오른쪽에 schedule 입력 폼이 담긴 drawer가 열립니다
Autopilot Schedule

Basic Information

  • Schedule Name: 설명이 담긴 이름(예: "Weekday Business Hours")
  • Enabled: schedule을 활성화/비활성화하는 토글입니다(기본값: 활성화)

Cron Expression

6개의 개별 필드로 schedule이 활성화되는 시점을 정의합니다:

FieldValuesDescriptionExample
Minutes0~59시(hour) 내의 분0 (정각)
Hours0~23하루 중 시각(24시간제, UTC)9 (UTC 오전 9시)
Day of Month1~31 또는 *월 중 날짜* (매일)
Month1~12 또는 *연중 월* (매월)
Day of Week1~7 또는 *요일(1=일요일)2-6 (월~금)
Year4자리 또는 *특정 연도* (매년)

자주 쓰는 패턴 (한국 시간 → UTC):

  • 평일 오전 9시 KST: 0 0 * * 2-6 * (UTC 자정)
  • 매일 자정 KST: 0 15 * * * * (전날 UTC 오후 3시)
  • 매월 1일 오전 2시 KST: 0 17 1 * * * (전날 UTC 오후 5시)
  • 일요일 오전 3시 KST: 0 18 * * 7 * (토요일 UTC 오후 6시)

Minutes 필드에는 별표(asterisk)를 쓸 수 없습니다: Minutes 필드는 *가 아니라 반드시 특정 값(0~59)이어야 합니다. schedule이 매분 실행되는 것을 방지하기 위함입니다.

⚠️

타임존 고려 사항: cron 표현식은 UTC 타임존을 기준으로 평가됩니다. 다른 타임존을 사용한다면 원하는 로컬 시각을 UTC로 변환해야 합니다.

한국(UTC+9) 기준:

  • 한국 시간에서 9시간을 빼면 UTC가 됩니다
  • 예시: KST 오전 9시 → UTC 0시(자정) → 시(hour)를 0으로 설정
  • 예시: KST 오후 6시 → UTC 오전 9시 → 시(hour)를 9로 설정
  • 예시: KST 오전 2시 → UTC 오후 5시(전날) → 시(hour)를 17로 설정

중요: KST 오전 9시 이전 시각은 UTC 기준 전날로 매핑됩니다. 이에 맞춰 day-of-week 필드도 조정하세요.

cron 필드 아래의 Future Executions 타임라인을 항상 확인하세요. 브라우저의 타임존 기준으로 예정된 실행 시각을 보여주므로 schedule이 올바른지 확인할 수 있습니다.

Timing Configuration

  • Cron Pre-execution Minutes: cron 시각보다 몇 분 전에 preset을 시작할지 설정합니다(선택 항목, 기본값 0)
    • 예시: cron이 오전 9시이고 pre-execution이 15분이면 preset은 오전 8시 45분에 활성화됩니다
  • Duration (minutes): preset이 활성 상태를 유지하는 시간입니다(필수, 최소 1)
    • 예시: Duration이 480이면 8시간입니다

활성 구간은 사전 실행 시간 + Duration이며, 사전 실행이 시작되는 시점부터 잽니다. cron이 오전 9시, 사전 실행 15분, Duration 480분이면 preset은 오전 8시 45분부터 오후 4시 45분까지, 총 495분 동안 활성 상태입니다.

Wave 3.4.1에서 수정되었습니다. 이전 버전은 구간의 끝을 사전 실행 시작이 아니라 cron 시각부터 계산해서, 미리보기에서는 사전 실행 + Duration 동안 유지되는 것처럼 보이지만 실제로는 Duration만큼만 유지됐습니다. 그래서 워크로드가 사전 실행 시간만큼 일찍 기본 설정으로 돌아갔습니다. 같은 수정으로, 이전에는 아예 활성화되지 않던 두 가지 경우도 함께 해결됐습니다. 사전 실행 시간이 cron 발생 간격보다 긴 경우와, 발생 시각의 정확히 그 초에 스케줄이 평가되는 경우입니다.

Add Autopilot Presets

이제 preset을 배포에 할당합니다:

  1. **"+ Add Autopilot Preset"**을 클릭합니다
  2. preset 카드가 나타나며 다음을 포함합니다:
    • Config dropdown: 사용할 Autopilot Preset을 선택합니다
    • Deployment selector: 트리 기반 transfer 컴포넌트로 다음을 보여줍니다:
      • 왼쪽 패널: namespace → deployment 트리
      • 오른쪽 패널: 선택된 deployment
  3. 트리에서 deployment를 선택해 오른쪽 패널로 옮깁니다
  4. 배포마다 다른 설정을 적용하려면 이 과정을 반복해 preset을 추가하세요
⚠️

검증 규칙:

  • 각 preset은 서로 다른 Autopilot Preset config를 사용해야 합니다(중복 불가)
  • 하나의 schedule 안에서 각 deployment는 preset 하나에만 할당할 수 있습니다
  • 동일한 deployment를 두 번 추가하려고 하면 오류가 표시됩니다

4단계: 저장 및 확인

  1. 오른쪽 하단의 Save를 클릭합니다
  2. schedule이 Schedules 목록에 다음과 함께 나타납니다:
    • 색이 입혀진 왼쪽 테두리(schedule마다 고유한 색)
    • schedule 제목
    • cron 표현식과 duration을 보여주는 설명
  3. schedule은 왼쪽 캘린더에도 표시되어 실행 시점을 보여줍니다

Schedules 탭 이해하기

캘린더 뷰 (왼쪽)

월간 캘린더에 예정된 이벤트가 표시됩니다:

  • 색상 점: schedule마다 고유한 색이 있습니다(ID로부터 생성)
  • 이벤트 날짜: 각 schedule의 cron 표현식을 기준으로 실행 시점을 보여줍니다
  • 탐색: 화살표로 다른 월을 확인할 수 있습니다
  • 필터링: 캘린더는 현재 보이는 날짜 범위만 자동으로 필터링해 보여줍니다

Schedules 목록 (오른쪽 상단 카드)

선택한 클러스터의 모든 schedule입니다:

  • 색상 테두리: 캘린더 이벤트와 매칭되는 시각적 표시입니다
  • Title: schedule 이름
  • Description: cron 표현식과 duration 요약
  • Status: 비활성화된 schedule은 투명도가 낮게(30%) 표시됩니다
  • Count: 하단에 전체 schedule 개수가 표시됩니다
  • 클릭해서 편집: schedule을 클릭하면 drawer에서 열립니다

Autopilot Presets 목록 (오른쪽 하단 카드)

사용 가능한 모든 Autopilot Preset입니다:

  • preset 설정 목록
  • 클릭하면 preset 설정을 편집할 수 있습니다
  • 이 preset들은 schedule에 할당할 수 있습니다
Autopilot Schedule Set

자주 쓰는 스케줄링 패턴

패턴 1: 영업시간 vs 비영업시간

활용 사례: 평일 트래픽이 있는 B2B SaaS

1단계: Preset 생성:

Autopilot Preset 3개를 생성합니다:

  1. "Business Hours Performance"
    • Strategy: Optimize for Performance
    • Min Replicas: 8, Max Replicas: 30
  2. "Off Hours Cost Savings"
    • Strategy: Optimize for Cost
    • Min Replicas: 2, Max Replicas: 10
  3. "Weekend Mode"
    • Strategy: Optimize for Cost
    • Min Replicas: 1, Max Replicas: 8

2단계: Schedule 생성:

Schedule 1: "Weekday Business Hours"

Cron: 0 0 * * 2-6 *  (9 AM KST Monday-Friday = midnight UTC)
Duration: 540 minutes (9 hours, ends at 6 PM KST)
Preset: "Business Hours Performance" → api-server, web-app

Schedule 2: "Weekday Nights"

Cron: 0 9 * * 2-6 *  (6 PM KST Monday-Friday = 9 AM UTC)
Duration: 900 minutes (15 hours, ends at 9 AM KST next day)
Preset: "Off Hours Cost Savings" → api-server, web-app

Schedule 3: "Weekends"

Cron: 0 15 * * 6,7 *  (Midnight KST Sat & Sun = 3 PM UTC Fri & Sat)
Duration: 1440 minutes (24 hours)
Preset: "Weekend Mode" → api-server, web-app

패턴 2: 플래시 세일 이벤트

활용 사례: 이커머스 프로모션 세일

Preset: "Black Friday Sale"

  • Strategy: Optimize for Performance
  • Min Replicas: 25, Max Replicas: 100
  • Predictive Scaling: Enabled

Schedule: "Black Friday 2025"

Cron: 0 23 27 11 * 2025  (Nov 28, 2025 8 AM KST = Nov 27 11 PM UTC)
Pre-execution: 30 minutes  (starts at 7:30 AM KST)
Duration: 720 minutes (12 hours, ends at 8 PM KST)
Preset: "Black Friday Sale" → checkout-service, product-api, payment-service

이렇게 동작하는 이유:

  • Pre-execution으로 30분 일찍 스케일링을 시작합니다
  • 세일 시간 내내 높은 용량을 유지합니다
  • 2025년의 특정 날짜로 지정해 일회성 이벤트로 만듭니다

패턴 3: 주간 유지보수 기간

활용 사례: 매주 일요일 아침 예정된 유지보수

Preset: "Maintenance Mode"

  • Strategy: Optimize for Performance
  • Min Replicas: 10, Max Replicas: 10 (고정)
  • Gradual Scaling: 300초 (매우 보수적)

Schedule: "Sunday Maintenance"

Cron: 0 17 * * 7 *  (2 AM KST Sunday = 5 PM UTC Saturday)
Duration: 120 minutes (2 hours)
Preset: "Maintenance Mode" → backend-api

이유: 배포 중에도 replica 수(10)를 고정해 scale-up도 scale-down도 하지 않습니다.

패턴 4: 서비스별 계층형 스케일링

활용 사례: 피크 시간에 서비스마다 다른 설정이 필요한 경우

Presets:

  1. "Peak Performance" - Min: 20, Max: 80
  2. "Peak Moderate" - Min: 10, Max: 40
  3. "Peak Light" - Min: 5, Max: 20

Schedule: "Weekday Peak Hours"

Cron: 0 1 * * 2-6 *  (10 AM KST weekdays = 1 AM UTC)
Duration: 420 minutes (7 hours, ends at 5 PM KST)

Preset Mappings:
- "Peak Performance" → checkout-api, payment-service (critical services)
- "Peak Moderate" → product-api, user-service (medium load)
- "Peak Light" → analytics-worker, email-service (background jobs)

이유: 하나의 schedule로 서비스 계층마다 다른 설정을 적용합니다.

Schedule 동작 방식

실행 흐름

  1. Cron Trigger: cron 표현식이 현재 시각과 일치할 때
  2. Pre-execution(설정된 경우): cron 시각보다 먼저 활성화
  3. Preset Application: 각 preset이 할당된 deployment에 적용됨
  4. Active Duration: 설정된 시간(분) 동안 preset이 활성 상태 유지
  5. Return to Default: duration이 끝나면 deployment는 기본 설정을 사용

캘린더 표시

캘린더는 cron 표현식으로 계산된 모든 향후 실행 날짜를 보여줍니다:

  • cron을 기반으로 동적으로 생성됩니다
  • 대략 다음 10~20회의 실행을 보여줍니다
  • 보이는 월을 변경하면 자동으로 업데이트됩니다
  • 색상 점은 schedule 고유의 색과 일치합니다

Cron 표현식 팁

📅

자주 쓰는 Cron 패턴 (한국 시간 → UTC):

Every weekday 9 AM KST:    0 0 * * 2-6 *     (midnight UTC)
Every day midnight KST:    0 15 * * * *      (3 PM UTC prev day)
Monday mornings 8 AM KST:  0 23 * * 1 *      (11 PM UTC Sunday)
First of month 2 AM KST:   0 17 1 * * *      (5 PM UTC prev day)
Every 6 hours from 0 KST:  0 15,21,3,9 * * * * (6-hour intervals in UTC)
Weekend mornings 10 AM KST: 0 1 * * 1,7 *    (1 AM UTC Sat & Sun)
Specific date/time:        0 5 25 12 * 2025  (Dec 25, 2025 2 PM KST = 5 AM UTC)

테스트: cron이 의도대로 동작하는지 항상 "Future Executions" 타임라인으로 확인하세요!

문제 해결

⚠️

Schedule이 활성화되지 않나요?

  • Schedule이 활성화(toggle on)되어 있는지 확인하세요
  • cron 표현식이 유효한지 확인하세요(Future Executions 타임라인 확인)
  • 드롭다운에서 올바른 클러스터를 선택했는지 확인하세요
  • preset mapping에서 deployment가 제대로 선택되었는지 확인하세요
  • deployment/namespace 이름에 오타가 없는지 확인하세요

Cron 표현식이 유효하지 않나요?

  • Minutes는 0~59 사이여야 합니다(* 불가)
  • Day of week는 1~7 사이여야 합니다(1=일요일)
  • 6개 필드 모두 필수입니다
  • 값이 유효한 범위 내에 있어야 합니다

엉뚱한 설정이 적용되나요?

  • schedule이 겹치지 않는지 확인하세요(캘린더 뷰)
  • 올바른 preset이 선택되었는지 확인하세요
  • TreeTransfer에서 deployment 선택을 확인하세요
  • duration이 충분히 긴지 확인하세요

Preset을 사용할 수 없나요?

  • 각 preset은 schedule마다 한 번만 사용할 수 있습니다
  • preset이 삭제되었을 수 있습니다

캘린더가 비어 있나요?

  • 올바른 클러스터가 선택되었는지 확인하세요
  • schedule이 향후 월에 있는지 확인하세요
  • schedule이 활성화되어 있는지 확인하세요

관련 문서