Привет, Хабр! Представляю вашему вниманию перевод статьи «How to reduce your AWS costs? Save up to $500k with these guidelines!» автора George Batschinski.
В этой статье мы в подробностях расскажем, как Back4App уменьшила свои расходы в AWS с $55,492 в месяц до $20,074 в месяц и сэкономила $500.000 за год. Мы опишем практические шаги, основанные на собственном опыте снижения затрат в AWS и поделимся советами, которые были полезны и нам.
AWS продолжает путь инноваций и доминирования на рынке облачных услуг. Он вырос настолько, что стал ключевой частью стратегии Amazon. Я с энтузиазмом отношусь к AWS, но сомнения по поводу сложности облака и стоимости привели меня к идее оптимизировать использование облака. Несмотря на то, что AWS предлагает постоянно растущий список специализированных сервисов для разных видов разработки, это не всегда самый прямой, быстрый или доступный по деньгам способ. В идеале, как только вы переходите в облако, нужно сразу продумать архитектуру, чтобы сократить расходы. Этот материал поможет ускорить оптимизацию расходов и содержит кейсы из реальной жизни, с которыми мы столкнулись по ходу нашего предприятия по снижению расходов.
Краткий обзор того, что вы найдете в этой статье:
Вот как наш счет в AWS выглядел в Январе 2019. Общая стоимость облака $55,492.
Вот как наш счет в AWS выглядел в Мае 2019. Общая стоимость была $20,074.
Первым делом! Перед тем как вы что-либо начнете делать, пожалуйста удостоверьтесь, имеет ли ваша компания право на кредиты от AWS. Вот как вы можете получить эти кредиты:
Так было в нашем случае! В 2016 наша компания достаточно быстро росла. Наш счет за AWS начал увеличиваться и у нас не было ни идей, ни времени оптимизировать использование AWS. Поскольку у нас не было финансирования, мы поняли — либо получим кредиты от AWS, либо сгинем. Мы готовили свой кейс для нашего аккаунт менеджерам в AWS, демонстрируя насколько быстро мы растем и плюсы для AWS в том, чтобы нас поддерживать на своей площадке. Мы показали ему, что не имеем финансирования и будем вынуждены перейти в Google Cloud (они предложили нам $100.000 кредитами для миграции в AWS) если не получим кредиты от AWS. Ответ занял около недели и AWS предоставил нам $100.000 для использования на протяжении 12 месяцев. Это было неплохая сделка и для AWS! С тех пор как истекли кредиты, мы потратили более $ 750.000 с AWS.
Если вы собираетесь тестировать новый сервис от AWS или тип инстанса, попросите кредиты у своего аккаунт менеджера. Количество кредитов будет зависеть от ваших ежемесячных затрат и общих усилий на запуск POC. Эти кредиты обычно действительны только три месяца, и вам необходимо убедиться в скорости POC. В нашем случае, мы смогли добиться $ 3000 кредитами для тестирования семьи инстансов i3.
Если вы основали свою компанию или запустили стартап, это отличный способ продвинуться вперед. Сумма кредитов составляет от $1,000 до $100,000, в зависимости от того, как презентовать свой кейс AWS. Есть несколько способов получить эти кредиты.
Одно из главных преимуществ Стартап Акселераторов в бонусах, которые они предоставляют. Один из таких бонусов – кредиты облачных провайдеров. Сумма, которую вы сможете получить, будет зависеть от Акселератора, в котором вы представлены. Одни из лучших, например, YC, Alchemist, Wayra и 500 Startups предложат вам $100,000 в кредитах AWS. В нашем случае, нас принял Alchemist Accelerator и выдал $100,000 в кредитах. К сожалению, мы не смогли воспользоваться этими кредитами, так как до этого уже воспользовались другими кредитами. Например, если вас принимают два акселератора на $100,000 каждый, у вас не получится использовать $200,000, только $100,000.
Некоторые ВФ / Группы ангелов предоставляют кредиты как часть бонусной программы. В нашем случае, нам удалось получить $10,000 маркетинговых кредитов, действительных на два года от одного из наших инвесторов. К сожалению, мы не смогли ими воспользоваться. Компании не могут использовать AWS Promotional Credits, если они уже ранее получали равную или большую сумму кредитов.
Все ведущие игроки облачного рынка предлагают кредиты стартапам. В AWS/Google сумма кредитов может доходить до $100,000. В Azure, вы можете получить $360,000 на три года.
Легкая часть закончена, а теперь приступим к сложным задачам! Нет волшебной пилюли, чтобы уменьшить затраты в AWS, вам нужно усердно работать и выполнять регулярную процедуру для мониторинга затрат! Уменьшение облачных затрат должна стать вашей ежедневной рутинной процедурой! Представьте, сколько вы сэкономите за 365 дней! Количество времени, которое вы вкладываете, зависит от размера вашей организации и ваших затрат в AWS. Я трачу около 30 минут в день для мониторинга аккаунта и расставления приоритетов для действий по снижению затрат. Помимо этого, инженеры Back4App тратят не менее 1 часа в день на внедрение инициатив по снижению стоимости.
Первая инициатива, которую мы выполнили: создание простого листа в Excel для определения приоритетов среди инициатив по снижению затрат.
Основные критерии, по которым мы определяем экономию:
В нашем случае, наибольшая экономия приходится на использование Elastic Compute Cloud (EC2), и это был первый предмет, в котором мы начали разбираться.
Первый пункт, который нужно выполнить при уменьшении затрат на EC2 – это выключать неиспользуемые инстансы. Здесь нет ничего сложного, и большая часть работы довольно прямолинейна. Все, что нужно сделать – это составить список всех инстансов, загрузить excel файл из примера и определить каждый. В нашем случае мы разбили наши инстансы на 3 основные категории:
Не останавливайте, но удаляйте инстансы
Удаляйте неиспользуемые инстансы, когда это возможно! Если вы только останавливаете их, вы продолжите платить за использование EBS!
Это действие немного сложнее, и абсолютно необходимо корректно выделить размер инстанса. Пожалуйста, убедитесь, что вы оцениваете по крайней мере одну неделю данных для увеличения вероятности корректного изменения инстанса. Подход, с помощью которого мы контролировали этот процесс, было разделение инстансов на 3 основные категории:
Способ проверки исторических данных для инстанса предельно прост. В панели управления AWS нужно перейти в Services > EC2 > Instances > Running Instances, выбрать инстанс > Monitoring. Например, вы можете проверить метрику CPU Utilization.
Уменьшайте размер инстанса последовательно
Уменьшайте размер инстанса шаг за шагом. Например, не уменьшайте размер с t2.xlarge до t2.medium. В первую очередь уменьшите его с t2.2xlarge до t2.xlarge. Посмотрите одну неделю, проверьте сколько ресурсов используется и повторите действия по новой. Выполняя эти действия, вы сведете к минимуму шансы ошибок или даунтайма.
Резервирование инстансов может повысить вашу экономию до 70%. Пожалуйста, имейте ввиду, что, когда вы резервируете инстанс, вы платите за использование 24/7 на протяжении всего периода резервирования. Вы будете платить вне зависимости от того, используете вы инстанс или нет.
Есть два типа резервируемых мощностей:
Стандартный – который вы можете продать на AWS Marketplace, не можете конвертировать в инстанс другого типа, дешевле, чем конвертируемые инстансы.
Конвертируемый – Вы не сможете продать его на AWS Marketplace, но его можно конвертировать в инстанс другого типа, более дорогой, чем стандартные инстансы.
Конвертируемые инстансы могут быть запутанными
Конвертируемы инстансы очень непростые! Каждый раз, когда вы конвертируете инстансы, вы можете только увеличивать размер инстанса. Рассмотрим следующую ситуацию:
Вы приобретаете t3.medium, конвертируемый reserved инстанс.
Вы решаете конвертировать t3.medium в m5.large инстанс.
У вас это конечно получится! После использования m5.large инстанса на протяжении определенного времени вы захотите вернуться к t3.medium.
А это уже невозможно!
У вас не получится уменьшить потребление по конвертируемому инстансу, а только увеличить объем, который вы за него платите. Так что пожалуйста, убедитесь, что начинаете с небольшого reserved инстанса и увеличиваете его с течением времени. Не начинайте с большим инстансом, потому что вы не сможете снизить его потребление или продать на AWS Marketplace’e. Если вы сделаете ошибку с конвертируемым reserved инстансом, вы подписаны на ежемесячный платеж на 12 или 36 месяцев. В Back4App, мы всегда сперва приобретаем t2.nano и увеличиваем его по необходимости.
Я предпочитаю стандартные Reserved инстансы конвертируемым по следующим причинам:
Reserved инстансы отличные, но покупать reserved инстансы на AWS Marketplace еще лучше!
AWS Marketplace выглядит как рынок ценных бумаг! Вы иногда можете купить стандартный Reserved инстанс с ценой намного более доступной по сравнению с покупкой непосредственно от AWS. Причина проста; Компании иногда владеют излишними инстансами, которые больше не используются, но продолжают за них платить. Снижение размещаемой цены гораздо ускоряет процесс покупки.
Здесь я приведу пример того, что случилось с Back4App. Я искал 4 r4.large reserved инстанса. Мне удалось найти инстансы на AWS Marketplace с эффективным тарифом на 75% дешевле по сравнению с ценами On-Demand. AWS продавал тот же тип reserved инстансов, но со скидкой 62%.
Другое преимущество AWS Marketplace в том, что вы можете приобретать инстансы с гибким периодом использования. Сам AWS предоставляет только опции на 12 и 36 месяцев для приобретения reserved инстансов. AWS Marketplace гораздо более гибкий! Вы можете приобрести, например, reserved инстансы на 15 месяцев за тот же ценник, что и на 36 месяцев. Некоторые компании предпочитают долгосрочные обязательства (36 месяцев), и до того, как обязательство истекло, они продают их на AWS Marketplace. Новый покупатель будет использовать инстанс только на протяжении оставшегося периода, например:
Основная трудность в том, чтобы найти на AWS Marketplace нужные инстансы. Отличный способ упростить поиск инстансов – искать их в нескольких зонах доступности, а не только в той, где вы расположились. Как только вы приобретете инстанс, его можно модифицировать, и приписать к другой зоне доступности, или превратить в региональный инстанс. Сделать это совсем не сложно, но пожалуйста следуйте инструкции ниже:
Следование этим шагам позволит вам приобрести Стандартные Reserved инстансы в любой зоне доступности и модифицировать под вашу зону доступности.
Важное уточнение для пользователей вне юрисдикции США. Вы не сможете продавать Стандартные Reserved инстансы на Marketplace, если у вас нет юридического лица в штатах. Если ваша компания находит вне соединенных штатов, вы сможете покупать инстансы на Маркетплейсе, но не сможете продавать их.
Я люблю Spot инстансы! Вы можете сэкономить до 90% используя их, и это не потребует больших вложений! Единственный минус Spot инстансов в том, что AWS может удалить эти инстансы в мгновении ока или после двухминутного предупреждения. В связи с этим, такой тип инстансов может быть использован только для отказоустойчивых или гибких нагрузок.
Используйте SpotInst, чтобы запускать Spot инстансы
Безопасный способ запускать Spot инстансы и свести к минимуму риск даунтайма – использовать платформу SpotInst. Этот сервис подключается к вашему AWS аккаунту и управляет распределением Spot инстансов. В случае выключения инстанса, сервис заменит его на On Demand и предотвратит даунтайм. Тарифы тоже довольно интересные, они снимают по 20% от того, что было сэкономлено (между разницей в цене On-demand и Spot).
Отличный сценарий для Spot инстансов – это использование копии серверов для баз данных или для эластичного расширения приложений. Используйте SpotInst чтобы управлять выделением Spot инстансов, и скорее всего, вы никогда не столкнетесь с даунтаймом, связанным с использованием данного класса инстансов.
AWS Auto Scaling мониторит ваши приложения и автоматически подстраивает мощности, чтобы поддержать стабильную, предсказуемую мощность при наименьшей цене. Можно настроить автоматическое масштабирование для автоматического старта и остановки EC2 инстансов. Автоматическое масштабирование учитывает показатели ресурсов, такие как CPU, API запросы и время включения/выключения.
Чтобы свести затраты к минимуму, необходимо использовать автоматическое масштабирование + Spot инстансы + Reserved инстансы. Давайте рассмотрим реальную ситуацию, с которой мы столкнулись в Back4App. Рабочие нагрузки меняются в течение дня. Количество запросов, которое мы получаем – не равномерное и имеет пики нагрузки использования в определенные часы. Чтобы решить эту проблему, мы выделяем Reserved Instance’ы для минимальной границы потребления, и масштабируемся спотовыми инстансами. Рисунок ниже помогает понять конфигурацию. Вот сколько вы можете сэкономить:
Настраивайте масштабирование
Настраивайте свое вертикальное и горизонтальное масштабирование (Cloudformation)
Самые дорогие: Sao Paulo, Sydney и Hong Kong
Рассмотрим следующий пример:
Эта же конфигурация будет дороже на 102% в Sao Paulo по сравнению с North Virginia.
Централизация операций в одном регионе так же имеет свои плюсы.
В Back4App у нас не получилось централизовать все операции в North Virginia из-за охвата нашего бизнеса и требований клиентов. Мы решили создать кластер в США, Европе и Азии. Мы централизовали наши операции в этих кластерах и расширили каждый регион насколько это было возможно.
AWS время от времени запускает новые типы инстансов. Новые поколения мощнее и дешевле.
Старое поколение инстансов
C4.large
2 ядра
3.75 Гб памяти
$ 0.100/час
Новое поколение инстансов
C5.large
2 ядра
4 Гб памяти
$ 0.085/час
Новое поколение на 15% дешевле и на 6% мощнее!
Разрешите enhanced network
Разрешите enhanced network для лучшей производительности инстанса!
EBS предоставляет объемы защищенного хранилища для использования с инстансами EC2 в облаке AWS. Каждый объем EBS продублирован внутри зоны доступности, чтобы защитить вас от сбоя аппаратуры, предоставляя высокую доступность и надежность. Стоимость каждого хранимого гигабайта зависит от типа объема, который вы будете использовать. Самый часты тип это General Purpose SSD и Magnetic.
General Purpose SSD
$ 0.10/Гб-месяц
Magnetic
$ 0.05/Гб-месяц
Начинайте размечать свои инстансы и скачайте эту таблицу, чтобы облегчить себе жизнь. Например, определите если объем Magnetic или SSD.
Второй пункт, чтобы сэкономить на EBS – это определить размер каждого присоединенного объема. Зачастую используются чрезмерные объемы и неиспользованные гигабайты.
Остановка инстансов не оградит вас от затрат на EBS! Ваш объем продолжит храниться и будет включен в оплату! Если вам больше не нужен инстанс и данные, удаляйте инстанс! Это действие снизит затраты на EC2 и EBS.
AWS разрешает последовательно увеличивать размер EBS, но не разрешает уменьшать его. В общем, лучше иметь меньшие объемы, чем большие, и использовать EBS только по необходимости.
Давайте прикинем, насколько затратно это может быть. Давайте представим, что вы используете 10 инстансов t3.small и каждый инстанс использует 50GB SSD EBS хранилища.
Счет за месяц составит:
Этот простой пример показывает, что EBS может доходить до 32% от стоимости EC2 и составлять значительную часть вашего счета. Это постоянная скрытая стоимость, которую нужно контролировать.
Присмотритесь к эфемерному хранилищу
Оцените плюсы и минусы эфемерного хранилища (ephemeral storage). Из плюсов, вам не придется платить скрытые расходы за EBS, задержка будет ниже и можно будет получить скидки на Reserved инстансы. Из минусов, вероятно, что вы не будете использовать все внутреннее хранилище (за которое продолжите платить), и использовать Spot инстансы станет гораздо сложнее.
Еще одно действие, которое поможет сэкономить – это удаление отсоединенных и неиспользуемых объемов.
Используйте S3, чтобы сохранять резервные копии
EBS как минимум вдвое дороже, чем S3! По сути, вам стоит сохранять бекапы в S3, а не в EBS. Пожалуйста, сперва убедитесь, что ваши бекапы сохраняются инкрементально, а старые версии периодически удаляются.
Немногие знают, что можно приобретать reserved инстансы для Elastic Cache. Экономия довольно значительная:
Процесс схож с приобретением EC2 инстансов. Чтобы приобрести reserved node, необходимо сделать следующее:
Другие меры экономии с Elastic Cache почти такие же, как и с EC2. Нужно выключать не используемые ноды и уменьшать размер самих нод.
Для Elastic Cache нет AWS Marketplace’а
Обратите внимание, что нет никакого Marketplace для Reserved Nodes! Перед покупкой убедитесь, что будете использовать её хотя бы год.
Эта строка затрат может выйти из-под контроля довольно быстро! Достаточно сложно управлять тем, куда и откуда идут данные, а отслеживать еще труднее. Помимо этого, есть несколько типов передачи данных. Например, передача данных из облака, передача данных между регионами, передача данных между зонами доступности, S3 передача данных, и т.д.
Я расскажу, как Back4App снизила расходы на передачу данных и о том, как она их отслеживала.
Вот несколько операций, которые помогут снизить расходы на передачу данных.
CDN (Content Delivery Network или сеть передачи данных) Это простое действие может уменьшить ваши затраты на передачу данных в пятикратном размере, в зависимости от того, сколько кэша вы держите.
Это отличный пример! Калькулятор AWS говорит, что передача данных в облако бесплатна для EC2 инстансов, но также нужно заполнить поле для «Public IP/ Elastic IP Data Transfer». Если вы выберите соединение с использованием Public или Elastic IP адреса, или Elastic Load Balancer внутри сети Амазон, вы будете платить межрегиональные тарифы на передачу данных даже если инстансы находятся внутри одной зоны доступности. Для передачи данных внутри одной зоны доступности, вы можете легко избежать подобных затрат (и улучшить сетевые показатели), используя ваши личные IP адреса там, где это возможно.
Используя одну зону доступности вместо нескольких, вы можете существенно сэкономить. Избегайте или остановите передачу данных между регионами.
Одно из существенных преимуществ GraphQL в уменьшении сверхдоставки данных и, как следствие, в уменьшении общего объема передаваемых данных. Замена REST может оказаться нелегкой задачей, в зависимости от того, как ваше приложение устроено; также, стоит заранее оценить целесообразность подобного перехода. Другая альтернатива – применять GraphQL последовательно для новых продуктов и функций.
Это едва применимо, так как требуемые объемы для скидок очень велики. Это может пригодиться разве что крупному бизнесу или большим аккаунтам.
Можно сэкономить целое состояние, если применить этой действие! Оно также позволит увеличить скорость работы ваших приложений и в целом снизить задержку – беспроигрышное предложение. Об этом я расскажу чуть ниже.
Есть два простых способа отслеживать затраты на передачу данных
Они по-разному представляют собранные данные, и учитывая обе версии, можно лучше разобраться, как расходуются деньги на передачу данных.
Чтобы получить доступ к отчету Cost Explorer, нужно перейти в My Billing Dashboard и выбрать Cost Explorer. Выберите отчет Spend by Service View и откроется новое окно. Откроется заготовленный отчет за последние 6 месяцев, с него и начнем. Учтите, что в колонке Service НЕТ счетов за передачу данных! Эти расходы скрыты фильтрами и нужно копнуть глубже, чтобы их найти.
Чтобы отобразить расходы на передачу данных потребуется настроить фильтры следующим образом:
После применения всех фильтров отчет будет выглядеть так:
Теперь у вас есть отсортированная информация о трафике и откуда он идет, из S3 или EC2. Если хотите, можно применить аналогичный процесс и еще сильнее разбить затраты по регионам и зонам доступности.
Другой способ показать затраты на трафик с помощью billing report. Перейдите в My Billing Dashboard и нажмите Bills слева.
Отчет будет выглядеть примерно так:
Обратите внимание, что здесь есть встроенное разбиение, показывающее расходы на передачу данных EC2. Нажмите на Data Transfer и появится анализ по регионам.
Выбрав регион, появится разбиение по типу переданных данных (исходящий трафик, между зонами доступности, межрегиональный).
Ценники On-demand за Cloudfront стремительно уменьшаются при увеличении объема. Давайте представим передачу 100 Tb трафика. Это будет стоить $ 0.060 / Gb, что примерно на 15% меньше по сравнению с тем же объемом данных через ELB.
Вот лучший способ снизить затраты на передачу данных! AWS предпочитает применять свой сервис CloudFront и в зависимости от объема, вы можете свести цену исходящего CloudFront трафика до $0.02/Gb. Скорее всего это потребует двухлетнего обязательства, и если вы планируете использовать AWS на протяжении длительного времени, то это отличное предложение. Чтобы оформить такую договоренность, необходимо связаться с аккаунт менеджером и спросить у него про CloudFront Private Contract.
Проверьте, используете ли вы этот сертификат. Он стоит $20 в день, и такой же можно приобрести у Cloudflare за $25 в месяц. С контрактом Private & Volume Pricing, вы не сможете пользоваться другими CDN (Cloud Delivery Network) сервисами, и это действие для вас будет недоступно.
Несколько рекомендаций по снижению цены за S3 хранилище.
Отличная идея экономии, которая дается не многим – это использование S3 VPC endpoint. Размещение S3 endpoint в вашем VPC (Virtual Private Cloud) дает любым данным доступ к S3 и дает им собственный путь внутри облака, а AWS не снимает с вас деньги, как если бы это был публичный трафик. В зависимости от объема, этот прием может сэкономить до нескольких тысяч долларов в месяц.
Всего есть пять моделей хранения:
S3 Standard
$ 0.023 / Гб
Параметры:
S3 Infrequent Access
$ 0.0125 / Гб
Параметры:
S3 One-Zone Infrequent Access
$ 0.010 / Гб
Параметры:
S3 Glacier
$ 0.004 / Гб
Параметры:
S3 Glacier Deep Archive
$ 0.00099 / Гб
Параметры:
Цены на S3 API могут запутать
Обратите внимание, что каждый раз, когда изменяется класс хранилища для объектов, вы будете платить за количество запросов. Это может быть очень непросто! Я поделюсь ситуацией, которая произошла в Back4App. Один из наших клиентов хранит миллионы небольших объектов, и данные редко востребованы. Сперва мы держали все объекты в S3 Standard и решили перевести их в S3 Glacier для экономии. Пока все здорово! Но мы не учли, что AWS взымает $ 0.05 за каждые 1000 обращений к Glacier! В нашем случае, количество запросов было огромным, так что затраты на переезд не окупились! Перед перемещением объектов между классами хранилища, необходимо учитывать цену за запросы к S3 и проводить анализ окупаемости.
Самый простой и эффективный способ экономить на S3 это просто удалять старые и неиспользуемые данные. Приглядитесь к старым бекапам и неиспользуемым S3 бакетам. Проведите анализ и при возможности удалите данные.
Всего есть 4 типа технической поддержки:
Мы попробовали план Business и остались недовольны результатом. На наш взгляд он слишком дорогой для того уровня поддержки и сопровождения, который он предоставляет. Не могу ничего утверждать про уровень Enterprise, так как мы его не использовали. (Уровень Enterprise подходит, например, крупным компаниям перед запуском крупных премьер или продуктов.)
Привлекайте вашего регионального менеджера AWS
Используйте вашего регионального менеджера и архитектора решений по максимуму! Они работают отдельно от центральной команды поддержки и могу предоставлять гораздо более подходящие услуги. Команда AWS вообще очень умелая и сильно помогает! Рекомендации, которые они предоставляли о продвинутых настройках безопасности и применение GDPR были просто лучшими! Меня впечатлила техническая осведомленность и желание помочь нам достичь лучших результатов. Такая поддержка заставляет дважды подумать, перед тем как сменить облачного провайдера.
Трудно переоценить важность ведения расчетов и знания ежедневных затрат. Вы должны настроить для себя детальный мониторинг ваших затрат и каждый день выделять время, чтобы с ними ознакомиться. Представьте сколько вы сможете сэкономить за 365 дней!
Ежедневный мониторинг поможет обнаружить подозрительные тенденции и действовать незамедлительно. Лучшие методики относительно Мониторинга и Управления перечислены ниже:
Изменение архитектуры обычно самое затратное по времени мероприятие. Оно может занять от недель до месяцев, в зависимости от масштабов вашей архитектуры.
Наш опыт с Back4App показывает, что сперва стоит попробовать шаги попроще. В общем, последовательные изменения принесут вам значительную экономию в близкой перспективе. Заработайте на подобных изменениях и получите опыт для перестройки вашей архитектуры.
Нет волшебной формулы, чтобы сразу снизить затраты в AWS! Необходимо выработать рутинную привычку проверять расходы, определять приоритеты, и усердно работать, чтобы добиться поставленных целей.
Вот краткий обзор действий, которые помогли нам уменьшить счет в AWS.
В этой статье мы в подробностях расскажем, как Back4App уменьшила свои расходы в AWS с $55,492 в месяц до $20,074 в месяц и сэкономила $500.000 за год. Мы опишем практические шаги, основанные на собственном опыте снижения затрат в AWS и поделимся советами, которые были полезны и нам.
AWS продолжает путь инноваций и доминирования на рынке облачных услуг. Он вырос настолько, что стал ключевой частью стратегии Amazon. Я с энтузиазмом отношусь к AWS, но сомнения по поводу сложности облака и стоимости привели меня к идее оптимизировать использование облака. Несмотря на то, что AWS предлагает постоянно растущий список специализированных сервисов для разных видов разработки, это не всегда самый прямой, быстрый или доступный по деньгам способ. В идеале, как только вы переходите в облако, нужно сразу продумать архитектуру, чтобы сократить расходы. Этот материал поможет ускорить оптимизацию расходов и содержит кейсы из реальной жизни, с которыми мы столкнулись по ходу нашего предприятия по снижению расходов.
Краткий обзор того, что вы найдете в этой статье:
- Просите кредиты от AWS и получайте до $100.000;
- Перенесите передачу данных в Cloud Front и сэкономьте до 75%;
- Используйте приватные IP (не Elastic IP) и перестаньте платить за передачу данных между зонами доступности;
- Сэкономьте до 90% с использование Spot инстансов;
- Сэкономьте до 75% приобретая Reserved инстансы на AWS Marketplace;
- Приобретайте зарезервированные Elastic Cache ноды и экономьте до 77%;
- Резервируйте свои данные в S3, а не в EBS и экономьте до 75%;
- Настройте auto-scaling для незадействованных ресурсов;
- Выбирайте регион North Virginia и держитесь подальше от Sao Paulo;
- Обновляйтесь до новых поколений инстансов и экономьте до 20%;
- Расположите S3 endpoint в вашем VPC и включите Enhanced Network на EC2.
Вот как наш счет в AWS выглядел в Январе 2019. Общая стоимость облака $55,492.
Вот как наш счет в AWS выглядел в Мае 2019. Общая стоимость была $20,074.
1. Кредиты AWS
Первым делом! Перед тем как вы что-либо начнете делать, пожалуйста удостоверьтесь, имеет ли ваша компания право на кредиты от AWS. Вот как вы можете получить эти кредиты:
Попросите у AWS кредиты
Так было в нашем случае! В 2016 наша компания достаточно быстро росла. Наш счет за AWS начал увеличиваться и у нас не было ни идей, ни времени оптимизировать использование AWS. Поскольку у нас не было финансирования, мы поняли — либо получим кредиты от AWS, либо сгинем. Мы готовили свой кейс для нашего аккаунт менеджерам в AWS, демонстрируя насколько быстро мы растем и плюсы для AWS в том, чтобы нас поддерживать на своей площадке. Мы показали ему, что не имеем финансирования и будем вынуждены перейти в Google Cloud (они предложили нам $100.000 кредитами для миграции в AWS) если не получим кредиты от AWS. Ответ занял около недели и AWS предоставил нам $100.000 для использования на протяжении 12 месяцев. Это было неплохая сделка и для AWS! С тех пор как истекли кредиты, мы потратили более $ 750.000 с AWS.
Кредиты для тестирования и запуска Proof Of Concept
Если вы собираетесь тестировать новый сервис от AWS или тип инстанса, попросите кредиты у своего аккаунт менеджера. Количество кредитов будет зависеть от ваших ежемесячных затрат и общих усилий на запуск POC. Эти кредиты обычно действительны только три месяца, и вам необходимо убедиться в скорости POC. В нашем случае, мы смогли добиться $ 3000 кредитами для тестирования семьи инстансов i3.
Кредиты для стартапов
Если вы основали свою компанию или запустили стартап, это отличный способ продвинуться вперед. Сумма кредитов составляет от $1,000 до $100,000, в зависимости от того, как презентовать свой кейс AWS. Есть несколько способов получить эти кредиты.
Акселераторы
Одно из главных преимуществ Стартап Акселераторов в бонусах, которые они предоставляют. Один из таких бонусов – кредиты облачных провайдеров. Сумма, которую вы сможете получить, будет зависеть от Акселератора, в котором вы представлены. Одни из лучших, например, YC, Alchemist, Wayra и 500 Startups предложат вам $100,000 в кредитах AWS. В нашем случае, нас принял Alchemist Accelerator и выдал $100,000 в кредитах. К сожалению, мы не смогли воспользоваться этими кредитами, так как до этого уже воспользовались другими кредитами. Например, если вас принимают два акселератора на $100,000 каждый, у вас не получится использовать $200,000, только $100,000.
Венчурные фонды и группы ангелов
Некоторые ВФ / Группы ангелов предоставляют кредиты как часть бонусной программы. В нашем случае, нам удалось получить $10,000 маркетинговых кредитов, действительных на два года от одного из наших инвесторов. К сожалению, мы не смогли ими воспользоваться. Компании не могут использовать AWS Promotional Credits, если они уже ранее получали равную или большую сумму кредитов.
Все ведущие облачные провайдеры предоставляют кредиты для стартапов
Все ведущие игроки облачного рынка предлагают кредиты стартапам. В AWS/Google сумма кредитов может доходить до $100,000. В Azure, вы можете получить $360,000 на три года.
2. Внедрите процедуру экономии затрат в AWS
Легкая часть закончена, а теперь приступим к сложным задачам! Нет волшебной пилюли, чтобы уменьшить затраты в AWS, вам нужно усердно работать и выполнять регулярную процедуру для мониторинга затрат! Уменьшение облачных затрат должна стать вашей ежедневной рутинной процедурой! Представьте, сколько вы сэкономите за 365 дней! Количество времени, которое вы вкладываете, зависит от размера вашей организации и ваших затрат в AWS. Я трачу около 30 минут в день для мониторинга аккаунта и расставления приоритетов для действий по снижению затрат. Помимо этого, инженеры Back4App тратят не менее 1 часа в день на внедрение инициатив по снижению стоимости.
Первая инициатива, которую мы выполнили: создание простого листа в Excel для определения приоритетов среди инициатив по снижению затрат.
Основные критерии, по которым мы определяем экономию:
- Потенциал экономии – Наибольшая прибыль от действий по экономии
- Сложность – Насколько сложно применить усилия и требуемую работу
- Владелец – Кто будет выполнять действие
В нашем случае, наибольшая экономия приходится на использование Elastic Compute Cloud (EC2), и это был первый предмет, в котором мы начали разбираться.
3. EC2 – Elastic Compute Cloud
Выключайте неиспользуемые инстансы
Первый пункт, который нужно выполнить при уменьшении затрат на EC2 – это выключать неиспользуемые инстансы. Здесь нет ничего сложного, и большая часть работы довольно прямолинейна. Все, что нужно сделать – это составить список всех инстансов, загрузить excel файл из примера и определить каждый. В нашем случае мы разбили наши инстансы на 3 основные категории:
- Инстансы, которые должны работать постоянно
- Инстансы, которые могут быть остановлены
- Инстансы, которые могут быть удалены
Не останавливайте, но удаляйте инстансы
Удаляйте неиспользуемые инстансы, когда это возможно! Если вы только останавливаете их, вы продолжите платить за использование EBS!
Снижение избыточных ресурсов
Это действие немного сложнее, и абсолютно необходимо корректно выделить размер инстанса. Пожалуйста, убедитесь, что вы оцениваете по крайней мере одну неделю данных для увеличения вероятности корректного изменения инстанса. Подход, с помощью которого мы контролировали этот процесс, было разделение инстансов на 3 основные категории:
- Корректный размер
- Уменьшить размер инстанса
- Увеличить размер инстанса
Способ проверки исторических данных для инстанса предельно прост. В панели управления AWS нужно перейти в Services > EC2 > Instances > Running Instances, выбрать инстанс > Monitoring. Например, вы можете проверить метрику CPU Utilization.
Уменьшайте размер инстанса последовательно
Уменьшайте размер инстанса шаг за шагом. Например, не уменьшайте размер с t2.xlarge до t2.medium. В первую очередь уменьшите его с t2.2xlarge до t2.xlarge. Посмотрите одну неделю, проверьте сколько ресурсов используется и повторите действия по новой. Выполняя эти действия, вы сведете к минимуму шансы ошибок или даунтайма.
Используйте Reserved инстансы
Резервирование инстансов может повысить вашу экономию до 70%. Пожалуйста, имейте ввиду, что, когда вы резервируете инстанс, вы платите за использование 24/7 на протяжении всего периода резервирования. Вы будете платить вне зависимости от того, используете вы инстанс или нет.
Есть два типа резервируемых мощностей:
Стандартный – который вы можете продать на AWS Marketplace, не можете конвертировать в инстанс другого типа, дешевле, чем конвертируемые инстансы.
Конвертируемый – Вы не сможете продать его на AWS Marketplace, но его можно конвертировать в инстанс другого типа, более дорогой, чем стандартные инстансы.
Конвертируемые инстансы могут быть запутанными
Конвертируемы инстансы очень непростые! Каждый раз, когда вы конвертируете инстансы, вы можете только увеличивать размер инстанса. Рассмотрим следующую ситуацию:
Вы приобретаете t3.medium, конвертируемый reserved инстанс.
Вы решаете конвертировать t3.medium в m5.large инстанс.
У вас это конечно получится! После использования m5.large инстанса на протяжении определенного времени вы захотите вернуться к t3.medium.
А это уже невозможно!
У вас не получится уменьшить потребление по конвертируемому инстансу, а только увеличить объем, который вы за него платите. Так что пожалуйста, убедитесь, что начинаете с небольшого reserved инстанса и увеличиваете его с течением времени. Не начинайте с большим инстансом, потому что вы не сможете снизить его потребление или продать на AWS Marketplace’e. Если вы сделаете ошибку с конвертируемым reserved инстансом, вы подписаны на ежемесячный платеж на 12 или 36 месяцев. В Back4App, мы всегда сперва приобретаем t2.nano и увеличиваем его по необходимости.
Я предпочитаю стандартные Reserved инстансы конвертируемым по следующим причинам:
- Они дешевле
- У них выше ликвидность – их возможно продать на AWS Marketplace в любое время
- Их можно купить на AWS Marketplace со скидкой
Используйте AWS Marketplace для reserved инстансов
Reserved инстансы отличные, но покупать reserved инстансы на AWS Marketplace еще лучше!
AWS Marketplace может быть намного дешевле
AWS Marketplace выглядит как рынок ценных бумаг! Вы иногда можете купить стандартный Reserved инстанс с ценой намного более доступной по сравнению с покупкой непосредственно от AWS. Причина проста; Компании иногда владеют излишними инстансами, которые больше не используются, но продолжают за них платить. Снижение размещаемой цены гораздо ускоряет процесс покупки.
Здесь я приведу пример того, что случилось с Back4App. Я искал 4 r4.large reserved инстанса. Мне удалось найти инстансы на AWS Marketplace с эффективным тарифом на 75% дешевле по сравнению с ценами On-Demand. AWS продавал тот же тип reserved инстансов, но со скидкой 62%.
У AWS Marketplace гибкие условия приобретения
Другое преимущество AWS Marketplace в том, что вы можете приобретать инстансы с гибким периодом использования. Сам AWS предоставляет только опции на 12 и 36 месяцев для приобретения reserved инстансов. AWS Marketplace гораздо более гибкий! Вы можете приобрести, например, reserved инстансы на 15 месяцев за тот же ценник, что и на 36 месяцев. Некоторые компании предпочитают долгосрочные обязательства (36 месяцев), и до того, как обязательство истекло, они продают их на AWS Marketplace. Новый покупатель будет использовать инстанс только на протяжении оставшегося периода, например:
- Общее приобретаемое время: 36 месяцев
- Первоначальный покупатель: Использует инстанс на протяжении 21 месяца
- Второй покупатель: Покупает его на Marketplace и использует на протяжении оставшихся 15 месяцев.
Основная трудность в том, чтобы найти на AWS Marketplace нужные инстансы. Отличный способ упростить поиск инстансов – искать их в нескольких зонах доступности, а не только в той, где вы расположились. Как только вы приобретете инстанс, его можно модифицировать, и приписать к другой зоне доступности, или превратить в региональный инстанс. Сделать это совсем не сложно, но пожалуйста следуйте инструкции ниже:
- Шаг 1 – перейдите в Reserved Instances Dashboard
- Шаг 2 – нажмите на Purchase Reserved Instances
- Шаг 3 – в Offering Class выберите Standard
- Шаг 4 – В правом верхнем углу выпадающего окна выберите “Only show offerings that reserve capacity”
- Шаг 5 – Нажмите кнопку поиска
- Шаг 6 – Приобретите инстанс из зоны доступности 1b
- Шаг 7 – Подождите, пока инстанс перейдет в состояние active
- Шаг 8 – Выберите инстанс, который был приобретен
- Шаг 9 – Нажмите на кнопку Actions
- Шаг 10 – Нажмите на Modify Reserved Instances
- Шаг 11 – Scope – Изменить Зону доступности или Регион
- Шаг 12 – Нажмите Continue
- Шаг 13 – Нажмите на Submit Modifications
Следование этим шагам позволит вам приобрести Стандартные Reserved инстансы в любой зоне доступности и модифицировать под вашу зону доступности.
AWS Marketplace для компаний вне США
Важное уточнение для пользователей вне юрисдикции США. Вы не сможете продавать Стандартные Reserved инстансы на Marketplace, если у вас нет юридического лица в штатах. Если ваша компания находит вне соединенных штатов, вы сможете покупать инстансы на Маркетплейсе, но не сможете продавать их.
Используйте Spot инстансы
Я люблю Spot инстансы! Вы можете сэкономить до 90% используя их, и это не потребует больших вложений! Единственный минус Spot инстансов в том, что AWS может удалить эти инстансы в мгновении ока или после двухминутного предупреждения. В связи с этим, такой тип инстансов может быть использован только для отказоустойчивых или гибких нагрузок.
Используйте SpotInst, чтобы запускать Spot инстансы
Безопасный способ запускать Spot инстансы и свести к минимуму риск даунтайма – использовать платформу SpotInst. Этот сервис подключается к вашему AWS аккаунту и управляет распределением Spot инстансов. В случае выключения инстанса, сервис заменит его на On Demand и предотвратит даунтайм. Тарифы тоже довольно интересные, они снимают по 20% от того, что было сэкономлено (между разницей в цене On-demand и Spot).
Отличный сценарий для Spot инстансов – это использование копии серверов для баз данных или для эластичного расширения приложений. Используйте SpotInst чтобы управлять выделением Spot инстансов, и скорее всего, вы никогда не столкнетесь с даунтаймом, связанным с использованием данного класса инстансов.
Автоматическое масштабирование (Простаивающие ресурсы, Автоматизация пуск/стоп EC2 инстансов)
AWS Auto Scaling мониторит ваши приложения и автоматически подстраивает мощности, чтобы поддержать стабильную, предсказуемую мощность при наименьшей цене. Можно настроить автоматическое масштабирование для автоматического старта и остановки EC2 инстансов. Автоматическое масштабирование учитывает показатели ресурсов, такие как CPU, API запросы и время включения/выключения.
Чтобы свести затраты к минимуму, необходимо использовать автоматическое масштабирование + Spot инстансы + Reserved инстансы. Давайте рассмотрим реальную ситуацию, с которой мы столкнулись в Back4App. Рабочие нагрузки меняются в течение дня. Количество запросов, которое мы получаем – не равномерное и имеет пики нагрузки использования в определенные часы. Чтобы решить эту проблему, мы выделяем Reserved Instance’ы для минимальной границы потребления, и масштабируемся спотовыми инстансами. Рисунок ниже помогает понять конфигурацию. Вот сколько вы можете сэкономить:
- Reserved инстансы: В Back4App, мы используем микс 12/36 месячных стандартных reserved инстансов. Наша медианная экономия составляет 50% по сравнению с ценами on-demand.
- Автоматическое масштабирование: Мы запускаем/останавливаем инстансы основываясь на общем числе API запросов, который получает каждый инстанс. У нас есть три пиковых периода в течение дня, и экономия по сравнению с простаивающими ресурсами, которые работали бы 24 часа при максимальной загрузке, составляет примерно 75%.
- Spot инстансы: У нас микс двух семей инстансов, которые работают на Spotinst для максимального аптайма. Наша экономия составляет 55% по сравнению с ценами on-demand. Это наша экономия с учетом всей суммы, которую мы платим SpotInst. Использование спотовых инстансов напрямую от AWS могло бы сэкономить нам примерно 70%, но увеличило бы риски. Нам нравится играть размеренно, и мы решили отдавать часть сбережений в SpotInst.
Настраивайте масштабирование
Настраивайте свое вертикальное и горизонтальное масштабирование (Cloudformation)
Выбирайте правильный регион AWS, чтобы сэкономить
- Цены различаются между регионами! Выберете не тот и будете переплачивать.
- Самые дешевые регионы: North Virginia, Ohio и Oregon.
Самые дорогие: Sao Paulo, Sydney и Hong Kong
Рассмотрим следующий пример:
- 4 х t3.medium инстанса
- 30 Gb EBS выделенные под каждый инстанс
- 1 Тb общий объем трафика
Эта же конфигурация будет дороже на 102% в Sao Paulo по сравнению с North Virginia.
- $ 221.65 / месяц в North Virginia
- $ 449.05 / месяц в Sao Paulo
Централизация операций в одном регионе так же имеет свои плюсы.
- Намного проще контролировать выделение reserved инстансов
- Не будет применяться оплата трафика между регионами
В Back4App у нас не получилось централизовать все операции в North Virginia из-за охвата нашего бизнеса и требований клиентов. Мы решили создать кластер в США, Европе и Азии. Мы централизовали наши операции в этих кластерах и расширили каждый регион насколько это было возможно.
Обновляйте предыдущие поколения ресурсов
AWS время от времени запускает новые типы инстансов. Новые поколения мощнее и дешевле.
Старое поколение инстансов
C4.large
2 ядра
3.75 Гб памяти
$ 0.100/час
Новое поколение инстансов
C5.large
2 ядра
4 Гб памяти
$ 0.085/час
Новое поколение на 15% дешевле и на 6% мощнее!
Разрешите enhanced network
Разрешите enhanced network для лучшей производительности инстанса!
4. EBS – Elastic Block Store
EBS предоставляет объемы защищенного хранилища для использования с инстансами EC2 в облаке AWS. Каждый объем EBS продублирован внутри зоны доступности, чтобы защитить вас от сбоя аппаратуры, предоставляя высокую доступность и надежность. Стоимость каждого хранимого гигабайта зависит от типа объема, который вы будете использовать. Самый часты тип это General Purpose SSD и Magnetic.
General Purpose SSD
$ 0.10/Гб-месяц
Magnetic
$ 0.05/Гб-месяц
EBS Тип – SSD x Magnetic
Начинайте размечать свои инстансы и скачайте эту таблицу, чтобы облегчить себе жизнь. Например, определите если объем Magnetic или SSD.
- Выбирайте Magnetic вместо SSD там, где это возможно.
- Заменяйте SSD объем там, где это возможно.
EBS размер – уменьшайте чрезмерные объемы
Второй пункт, чтобы сэкономить на EBS – это определить размер каждого присоединенного объема. Зачастую используются чрезмерные объемы и неиспользованные гигабайты.
Удаляйте инстансы – остановка не повлияет на оплату EBS
Остановка инстансов не оградит вас от затрат на EBS! Ваш объем продолжит храниться и будет включен в оплату! Если вам больше не нужен инстанс и данные, удаляйте инстанс! Это действие снизит затраты на EC2 и EBS.
AWS разрешает последовательно увеличивать размер EBS, но не разрешает уменьшать его. В общем, лучше иметь меньшие объемы, чем большие, и использовать EBS только по необходимости.
Давайте прикинем, насколько затратно это может быть. Давайте представим, что вы используете 10 инстансов t3.small и каждый инстанс использует 50GB SSD EBS хранилища.
Счет за месяц составит:
- EC2 Ежемесячные затраты = 10 x $ 15.23 = 152.30
- EBS Общий объем: 10 x 50 Гб = 500 Гб
- Цена за Гб: $ 0.10-месяц
- EBS ежемесячная стоимость: $ 50.00
- Общая стоимость: $ 182.30
Этот простой пример показывает, что EBS может доходить до 32% от стоимости EC2 и составлять значительную часть вашего счета. Это постоянная скрытая стоимость, которую нужно контролировать.
Присмотритесь к эфемерному хранилищу
Оцените плюсы и минусы эфемерного хранилища (ephemeral storage). Из плюсов, вам не придется платить скрытые расходы за EBS, задержка будет ниже и можно будет получить скидки на Reserved инстансы. Из минусов, вероятно, что вы не будете использовать все внутреннее хранилище (за которое продолжите платить), и использовать Spot инстансы станет гораздо сложнее.
Удаляйте неиспользуемые объемы
Еще одно действие, которое поможет сэкономить – это удаление отсоединенных и неиспользуемых объемов.
Используйте S3, чтобы сохранять резервные копии
EBS как минимум вдвое дороже, чем S3! По сути, вам стоит сохранять бекапы в S3, а не в EBS. Пожалуйста, сперва убедитесь, что ваши бекапы сохраняются инкрементально, а старые версии периодически удаляются.
5. Сервис Elastic Cache – Reserved Nodes
Немногие знают, что можно приобретать reserved инстансы для Elastic Cache. Экономия довольно значительная:
- 1 год резерва – 65% скидки
- 3 года резерва – 77% скидки
Процесс схож с приобретением EC2 инстансов. Чтобы приобрести reserved node, необходимо сделать следующее:
- Перейти в Elastic Cache (не EC2 Reserved instances)
- Перейти в Reserved Nodes
- Нажать на Синюю кнопку «Purchase Reserved Node» справа сверху
- Выбрать Redis или Memcached
- Выбрать тип ноды
- Выбрать желаемый срок бронирования
- Выбрать Offering Type (1 или 3 года)
- Нажать Next
Другие меры экономии с Elastic Cache почти такие же, как и с EC2. Нужно выключать не используемые ноды и уменьшать размер самих нод.
Для Elastic Cache нет AWS Marketplace’а
Обратите внимание, что нет никакого Marketplace для Reserved Nodes! Перед покупкой убедитесь, что будете использовать её хотя бы год.
6. Передача данных
Эта строка затрат может выйти из-под контроля довольно быстро! Достаточно сложно управлять тем, куда и откуда идут данные, а отслеживать еще труднее. Помимо этого, есть несколько типов передачи данных. Например, передача данных из облака, передача данных между регионами, передача данных между зонами доступности, S3 передача данных, и т.д.
Я расскажу, как Back4App снизила расходы на передачу данных и о том, как она их отслеживала.
Как снизить расходы на передачу данных в AWS?
Вот несколько операций, которые помогут снизить расходы на передачу данных.
Соедините S3 endpoint с Cloudflare и другими CDN сервисами.
CDN (Content Delivery Network или сеть передачи данных) Это простое действие может уменьшить ваши затраты на передачу данных в пятикратном размере, в зависимости от того, сколько кэша вы держите.
Эластичные IP – Используйте собственные IP адреса где это возможно
Это отличный пример! Калькулятор AWS говорит, что передача данных в облако бесплатна для EC2 инстансов, но также нужно заполнить поле для «Public IP/ Elastic IP Data Transfer». Если вы выберите соединение с использованием Public или Elastic IP адреса, или Elastic Load Balancer внутри сети Амазон, вы будете платить межрегиональные тарифы на передачу данных даже если инстансы находятся внутри одной зоны доступности. Для передачи данных внутри одной зоны доступности, вы можете легко избежать подобных затрат (и улучшить сетевые показатели), используя ваши личные IP адреса там, где это возможно.
Используйте одну зону доступности – Availability Zone
Используя одну зону доступности вместо нескольких, вы можете существенно сэкономить. Избегайте или остановите передачу данных между регионами.
Используйте GraphQL API
Одно из существенных преимуществ GraphQL в уменьшении сверхдоставки данных и, как следствие, в уменьшении общего объема передаваемых данных. Замена REST может оказаться нелегкой задачей, в зависимости от того, как ваше приложение устроено; также, стоит заранее оценить целесообразность подобного перехода. Другая альтернатива – применять GraphQL последовательно для новых продуктов и функций.
Скидки за объемы передачи данных
Это едва применимо, так как требуемые объемы для скидок очень велики. Это может пригодиться разве что крупному бизнесу или большим аккаунтам.
Используйте CloudFront!
Можно сэкономить целое состояние, если применить этой действие! Оно также позволит увеличить скорость работы ваших приложений и в целом снизить задержку – беспроигрышное предложение. Об этом я расскажу чуть ниже.
Как отслеживать затраты на передачу данных?
Есть два простых способа отслеживать затраты на передачу данных
- Cost Explorer
- Счета
Они по-разному представляют собранные данные, и учитывая обе версии, можно лучше разобраться, как расходуются деньги на передачу данных.
Чтобы получить доступ к отчету Cost Explorer, нужно перейти в My Billing Dashboard и выбрать Cost Explorer. Выберите отчет Spend by Service View и откроется новое окно. Откроется заготовленный отчет за последние 6 месяцев, с него и начнем. Учтите, что в колонке Service НЕТ счетов за передачу данных! Эти расходы скрыты фильтрами и нужно копнуть глубже, чтобы их найти.
Чтобы отобразить расходы на передачу данных потребуется настроить фильтры следующим образом:
- Нажмите More Filters, чтобы их раскрыть
- Выберите Usage Type Group
- Появится информация о передаче данных
- Выберите Data Transfer – Inter AZ
- Выберите Data Transfer – Internet Out
- Выберите Data Transfer – Region to Region Out
- Выберите S3 Data Transfer Out
- Нажмите Apply Filters
После применения всех фильтров отчет будет выглядеть так:
Теперь у вас есть отсортированная информация о трафике и откуда он идет, из S3 или EC2. Если хотите, можно применить аналогичный процесс и еще сильнее разбить затраты по регионам и зонам доступности.
Другой способ показать затраты на трафик с помощью billing report. Перейдите в My Billing Dashboard и нажмите Bills слева.
Отчет будет выглядеть примерно так:
Обратите внимание, что здесь есть встроенное разбиение, показывающее расходы на передачу данных EC2. Нажмите на Data Transfer и появится анализ по регионам.
Выбрав регион, появится разбиение по типу переданных данных (исходящий трафик, между зонами доступности, межрегиональный).
7. CloudFront
Ценники On-demand за Cloudfront стремительно уменьшаются при увеличении объема. Давайте представим передачу 100 Tb трафика. Это будет стоить $ 0.060 / Gb, что примерно на 15% меньше по сравнению с тем же объемом данных через ELB.
Частный контракт Cloud Front & Цены от объема
Вот лучший способ снизить затраты на передачу данных! AWS предпочитает применять свой сервис CloudFront и в зависимости от объема, вы можете свести цену исходящего CloudFront трафика до $0.02/Gb. Скорее всего это потребует двухлетнего обязательства, и если вы планируете использовать AWS на протяжении длительного времени, то это отличное предложение. Чтобы оформить такую договоренность, необходимо связаться с аккаунт менеджером и спросить у него про CloudFront Private Contract.
Amazon CloudFront SSL-Cert-Custom
Проверьте, используете ли вы этот сертификат. Он стоит $20 в день, и такой же можно приобрести у Cloudflare за $25 в месяц. С контрактом Private & Volume Pricing, вы не сможете пользоваться другими CDN (Cloud Delivery Network) сервисами, и это действие для вас будет недоступно.
8. S3 – Simple Storage Service
Несколько рекомендаций по снижению цены за S3 хранилище.
S3 VPC endpoint
Отличная идея экономии, которая дается не многим – это использование S3 VPC endpoint. Размещение S3 endpoint в вашем VPC (Virtual Private Cloud) дает любым данным доступ к S3 и дает им собственный путь внутри облака, а AWS не снимает с вас деньги, как если бы это был публичный трафик. В зависимости от объема, этот прием может сэкономить до нескольких тысяч долларов в месяц.
Используйте правильную модель хранения и подходящий класс хранения
Всего есть пять моделей хранения:
S3 Standard
$ 0.023 / Гб
Параметры:
- Отказоустойчивость между Зонами Доступности
- Низкая задержка и высокая пропускная способность
- Устойчиво к событиям, влияющим на всю зону доступности
S3 Infrequent Access
$ 0.0125 / Гб
Параметры:
- Идеально для длительного хранилища, бекапов и файлов на случай резервного восстановления
- Отказоустойчивость между Зонами Доступности
- Для нечастого доступа, так как выше стоимость за доступ к файлам
S3 One-Zone Infrequent Access
$ 0.010 / Гб
Параметры:
- Одна зона доступности
- Для нечастого доступа
- Отличный выбор для вторичных копий бекапов
S3 Glacier
$ 0.004 / Гб
Параметры:
- Безопасное, надежное, и недорогой тип хранилища для архивов данных
- Отказоустойчивость между Зонами Доступности
- Варианты выгрузки данных могут занимать от нескольких минут до нескольких часов
S3 Glacier Deep Archive
$ 0.00099 / Гб
Параметры:
- Самая низкая цена за гигабайт и поддержка длительного хранения и цифровой сохранности для данных, которые могут понадобится пару раз за год.
- Время выгрузки в пределах 12 часов
- Отказоустойчивость между Зонами Доступности
Цены на S3 API могут запутать
Обратите внимание, что каждый раз, когда изменяется класс хранилища для объектов, вы будете платить за количество запросов. Это может быть очень непросто! Я поделюсь ситуацией, которая произошла в Back4App. Один из наших клиентов хранит миллионы небольших объектов, и данные редко востребованы. Сперва мы держали все объекты в S3 Standard и решили перевести их в S3 Glacier для экономии. Пока все здорово! Но мы не учли, что AWS взымает $ 0.05 за каждые 1000 обращений к Glacier! В нашем случае, количество запросов было огромным, так что затраты на переезд не окупились! Перед перемещением объектов между классами хранилища, необходимо учитывать цену за запросы к S3 и проводить анализ окупаемости.
Удаляйте неиспользуемые данные в S3
Самый простой и эффективный способ экономить на S3 это просто удалять старые и неиспользуемые данные. Приглядитесь к старым бекапам и неиспользуемым S3 бакетам. Проведите анализ и при возможности удалите данные.
9. С умом выбирайте план технической поддержки AWS
Всего есть 4 типа технической поддержки:
- Basic – бесплатный
- Developer — $ 29 / месяц или 3% от счета каждый месяц
- Business — $ 100 / месяц или 10-3% от счета, в зависимости от объема
- Enterprise — $ 15.000 в месяц
Мы попробовали план Business и остались недовольны результатом. На наш взгляд он слишком дорогой для того уровня поддержки и сопровождения, который он предоставляет. Не могу ничего утверждать про уровень Enterprise, так как мы его не использовали. (Уровень Enterprise подходит, например, крупным компаниям перед запуском крупных премьер или продуктов.)
Привлекайте вашего регионального менеджера AWS
Используйте вашего регионального менеджера и архитектора решений по максимуму! Они работают отдельно от центральной команды поддержки и могу предоставлять гораздо более подходящие услуги. Команда AWS вообще очень умелая и сильно помогает! Рекомендации, которые они предоставляли о продвинутых настройках безопасности и применение GDPR были просто лучшими! Меня впечатлила техническая осведомленность и желание помочь нам достичь лучших результатов. Такая поддержка заставляет дважды подумать, перед тем как сменить облачного провайдера.
10. Мониторинг и Управление
Трудно переоценить важность ведения расчетов и знания ежедневных затрат. Вы должны настроить для себя детальный мониторинг ваших затрат и каждый день выделять время, чтобы с ними ознакомиться. Представьте сколько вы сможете сэкономить за 365 дней!
Ежедневный мониторинг поможет обнаружить подозрительные тенденции и действовать незамедлительно. Лучшие методики относительно Мониторинга и Управления перечислены ниже:
- Регулярный мониторинг
- Использование отчетов, таких как:
- Отчет Billing & Cost Management
- Ежемесячные счета
- Cost Explorer – Ежемесячные расходы по сервисам
- Cost Explorer – Использование RI
- Cost Explorer – Покрытие RI
- Отмечайте tag’ами всё
- Измеряйте среднее, отслеживайте, оповещайте об исключениях
- Соотносите окружение с моделью общей ответственности от AWS
- Используйте CloudWatch и Trusted Advisor для мониторинга затрат
- Объедините свои счета и получайте скидки за объем
11. Редизайн архитектуры
Изменение архитектуры обычно самое затратное по времени мероприятие. Оно может занять от недель до месяцев, в зависимости от масштабов вашей архитектуры.
Наш опыт с Back4App показывает, что сперва стоит попробовать шаги попроще. В общем, последовательные изменения принесут вам значительную экономию в близкой перспективе. Заработайте на подобных изменениях и получите опыт для перестройки вашей архитектуры.
12. Заключение
Нет волшебной формулы, чтобы сразу снизить затраты в AWS! Необходимо выработать рутинную привычку проверять расходы, определять приоритеты, и усердно работать, чтобы добиться поставленных целей.
Вот краткий обзор действий, которые помогли нам уменьшить счет в AWS.
- Удаляйте неиспользуемые EC2 инстансы
- Уменьшайте избыточные мощности
- Переместите поток данных в CloudFront
- Переходите на новые поколения инстансов
- Применяйте методики такие как enhanced network
- Сохраняйте бекапы в S3
- Резервируйте инстансы на AWS Marketplace & Elastic Cache Nodes
- Поддерживайте здоровое соотношение Spot, Reserved и On-Demand инстансов
- Автоматизируйте autoscaling
- Используйте как S3 Standard, так и Glacier