Блог Amazon Web Services
10 вещей, которые вы можете сделать сегодня, чтобы уменьшить затраты на AWS
Оригинал статьи: ссылка (Shankar Ramachandran, SA Specialist, Cost Optimization)
Введение
Широкий набор сервисов AWS, а также различные варианты оплаты позволяют эффективно управлять расходами, при этом сохраняя необходимый объём ресурсов и производительность в соответствии с вашими бизнес-требованиями. Основы процесса оптимизации затрат на AWS остаются неизменными: мониторинг уровня использования ресурсов AWS и ваших расходов, анализ данных для нахождения возможностей экономии и принятие мер для реализации такой экономии. В этой же статье я расскажу о более тактическом подходе к уменьшению затрат при изменении спроса пользователей.
Прежде чем вы начнёте
До принятия каких-либо действий по снижению затрат выясните стоимость услуг AWS, которые вы используете. Уровень бесплатного пользования AWS предоставляет клиентам возможность бесплатно исследовать и запускать сервисы AWS с учётом установленных лимитов для каждого сервиса. Следуйте шагам из этого видео, чтобы проверить, что вы не превышаете лимитов уровня бесплатного пользования.
Кроме того, вы можете использовать AWS Cost Explorer для просмотра и анализа ваших затрат и уровня использования ресурсов AWS. Этот инструмент по умолчанию предоставляет отчёты, которые помогают вам визуализировать как затраты в целом (например, с разделением по аккаунту или сервису AWS), так и на уровне отдельных ресурсов (например, инстанса EC2). Начните с нахождения аккаунтов с самыми высокими расходами с помощью отчёта «Monthly costs by linked account» (ежемесячные расходы, сгруппированные по связанному аккаунту). Затем найдите сервисы, которые вносят основной вклад в расходы этих аккаунтов. Вы можете сделать это с помощью отчёта «Monthly costs by service» (ежемесячные расходы, сгруппированные по сервису). Используйте почасовую детализацию, а также фильтрацию по тегам для поиска самых затратных ресурсов.
Детализация на уровне ресурсов в Cost Explorer
Теперь вы можете более детально понять ваши расходы. Далее, давайте рассмотрим 10 тактических шагов, которые вы можете выполнить для уменьшения расходов, используя существующие инструменты и сервисы AWS.
#1 Определите инстансы Amazon EC2 с низкой нагрузкой и сократите расходы путём остановки или изменения размера
Используйте AWS Cost Explorer Resource Optimization для получения отчёта об инстансах EC2, которые либо простаивают, либо имеют низкую нагрузку. Вы можете уменьшить расходы, остановив эти инстансы или уменьшив их размер. Используйте AWS Instance Scheduler для автоматической остановки инстансов. Используйте AWS Operations Conductor для автоматического изменения размеров инстансов EC2 на основе рекомендаций из Cost Explorer.
Рекомендации Cost Explorer по изменению размера инстансов
Для получения рекомендаций по изменению типа инстансов, а не только уменьшению размеров внутри одного семейства, используйте AWS Compute Optimizer. Этот инструмент предлагает рекомендации по уменьшению размеров внутри одного или между разными семействами инстансов, рекомендации по увеличению размеров, чтобы избежать узких мест по производительности, а также рекомендации для инстансов EC2, входящих в группы автоматического масштабирования (Auto Scaling group).
#2 Определите тома Amazon EBS с низкой нагрузкой и сократите расходы путём создания снимка файловой системы с последующим удалением самих томов
Тома EBS с очень низкой активностью (меньше 1 IOPS в день) на протяжении 7 дней указывают на то, что они, возможно, не используются. Используйте проверку томов Amazon EBS с низкой нагрузкой в Trusted Advisor для их нахождения. Для уменьшения затрат сначала создайте снимок файловой системы (snapshot) на случай, если эти данные вам понадобятся позднее, а затем удалите сам том. Вы можете автоматизировать создание снимков с помощью Amazon Data Lifecycle Manager. Для удаления томов EBS следуйте шагам, приведённым в документации.
#3 Проанализируйте использование Amazon S3 и сократите расходы с помощью более дешёвых классов хранения
Используйте S3 Analytics для анализа паттернов доступа к хранилищу данных в течение 30 или более дней. Этот инструмент предлагает рекомендации, которые указывают на то, где вы можете использовать класс S3 Infrequent Access (S3 IA) для уменьшения расходов. Вы можете автоматизировать перемещение объектов в более дешёвый класс хранения путём использования политик жизненного цикла S3 (Life Cycle Policies). Кроме того, вы можете использовать класс S3 Intelligent-Tiering, который автоматически анализирует и перемещает ваши объекты в необходимый класс хранения.
#4 Определите инстансы Amazon RDS и Amazon Redshift с низкой нагрузкой и сократите расходы путём их остановки (RDS) или приостановки (Redshift)
Используйте проверку простаивающих инстансов БД Amazon RDS в Trusted Advisor для определения экземпляров баз данных, к которым не было подключений за последние 7 дней. Чтобы уменьшить расходы, остановите эти экземпляры с помощью шагов по автоматизации, описанных в этом посте. В случае Redshift, используйте проверку кластеров Amazon Redshift в Trusted Advisor для нахождения кластеров, к которым не было подключений за последние 7 дней, и которые имеют среднее использование CPU меньше 5% по всему кластеру в течение более 99% времени за последние 7 дней. Чтобы уменьшить затраты, приостановите эти кластеры, используя шаги из этого блога.
Приостановка кластеров Redshift с низкой нагрузкой
#5 Проанализируйте использование Amazon DynamoDB и сократите расходы путём использования автоматического масштабирования и режима предоставления ресурсов по требованию
Проанализируйте ваше использование DynamoDB с помощью мониторинга двух метрик в CloudWatch: ConsumedReadCapacityUnits и ConsumedWriteCapacityUnits. Чтобы автоматически увеличивать или уменьшать пропускную способность ваших таблиц DynamoDB, используйте функциональность автоматического масштабирования. С помощью шагов из документации вы можете включить автоматическое масштабирование на уже созданных таблицах. Кроме того, вы можете использовать режим предоставления ресурсов по требованию, который позволяет вам платить за операции по чтению и записи, выполняемые с вашими таблицами. Таким образом, вы платите только за то, что используете: это обеспечивает баланс между затратами и производительностью.
Выбор режима чтения / записи в DynamoDB
#6 Проверьте сетевые сервисы и сократите расходы путём удаления неиспользуемых балансировщиков нагрузки
Используйте проверку простаивающих балансировщиков нагрузки в Trusted Advisor, чтобы получить отчёт о балансировщиках, у которых значение метрики RequestCount (количество запросов) меньше 100 за последние 7 дней. Затем выполните шаги из документации для удаления балансировщика. Дополнительно вы можете использовать шаги из этого блога для проверки ваших расходов на передачу данных с помощью Cost Explorer.
Фильтры в Cost Explorer для просмотра объёма переданных данных в EC2
Если объём переданных данных из EC2 в интернет представляет собой большую статью расходов, рассмотрите возможность использования Amazon CloudFront. Любые изображения, видео или статический контент можно кэшировать на точках присутствия по всему миру, используя сеть доставки контента (Content Delivery Network, CDN) от Amazon CloudFront. Сервис CloudFront позволяет избежать необходимости в избыточном использовании ресурсов для покрытия возможных всплесков трафика.
#7 Используйте спотовые инстансы для сокращения расходов на EC2
Если ваша нагрузка устойчива к отказам, используйте спотовые инстансы для экономии до 90% расходов. Типичные примеры таких нагрузок включают инструменты по работе с большими данными, контейнеры, CI/CD, веб-серверы, высокопроизводительные вычисления (high performance computing, HPC), а также различные другие нагрузки в тестовых средах и средах разработки. Используя автоматическое масштабирование EC2, вы можете запускать как инстансы по требованию, так и спотовые инстансы для достижения необходимого объёма ресурсов. Авто-масштабирование может автоматически создавать спотовые инстансы и поддерживать необходимое количество таких инстансов даже в случае прерывания. Вы можете узнать больше о спотах из следующей сессии re:Invent 2019:
#8 Проверьте и поменяйте конфигурацию групп автоматического масштабирования в EC2
Группа автоматического масштабирования (Auto Scaling group) позволяет вашему парку EC2-инстансов расширяться или уменьшаться в зависимости от нагрузки. Проверьте историю действий по масштабированию определённой группы, используя либо команду describe-scaling-activities в AWS CLI, либо через веб-консоль, используя шаги из документации. Проанализируйте результат, чтобы понять, можно ли настроить политики масштабирования так, чтобы новые инстансы добавлялись более плавно. Также проверьте, можно ли уменьшить указанное в настройках группы минимальное количество инстансов, необходимых для обслуживания запросов от конечных пользователей.
#9 Используйте зарезервированные инстансы для сокращения расходов на RDS, Redshift, ElastiCache и Elasticsearch
Используйте зарезервированные инстансы (Reserved Instances, RI) сроком на 1 год без предоплаты для получения скидки до 42% по сравнению с ценой по требованию. Используйте рекомендации AWS Cost Explorer по приобретению RI, основанные на вашем использовании RDS, Redshift, ElastiCache и Elasticsearch. Убедитесь, что вы установили в параметрах срок, равный 1 году, и выбрали опцию без предоплаты. В таком случае вы имеете обязательство на один год, при этом точка безубыточности достигается, как правило, через 7-9 месяцев. Я советую выполнить рекомендацию #4 до рекомендации #9.
#10 Используйте Compute Savings Plans для сокращения расходов на EC2, Fargate и Lambda
Compute Savings Plans автоматически применяются к инстансам EC2 независимо от семейства, размера, зоны доступности (AZ), региона, операционной системы или настроек типа оборудования (tenancy: shared, dedicated, host). Они также применяются к Fargate и Lambda. Используйте Compute Savings Plans сроком на 1 год без предоплаты для получения скидки до 54% по сравнению с ценой по требованию. Используйте рекомендации AWS Cost Explorer и убедитесь, что вы выбрали тип Compute, срок, равный 1 году, и отключили предоплату. Как только вы подписались на Compute Savings Plans, ваши затраты на вычислительные мощности автоматически будут использовать соответствующие цены с учётом скидки. Всё использование сверх обязательства, которое вы настроили, будет оплачиваться по обычным ценам по требованию. Я советую выполнить рекомендацию #1 до рекомендации #10.
Рекомендации Savings Plans
Что дальше
После выполнения этих 10 шагов вы можете сократить расходы на EC2, Fargate, Lambda, EBS, S3, ELB, RDS, Redshift, DynamoDB, ElastiCache и Elasticsearch. Я рекомендую настроить бюджет, используя AWS Budgets, чтобы получать уведомления при изменении расходов.
Настройка бюджета для отслеживания расходов
Настройка уведомления о прогнозируемом уровне расходов
С помощью Budgets вы также можете настроить уведомления о прогнозируемых расходах (помимо уведомлений о действительных расходах). Это даст вам возможность заранее знать о возможных проблемах и проактивно уменьшать затраты.
Заключение
Чтобы узнать больше о техниках оптимизации расходов, посмотрите наш вебинар Nine Ways to Reduce Your AWS Bill. Если вам необходима помощь в оптимизации ваших нагрузок в AWS, обратитесь в поддержку или свяжитесь с вашими контактами в AWS (Account Manager, Solutions Architect, Technical Account Manager).