open atlas
↑ К треку
AWS на практике AWS · 01 · 03

Основы биллинга и стоимости

AWS тарифицирует по факту использования — compute, storage и трафик — а исходящий трафик это тихий убийца. Подбери под нагрузку On-Demand, Reserved/Savings Plans или Spot и читай счёт как сигнал об архитектуре.

AWS Middle ◷ 15 min
Уровень
ОсновыJuniorMiddleSenior

Весь месяц счёт за инстансы был ровным. Потом финансы переслали скриншот: одна строка, «Data Transfer Out — Internet», тихо выросла больше, чем весь парк EC2, который этот трафик и сгенерировал. Никто это не выделял, никто не одобрял, никто не ждал — потому что у исходящего трафика нет дашборда, на который смотришь, нет инстанса, который можно остановить. Стоимость compute была тем, за чем следили все. А ударил тот кусок счёта, на который никто не смотрел.

К концу урока ты будешь знать, за какими строками следить в каждом счёте AWS, как подобрать нагрузке правильную модель покупки и как настроить оповещения, ловящие убегающий egress-счёт до того, как он придёт инвойсом.

Pay-per-use и три измерения стоимости

Никакой фиксированной подписки на AWS нет. Ты платишь за то, что выделил и потребил, по каждому сервису отдельно, а итог — сумма трёх повторяющихся измерений, которые есть почти в каждом счёте.

Время compute. Инстанс EC2, вызов Lambda, задача Fargate — ты платишь за каждую секунду или час, что мощность существует, делает она полезную работу или нет. В этом ловушка простаивающих зарезервированных мощностей: остановленный инстанс EC2 за compute ничего не стоит, а вот запущенный, про который ты забыл, тарифицируется круглосуточно. Выделено-но-простаивает — самая частая строка счёта, которой можно было избежать.

Хранилище (GB-месяц). Единица — гигабайт, хранящийся месяц. S3 Standard стоит примерно $0.023 за GB-месяц в распространённых регионах (и спроектирован на 11 девяток — 99,999999999% — надёжности, так что цена покупает почти нулевой риск потери данных); тома EBS, снапшоты и storage RDS тарифицируются так же. Хранилище тарифицирует ещё и запросы, не только байты: S3 берёт примерно $0.0004 за 1 000 GET и $0.005 за 1 000 PUT, поэтому нагрузка, делающая миллионы мелких чтений объектов, может накрутить счёт за запросы, сопоставимый с самим хранением байтов. Хранилище — обычно предсказуемая часть счёта: растёт медленно, и его рост видно заранее. Подвох в том, что storage, которым ты перестал пользоваться, тарифицируется, пока ты его не удалишь: осиротевшие тома EBS от завершённых инстансов и забытые снапшоты копятся незаметно.

Трафик (egress). Это измерение и устраивает командам засаду. Эмпирическое правило: входящий трафик (в AWS) обычно бесплатен; исходящий трафик (наружу, в интернет) — нет, обычно около $0.09 за GB на первом уровне, варьируясь по региону и объёму. Хуже того, трафик внутри AWS тоже не бесплатен: трафик между зонами доступности стоит обычно ~$0.01/GB в каждую сторону (то есть ~$0.02/GB за round trip между двумя сервисами в разных зонах), а межрегиональный — ~$0.02/GB. Болтливая сетка микросервисов, расползшаяся по AZ, или база, реплицирующаяся между регионами, могут накрутить расходы на трафик, которые затмят compute, его порождающий. Положи цифры: сервис, прокачивающий 50 ТБ/месяц межзональной болтовни по ~$0.02/GB round-trip — это ~$1 000/месяц, которые стираются простым прижатием двух сервисов в одну зону — чистая архитектура, ноль изменений в фичах.

Почему это работает

Почему исходящий трафик — тихий убийца, а входящий бесплатен? AWS хочет твои данные внутри — ingress это въезд к сервисам, за работу которых ты потом заплатишь. Вытащить данные наружу — вот где они зарабатывают и где твоя архитектура утекает деньгами, которых ты не видишь ни на одном дашборде инстанса. NAT Gateway — классический пример: каждый инстанс приватной подсети, дотягивающийся до интернета, идёт через него, и ты платишь и почасовой сбор (~$0.045/час, ~$33/месяц просто за существование), и погигабайтный сбор за обработку (~$0.045/GB) всего, что через него течёт, — поверх egress, если этот трафик потом уходит в интернет. Конкретно: парк, тянущий 100 ТБ/месяц образов контейнеров и пакетов через NAT Gateway, — это примерно $4 500/месяц только за обработку NAT — сбор, который не виден ни на одном дашборде инстанса и часто чинится за копейки добавлением VPC Gateway Endpoint для S3 (бесплатно), чтобы этот трафик вообще не касался NAT. Приведённые цены иллюстративны и варьируются по региону и времени — всегда сверяйся с актуальной страницей цен.

Варианты покупки EC2: трейдофф цена/обязательство/прерывание

Один и тот же инстанс EC2 может стоить совершенно по-разному в зависимости от того, как ты его покупаешь. Есть три корзины, меняющие цену на обязательство и надёжность.

On-Demand — вариант по умолчанию: никаких обязательств, платишь полный тариф за секунду/час, запускаешь и останавливаешь когда хочешь. Самый дорогой за час и самый гибкий — подходит для скачкообразных, непредсказуемых или короткоживущих нагрузок, где использование не спрогнозировать.

Reserved Instances / Savings Plans — обязательство в обмен на скидку. Ты обещаешь 1 или 3 года использования (Savings Plans фиксируют трату в долларах-за-час; Reserved Instances — конкретную конфигурацию инстанса), и AWS снижает тариф — часто до ~72% от On-Demand. Подходит для стабильных, базовых, постоянно работающих нагрузок, чей минимум ты можешь спрогнозировать на год вперёд. Риск — само обязательство: платишь, даже если потребление упало.

Spot продаёт свободные мощности AWS со скидкой до ~90% от On-Demand — но AWS может забрать их обратно с предупреждением за две минуты, как только мощности снова понадобятся. Подходит только для отказоустойчивой, прерываемой работы: batch-задачи, CI-раннеры, stateless-воркеры, обработка больших данных с чекпойнтами. Не подходит для всего, что не переживёт внезапного завершения.

Реальные парки смешивают все три: Reserved/Savings Plans покрывают предсказуемую базу, On-Demand берёт на себя переменную середину, а Spot впитывает всплесковую прерываемую нагрузку с глубокой скидкой.

Выбери лучший вариант

У тебя stateless batch-конвейер (обработка изображений), который умеет возобновляться с чекпойнтов и не имеет дедлайна. Какой вариант покупки минимизирует стоимость?

Free Tier и его ловушки

Новые аккаунты получают три вида бесплатного, и смешение их — то, как срабатывает ловушка. 12 месяцев бесплатно (например, 750 часов/месяц t2.micro/t3.micro, 5 GB S3) истекает через год после регистрации — потом тарифицируется по полной, часто незаметно. Всегда бесплатно (например, 1 млн запросов Lambda/месяц, кусок DynamoDB) сохраняется, но имеет жёсткие лимиты. Пробные периоды — короткие (30–90 дней) бесплатные плюшки по отдельным сервисам.

Ловушки структурны. Лимиты Free Tier — по категориям, а не общий «бесплатный аккаунт»: превысь 750 инстанс-часов, запустив два инстанса, или вылези за лимит S3 — и тебе сразу начислят за перерасход. 12-месячный таймер — главное: команда поднимает «бесплатное» демо, забывает про него, и через двенадцать месяцев оно тихо превращается в платный инстанс, работающий круглосуточно. И Free Tier покрывает сервис, но редко трафик — твой бесплатный инстанс всё равно может генерировать оплачиваемый egress. Относись к Free Tier как к лимитированной квоте с истечением, а не как к «AWS бесплатен на год».

Контроль расходов: сделай счёт наблюдаемым до того, как он удивит

Когда видишь скачок в счёте в середине месяца, ты хочешь инструмент, который уже предупреждал об этом, — а не дашборд, о котором надо было вспомнить самому. Эти четыре инструмента — твоя система раннего предупреждения.

Нельзя управлять тем, чего не видишь, а AWS выставляет счёт постфактум — поэтому вся игра в том, чтобы сделать траты наблюдаемыми рано. Базу образуют четыре инструмента.

AWS Budgets позволяет задать порог траты (или использования) и получать оповещение — по email или SNS (Simple Notification Service — сервис push-уведомлений AWS), — когда фактическая или прогнозируемая стоимость его пересекает. Это твоя растяжка-сигнализация; оповещение о прогнозируемом перерасходе ловит убегающий счёт за egress в середине месяца, а не в следующем инвойсе. Cost Explorer — поверхность для анализа: он разбивает траты по сервису, региону и времени, чтобы ты ответил «что выросло и когда». Cost-allocation теги позволяют атрибутировать траты командам, проектам или окружениям — тегируй всё (team, env, service), и счёт станет журналом по владельцам, а не одной непрозрачной цифрой. Классический billing alarm (алярм CloudWatch — сервиса мониторинга и метрик AWS — на EstimatedCharges) — самая простая первая линия обороны для личного или небольшого аккаунта.

ИзмерениеOn-DemandReserved / Savings PlansSpot
Скидка к On-Demandбаза (0%)до ~72%до ~90%
Обязательствонет1 или 3 годанет
Риск прерываниянетнетотзыв за 2 минуты
Подходящая нагрузкаскачкообразная, непредсказуемая, короткаястабильная постоянная базаотказоустойчивый, прерываемый batch
Викторина

Стоимость EC2 у приложения ровная, но месячный счёт резко подскочил. Куда смотреть первым делом?

Викторина

Ты хочешь получать предупреждение в середине месяца, если траты идут к превышению лимита, до прихода инвойса. Какой инструмент?

Вспомните перед уходом
  1. 01
    Стоимость EC2 ровная, но счёт подскочил. Объясни самую вероятную причину и почему её не показывает ни один дашборд инстанса.
  2. 02
    Когда выбирать On-Demand против Reserved/Savings Plans против Spot, и какова ось трейдоффа?
Итог

Биллинг AWS — это оплата по факту использования без фиксированной подписки, и почти любой счёт это сумма трёх измерений: время compute (платишь за существующую мощность, поэтому простаивающие запущенные инстансы — самая частая избегаемая трата), хранилище в GB-месяцах (S3 Standard около $0.023/GB-месяц, предсказуемо, но осиротевшие тома и снапшоты остаются) и трафик — измерение, устраивающее командам засаду, потому что входящий обычно бесплатен, а исходящий в интернет идёт около $0.09/GB, трафик между AZ стоит примерно $0.01/GB в каждую сторону, межрегиональный дороже, а NAT Gateway берёт и почасово, и за каждый обработанный GB. Один и тот же инстанс EC2 стоит совершенно по-разному в зависимости от модели покупки: On-Demand для скачкообразной непредсказуемой работы, Reserved Instances или Savings Plans для стабильной базы со скидкой до ~72% в обмен на обязательство на 1 или 3 года, и Spot для отказоустойчивого прерываемого batch со скидкой до ~90% и риском отзыва за две минуты. Free Tier — это три вещи (12 месяцев, всегда-бесплатно и пробные периоды), и его ловушки — лимиты по категориям, 12-месячное истечение, тихо превращающее демо в платные ресурсы, и тот факт, что трафик он покрывает редко. Сделай траты наблюдаемыми до прихода инвойса: AWS Budgets для оповещений по прогнозируемой стоимости, Cost Explorer для разбора того, что выросло, cost-allocation теги, чтобы счёт был журналом по владельцам, и billing alarm как простейшую растяжку. И главное — читай счёт как сигнал об архитектуре: неожиданные расходы почти всегда это egress, простаивающие зарезервированные мощности или NAT Gateway, за которым никто не следил. Теперь, когда видишь неожиданную строку в счёте, ты знаешь: смотри сначала на трафик, потом на осиротевшие ресурсы, и настрой прогнозный Budget — чтобы следующий скачок пришёл к тебе оповещением, а не инвойсом. (Все цены иллюстративны и варьируются по региону и времени; сверяйся с актуальной страницей цен AWS.)

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 5 завершено

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources4
expand
  1. 01
  2. 02
  3. 03
  4. 04

Trademarks belong to their respective owners. Editorial reference only.