Основные способы оптимизации стоимости на AWS

 

Андрей Зайчиков, архитектор AWS, в своем блоге Amazon Web Services, поделился с читателями детальной информацией об основных и наиболее часто используемых возможностях оптимизации затрат на сервисы Amazon Web Services.

Уверены, вам также будет полезна эта информация.

 

Основные варианты оптимизации затрат

… в первую очередь, но не единственные, как уточняет автор

  • Зарезервированные инстансы (Reserved Instances) – для постоянных нагрузок;
  • Scheduled Reserved Instances – для нагрузок, постоянно возникающих в четко определенные моменты времени;
  • Спотовые инстансы (Spot Instances) – для получения во временное пользование простаивающих серверов на сотовом рынке (с существенной скидкой);
  • Оптимизация времени использования ресурсов;
  • Оптимизация объема использования ресурсов;
  • Контроль неиспользуемых ресурсов.

 

Зарезервированные инстансы (Reserved Instances)

Если вы точно знаете, что определенное количество EC2 машин будет использоваться постоянно в течение года или даже более длительного периода, RI – отличный способ сэкономить. Стоимость RI состоит из двух основных компонент – начальный платеж и платеж за час работы сервера. Кроме экономии вы получаете гарантию наличия мощности в вашем распоряжении на протяжении периода резервирования.

RI – это способ резервирования EC2 машин, который доступен в трех вариантах:

  • No Upfront – нет начального платежа, наименьшая скидка в сравнении с другими RI;
  • Partial Upfront – этот вариант предполагает достаточно существенный начальный платеж и, соответственно, существенную скидку на использование EC2;
  • All Upfront – вся стоимость EC2 машины выплачивается сразу, однако итоговая годовая стоимость будет существенно ниже.
    Кроме существенного снижения стоимости эта опция может рассматриваться в качестве средства управления валютными рисками.

Также появилась возможность резервирования части времени EC2 машин для выполнения периодических задач (например, ежемесячная обработка отчетности). Такой вариант резервирования называется Scheduled Reserved Instances. Стоимость таких машин несколько ниже, чем заказ виртуальных машин по требованию.

 

Спотовые инстансы (Spot Instances)

Spot Instances – это, фактически, простаивающие на текущий момент виртуальные мощности. Могут быть заказаны в двух основных вариантах:

  • Обычные Spot Instances;
  • Spot Instances для продолжительного использования (defined duration).

Spot инстансы могут быть использованы в auto-scaling events либо, что встречается чаще, в качестве ресурсов для запуска больших вычислительных нагрузок.

 

Оптимизация времени работы

Оптимизация времени работы ресурсов dev/test среды – это интересная и часто недооцененная возможность экономии значительных средств. Кроме того, использовать эту возможность довольно просто – необходимо просто настроить машины таким образом, чтобы их можно было включать и выключать без потери данных, результатов тестирования и (если кто-то так делает) изменений в коде. Это вполне реализуемо с использованием таких функций, как EC2 AMI, EBS, CloudFormation и других, а также с использованием средств автоматизации. Отдельно нужно отметить, что технологически включение и выключение среды без потери состояния и данных – первый шаг к реализации HA & DR для ваших приложений.

Оптимизация времени работы может сэкономить вам много средств если вся ваша команда работает не 24/7.

 

Оптимизации объема ресурсов

AWS позволяет вам самостоятельно получить необходимые ресурсы в тот момент, когда у вас возникла потребность.

В момент, когда вам потребуются ресурсы вам не нужно будет выполнять сложные административные процедуры или ждать несколько дней, пока служба эксплуатации выделит вам необходимые мощности. Вы можете получить все сразу.

 

Контроль неиспользуемых ресурсов

Неиспользуемые ресурсы нередко становятся существенным источником расходов в AWS. Если спроецировать такую ситуацию на распределенную команду разработчиков, которая проводит множество экспериментов и одновременно работает над большим количеством проектов проблема неиспользуемых ресурсов может приобрести достаточно серьезный масштаб.

В AWS есть несколько основных способов определения наличия неиспользуемых ресурсов. К самым доступным можно отнести:

  • Прогнозирование счета с помощью Cost Explorer;
  • Trusted Advisor – инструмент, выдающий рекомендации по четырем основным направлениям (безопасность, производительность, надежность и оптимизация стоимости).

 

Несколько основных рекомендаций при работе с AWS, которые позволят сократить вероятность появления неиспользуемых ресурсов:
  • ограничивайте права разработчиков – выделяйте своим разработчикам права по мере необходимости, создайте каждому по отдельной подсети для экспериментов, используйте VPC и тэги для контроля scope проекта – это поможет понять, кто и сколько ресурсов потратил, а также сократит риск запуска ненужных ресурсов;
  • используйте тэги – они помогут вам лучше разбираться и контролировать вашу среду.
    Правильно организовав тэги, всегда сможете определить: что, кто, когда и кем было запущено, а также (что немаловажно) можно ли это выключить;
  • используйте средства автоматизации для выделения и освобождения ресурсов (Amazon CloudFormation) – они позволяют не только создавать, но и корректно освобождать ресурсы стека.
    Вы можете создавать и удалять целые среды с использованием одного инструмента просто нажав одну кнопку;
  • если вы используете собственные скрипты – не забывайте удалять ресурсы, обычно они связаны друг с другом. Ошибки при удалении позволят найти неиспользуемые ресурсы;
  • не недооценивайте влияние правильно построенной архитектуры на итоговую стоимость решения – рассматривайте сервисы AWS уровня приложений.