Что такое spot и reserved instances?

Что такое Spot и Reserved (резервированные) инстансы — подробное объяснение

Spot (preemptible, low-priority) инстансы — это виртуальные машины, которые облачный провайдер предоставляет из избыточной/свободной ёмкости по сильно сниженной цене. Главное свойство — такие инстансы могут быть прерваны (terminated/stopped/evicted) провайдером при возврате ёмкости владельцу; прерывание обычно сопровождается коротким уведомлением. Spot-инстансы дешевле on-demand, но их нельзя считать надёжным долгосрочным ресурсом без дополнительной устойчивости приложения.

Ключевые характеристики Spot:

  • Цена значительно ниже on-demand (часто — кратная экономия).

  • Интеррапты (прерывания) происходят при необходимости провайдера вернуть ёмкость.

  • Подходят для зада́ч, которые терпят прерывание: batch, ETL, рендеринг, ML-обучение с чекпойнтами, CI-пайплайны, масштабируемые воркеры, k8s worker-пулы.

  • Требуют механик обработки прерываний: checkpointing, сохранение состояния вовне (S3/объектное хранилище), автоматический ресpawn, эвакуация задач в очередь.

Reserved (резервированные) инстансы / committed use — это модель скидок за обязательство пользоваться ресурсами в течение длительного срока (обычно 1–3 года) или за покупку гарантированного объёма ресурсов. Вы даёте провайдеру обязательство (или платите авансом) — и получаете более низкую цену по сравнению с on-demand. В обмен — меньшая гибкость и финансовые обязательства.

Ключевые характеристики Reserved:

  • Снижение стоимости для долгосрочных, стабильных нагрузок.

  • Различные варианты: фиксированные резервы с высоким дисконтом, гибкие/convertible варианты с возможностью менять характеристики, и модель «commitment to spend» (оплата за $/час в течение срока).

  • Опции оплаты: upfront (полная предоплата), partial upfront, либо оплата по этапам — разные варианты дают разный уровень скидки.

  • Подходит для базовой, 24/7 нагрузки: базы данных, кластеры приложений, кэш-сервисы, важные сервисы с предсказуемым потреблением.

Сравнение и когда что выбирать

  • Надёжность: Reserved > On-Demand > Spot.

  • Цена: Spot (самая низкая) < Reserved (средняя, но стабильная) < On-Demand (самая высокая).

  • Гибкость: Spot и On-Demand легко создавать/удалять; Reserved даёт скидку за счёт обязательства — меньше гибкости (зависит от типа резерва).

  • Use cases:

    • Spot: массовые, прерываемые задачи; временные среды; масштабирование воркеров; дешёвые воркеры в k8s.

    • Reserved: постоянная базовая загрузка, прод-сервисы, базы данных, long-running сервисы.

Практические приемы и рекомендации

  • Комбинируйте: резервируйте «базовую» ёмкость (Reserved) для стабильного уровня, а пик-нагрузку закрывайте on-demand и Spot.

  • Для Spot: используйте checkpointing, очередь задач, распределение по типам инстансов и зонам (diversify), автоматическое пересоздание (spot fleets / mixed instance groups), обработку уведомлений о прерывании.

  • Следите за затратами и эффективностью: регулярно пересматривайте Reserved покупки (покупайте под реальную загрузку), используйте рекомендации облака по RI/Savings Plans.

  • В k8s: node pools из Spot для worker-нод + node termination handler + cluster-autoscaler с mixed instances — стандартная практика для экономии.

  • Для критичных сервисов не ставьте всё на Spot; резервируйте критическую часть на Reserved/On-Demand и используйте Spot только для некритичных задач.

Риски и как их минимизировать

  • Для Spot: потеря работы при прерывании → использовать частые чекпойнты, персистентное хранилище, очереди задач; автоматизировать восстановление.

  • Для Reserved: финансовый риск при смене архитектуры/снижения нагрузки → начинать с анализа использования и рекомендованных объёмов, выбирать гибкие опции, если доступно.