Что такое автоскалирование?

«Что такое автоскалирование?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Автоскалирование — это автоматическое увеличение или уменьшение количества вычислительных ресурсов (виртуальных машин, контейнеров, реплик приложения) в ответ на изменение нагрузки. Основная цель — баланс между производительностью (обеспечение SLA при пиках) и оптимизацией затрат (отключение неиспользуемых ресурсов).

Основные типы:

  • Горизонтальное масштабирование (Scaling Out/In): Изменение количества экземпляров. Например, увеличение количества подов в Kubernetes при росте CPU-нагрузки. Это наиболее гибкий и отказоустойчивый подход в облачных средах.
  • Вертикальное масштабирование (Scaling Up/Down): Изменение мощности существующего экземпляра (CPU, RAM). Часто требует перезагрузки сервиса и имеет физические ограничения.

Практический пример с HPA в Kubernetes: Мы настраиваем HorizontalPodAutoscaler для автоматического масштабирования Deployment на основе средней утилизации CPU.

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: frontend-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: frontend
  minReplicas: 2
  maxReplicas: 15
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 65

Ключевые метрики и триггеры:

  • Ресурсные: CPU, RAM.
  • Кастомные метрики из приложения: RPS (запросов в секунду), длина очереди сообщений, время ответа 95-го перцентиля.
  • Внешние метрики: например, глубина очереди в AWS SQS или Cloud Pub/Sub.

Почему это важно: Без автоскалинга приложения либо простаивают с избыточными ресурсами, либо падают под нагрузкой. Современные облачные приложения проектируются как stateless, чтобы горизонтальное масштабирование было максимально эффективным.