Auto Scaling — механизм автоматического масштабирования инфраструктуры в зависимости от текущей нагрузки. Горизонтальное масштабирование (scale out/in) — добавление/удаление экземпляров серверов. Вертикальное масштабирование (scale up/down) — увеличение/уменьшение ресурсов конкретного сервера.
AWS Auto Scaling
Auto Scaling Group (ASG) — набор EC2-инстансов с политиками масштабирования:
- Target Tracking — поддерживать метрику на заданном уровне (CPU 60%).
- Step Scaling — добавить N инстансов при достижении порога.
- Scheduled Scaling — масштабировать по расписанию (бизнес-часы).
Kubernetes HPA
Horizontal Pod Autoscaler (HPA) масштабирует количество Pod-ов:
kubectl autoscale deployment my-app --cpu-percent=50 --min=2 --max=10
Vertical Pod Autoscaler (VPA) автоматически подбирает requests/limits CPU и Memory.
Метрики для масштабирования
- CPU utilization — самая распространённая метрика.
- Memory utilization — для memory-intensive приложений.
- Custom metrics — RPS, размер очереди задач (SQS, RabbitMQ).
- HTTP request rate — через Application Load Balancer metrics.
Cooldown и Warmup
Cooldown period — время ожидания после масштабирования перед следующим. Warmup — время на инициализацию нового инстанса перед включением в балансировщик.
История
AWS Auto Scaling запущен в 2009 году. Google App Engine автоматически масштабировался с 2008 года. Kubernetes HPA появился в Kubernetes 1.1 (2015). KEDA (2019) расширил HPA для event-driven масштабирования (Kafka, RabbitMQ).
Связь с хостингом
Без Auto Scaling нужно заказывать серверы «с запасом» на пиковую нагрузку. С Auto Scaling в облаке платите только за реально используемые ресурсы. Классический VDS не масштабируется автоматически — для этого нужны облачные платформы (AWS, VK Cloud) с Auto Scaling Group или managed Kubernetes.
История Auto Scaling
Auto Scaling анонсирован Amazon в мае 2009 года как часть AWS EC2 — одна из первых облачных функций автоматического масштабирования. Google Compute Engine Autoscaler появился в 2013 году. Kubernetes Horizontal Pod Autoscaler (HPA) введён в версии 1.0 (2015). Vertical Pod Autoscaler (VPA) — в 2019 году. Кластерный автоскейлер (Cluster Autoscaler) — добавление/удаление нод в кластере автоматически.
Типы Auto Scaling
| Тип | Что масштабирует | Триггер |
|---|---|---|
| Горизонтальный (HPA) | количество инстансов/подов | CPU, RAM, custom метрики |
| Вертикальный (VPA) | ресурсы одного инстанса | исторические данные |
| Кластерный | количество нод | нехватка ресурсов в кластере |
| Предиктивный | заблаговременно | ML-прогнозирование нагрузки |
На что обращать внимание при настройке Auto Scaling
Ключевые параметры: cooldown period (защита от флапинга), минимальное и максимальное количество инстансов, метрики масштабирования. Без правильной настройки Auto Scaling может создать «yo-yo effect» — постоянное добавление/удаление инстансов. Для stateful-приложений необходимы sticky sessions или вынесение состояния во внешний Redis.
Типичные ошибки
- Масштабирование только по CPU без учёта задержек — приложение уже под нагрузкой к моменту запуска нового инстанса.
- Не настроен scale-down policy — инстансы не удаляются после снижения нагрузки, счёт растёт.
- Отсутствие health check на целевой группе — нездоровые инстансы получают трафик.