Реализация Predictive Scaling (масштабирование по прогнозу)
Мы часто сталкиваемся с ситуацией, когда reactive scaling не успевает за ростом нагрузки: инстансы добавляются уже после того, как пользователи почувствовали тормоза. Scheduled scaling требует ручного поддержания расписаний и ломается при любом изменении паттернов. Predictive Scaling — третий подход, который решает эти проблемы: AWS анализирует исторические данные о нагрузке за последние 14 дней и строит ML-прогноз на ближайшие 48 часов, автоматически добавляя инстансы до того, как нагрузка вырастет. Наши сертифицированные инженеры с 10+ лет опыта настраивают это решение под ключ.
Это не замена reactive scaling, а дополнение к нему. Predictive отрабатывает регулярные паттерны, reactive — неожиданные всплески. Мы гарантируем, что ваша инфраструктура будет готова к любым сценариям.
Как работает ML-прогнозирование AWS
Predictive Scaling использует ансамблевые модели временных рядов, обученные на паттернах конкретного ASG. Для прогноза нужно минимум 24 часа истории, но точность растёт с накоплением данных — оптимально от 2 недель. Модель улавливает:
- Суточные паттерны (утренний рост, ночное затишье)
- Недельные циклы (будни vs выходные)
- Комбинации (понедельник утром всегда выше, чем пятница)
Модель не улавливает разовые события (запуск рекламы, новость в прессе), а также технические аномалии (DDoS, crawler-всплеск). Для этого — reactive scaling поверх.
Почему Predictive Scaling не отменяет reactive scaling?
Это частый вопрос от заказчиков. Predictive Scaling идеален для предсказуемых циклов, но бессилен против внезапных всплесков. Поэтому в production-конфигурации мы всегда комбинируем оба подхода: Predictive подготавливает ёмкость под регулярные пики, а Target Tracking дорабатывает при отклонениях. Такая связка обеспечивает SLA 99.9% даже при хаотичном трафике.
Настройка через Terraform
resource "aws_autoscaling_policy" "predictive" {
name = "predictive-scaling"
autoscaling_group_name = aws_autoscaling_group.app.name
policy_type = "PredictiveScaling"
predictive_scaling_configuration {
metric_specification {
target_value = 50 # целевой CPU%
predefined_scaling_metric_specification {
predefined_metric_type = "ASGAverageCPUUtilization"
}
predefined_load_metric_specification {
predefined_metric_type = "ASGTotalCPUUtilization"
}
}
mode = "ForecastAndScale"
scheduling_buffer_time = 300 # 5 минут до прогнозируемого пика
max_capacity_breach_behavior = "IncreaseMaxCapacity"
max_capacity_buffer = 10 # запас 10% сверх прогноза
}
}scheduling_buffer_time: 300 — Predictive Scaling запускает инстансы за 5 минут до прогнозируемого пика. Это покрывает время запуска и инициализации. Для приложений с долгим warmup (Spring Boot) — нужно 600–900 секунд.
mode: ForecastOnly — начните с этого режима. ASG будет строить прогноз и показывать его в CloudWatch, но не принимать никаких action. Это позволяет оценить точность прогноза перед включением реального масштабирования.
Как выбрать метрику для прогноза?
Predictive Scaling работает с двумя типами метрик:
| Тип метрики | Примеры | Когда использовать |
|---|---|---|
| Predefined | ASGAverageCPUUtilization, ALBRequestCountPerTarget, ASGAverageNetworkIn/Out |
Для типовых нагрузок: CPU-bound, веб-сервисы, I/O-интенсивные задачи |
| Custom (CloudWatch) | Пользовательские метрики (RPS, latency, очередь) | Когда стандартные метрики плохо коррелируют с реальной загрузкой (например, CPU-idle сервис с памятью) |
Для load metric и scaling metric лучше использовать разные метрики: load metric описывает общую нагрузку на fleet (ASGTotalCPUUtilization = сумма CPU всех инстансов), scaling metric — целевое значение на инстанс.
Практические ограничения
Predictive Scaling работает только для EC2 Auto Scaling Groups. ECS Service, DynamoDB, Lambda Provisioned Concurrency — только через Scheduled Actions или Target Tracking.
Predictive Scaling не умеет масштабироваться вниз в ForecastAndScale режиме — только вверх. Scale-in остаётся за Target Tracking. Если паттерн нагрузки нестабилен (стартап с быстро меняющимися паттернами, A/B тест меняет трафик) — 14-дневная история будет зашумлена, и прогноз получится неточным. В таких случаях Scheduled Actions + reactive scaling будет надёжнее.
Проверка точности прогноза
В CloudWatch смотрим PredictiveScalingLoadForecast и PredictiveScalingCapacityForecast. Сравниваем прогнозируемую нагрузку с фактической. Если прогноз систематически ошибается на 30%+ — либо паттерн нестабилен, либо выбрана неправильная метрика. В AWS Console (EC2 → Auto Scaling Groups → вкладка Predictive Scaling) есть визуализация прогноза vs факт — удобно для начальной калибровки.
Что входит в работу
При заказе услуги мы предоставляем:
- Анализ исторических данных и выбор оптимальной метрики
- Настройку Predictive Scaling через Terraform (ForecastOnly → ForecastAndScale)
- Интеграцию с существующими reactive и scheduled политиками
- Мониторинг точности прогноза в CloudWatch в течение 2 недель
- Документацию runbook и рекомендации по scale-in
- Гарантию качества: если прогноз систематически ошибается более чем на 20%, мы бесплатно пересматриваем конфигурацию
Комбинация с Reactive Scaling
Финальная конфигурация для production:
| Компонент | Роль |
|---|---|
| Predictive Scaling (ForecastAndScale) | Отрабатывает регулярные паттерны, готовит capacity заранее |
| Target Tracking (CPU @ 60%) | Дорабатывает при неожиданных всплесках поверх predictive |
| Scheduled Actions | Для разовых событий (промо, запуски), которые predictive не знает |
Все три механизма активны одновременно и не конфликтуют — ASG выбирает максимальный desired из всех действующих политик.
Сроки и оценка
Включение Predictive Scaling в ForecastOnly режиме — несколько часов. Наблюдение за прогнозом в течение 1–2 недель, переход в ForecastAndScale и тонкая настройка параметров — 3–5 рабочих дней суммарно (с перерывами на накопление данных). Стоимость рассчитывается индивидуально: напишите нам, и мы оценим ваш проект.
Получите консультацию — наши инженеры помогут подобрать оптимальную конфигурацию Predictive Scaling под вашу нагрузку.







