Как не разориться на облаках еще до нажатия кнопки Deploy
Знакомая ситуация: вы написали отличный Terraform-манифест, подняли инфраструктуру в AWS или Azure, а через месяц бухгалтерия приходит с вопросом, почему счет за облака вырос в три раза? В моей практике такое случалось не раз. Часто разработчики просто не знают, сколько стоит конкретный инстанс или хранилище, пока не увидят итоговый чек.
Но что, если бы вы могли видеть стоимость инфраструктуры прямо в процессе написания кода? Именно эту проблему решает Infracost — инструмент, который приносит культуру FinOps (управления финансами в облаке) прямо в терминал и Pull Request разработчика.
Что такое Infracost и зачем он вам
Infracost — это open-source инструмент на Go, который анализирует ваши Terraform-файлы и выдает подробную смету расходов. Он поддерживает более 1100 ресурсов в AWS, Azure и Google Cloud.
Главная фишка проекта в концепции Shift Left FinOps. Вместо того чтобы анализировать расходы постфактум, вы оцениваете их на этапе планирования. Это как ценник в супермаркете: вы точно знаете, сколько стоит товар, прежде чем положить его в корзину.
Ключевые возможности, которые экономят бюджет
1. Мгновенная смета в терминале
Самый простой способ использования — команда infracost breakdown. Она сканирует текущую директорию с Terraform-кодом и выводит таблицу с ценами. Вы видите не только общую сумму, но и стоимость каждого отдельного ресурса: дисков, инстансов, трафика и даже запросов к Lambda.
2. Дифф по стоимости (Cost Diff)
Это, пожалуй, самая полезная функция. Команда infracost diff показывает разницу между тем, что у вас работает сейчас, и тем, что вы планируете развернуть. Например: «Это изменение увеличит ваш ежемесячный счет на $45». Согласитесь, это гораздо нагляднее, чем просто список из 20 новых ресурсов в terraform plan.
3. Интеграция в Pull Request
Infracost можно встроить в CI/CD (GitHub Actions, GitLab CI и др.). Когда разработчик открывает PR, бот автоматически оставляет комментарий с прогнозом изменения затрат. Это создает «защитную сетку»: команда может обсудить целесообразность дорогого решения еще до того, как оно попадет в продакшн.
4. Поддержка Usage-based ресурсов
Многие инструменты умеют считать только фиксированную стоимость инстансов. Infracost идет дальше и позволяет оценивать ресурсы с оплатой по факту использования, такие как AWS S3 или Lambda, основываясь на ваших прогнозах по трафику или количеству вызовов.
Как это работает под капотом
Infracost не просто парсит текст. Он анализирует план Terraform (JSON-вывод), сопоставляет ресурсы с актуальными ценами из Cloud Pricing API и формирует отчет.
Интересно, что проект разделен на две части:
- CLI инструмент: Полностью открытый и бесплатный.
- Infracost Cloud: SaaS-платформа для крупных команд, где можно настраивать политики (Guardrails). Например, можно запретить деплой, если стоимость инфраструктуры превышает определенный лимит или если используются устаревшие (и более дорогие) типы инстансов.
Практический кейс: Оптимизация на лету
Представьте, что вы создаете тома Elastic Block Store (EBS) в AWS. По привычке многие используют тип gp2. Infracost Cloud может подсказать: «Эй, переключись на gp3, это даст на 20% больше производительности и при этом будет стоить дешевле».
Такие мелкие советы в масштабах большой компании экономят тысячи долларов в месяц. При этом разработчику не нужно быть экспертом в ценообразовании облачных провайдеров — инструмент сам подскажет лучшие практики.
С чего начать?
Установка занимает буквально пару минут. Если у вас установлен brew, просто выполните:
brew install infracost
Затем зарегистрируйтесь для получения бесплатного API-ключа и запустите проверку в своем проекте:
infracost auth setup
infracost breakdown --path .
Итог: Стоит ли внедрять?
Если вы работаете в одиночку над пет-проектом, Infracost может быть просто любопытной игрушкой. Но если вы часть команды, которая управляет серьезной облачной инфраструктурой, этот инструмент становится маст-хэвом.
Кому особенно подойдет:
- DevOps-инженерам: Чтобы контролировать бюджеты и не получать «нагоняй» от руководства.
- Разработчикам: Чтобы лучше понимать экономику своих технических решений.
- Тимлидам: Чтобы автоматизировать ревью затрат в Pull Request-ах.
Infracost делает облачные расходы прозрачными, а это первый шаг к их оптимизации. Попробуйте запустить его на своих текущих манифестах — возможно, цифры в отчете вас сильно удивят!
