7 метрик FinOps, которые спасут ваш облачный бюджет от разорения

Как понять, на чем вы теряете облачный бюджет? Вот вам 7 рабочих метрик
Как понять, на чем вы теряете облачный бюджет? Вот вам 7 рабочих метрик

Знаете, что общего у большинства российских IT-директоров? В конце месяца все они получают счета за облако и хватаются за сердце. Еще бы, цифры в 2-3 раза больше запланированных напугают кого угодно. Но менять что-либо большинство из них почему-то не хочет.

По данным Flexera, в среднем компании тратят впустую до 30% облачного бюджета. То есть даже в России, где рынок облаков растет на 36% год к году и уже достиг 165 млрд рублей, речь идет о десятках миллиардов. И пока вы читаете эту статью, ваши тестовые серверы жрут деньги, а забытые диски считают ворон за ваш счет.

Подписывайтесь на наше FinOps-комьюнити в Telegram. Обещаем не спамить. Там только настоящая польза, рабочие кейсы и общение с единомышленниками.

Коэффициент использования ресурсов

Cколько процентов ваших мощностей реально работает?

Если честно ответить на этот вопрос, большинство технарей впадут в депрессию. Исследование CAST AI показало, что среднестатистическая компания использует только 13% выделенных процессорных мощностей и 20% памяти. Кого-то, может, такой подход и устраивает, но мы, люди бизнеса, называем это “спускать деньги в унитаз”. Значит, надо считать.

А как считать? Базовая формула коэффициента использованных ресурсов остается неизменной:

Коэффициент использования = (Фактическое потребление / Выделенные ресурсы) × 100%

У Яндекс.Облака, VK Cloud и Cloud.ru есть базовые графики загрузки прямо в консоли. Но с Kubernetes все сложнее: данные придется собирать через Prometheus, группировать по проектам и сравнивать с лимитами. Главное – понимать, от чего отталкиваться.

Нормальные показатели:

  • CPU: 60-70% для продакшена
  • Память: 80-85%

Перебарщивать, конечно, не надо. Но, если нагрузка маленькая – например, 20%, надо резать.

Процент облачных потерь

Cколько денег уходит в никуда?

Процент потерь = (Стоимость неиспользуемых ресурсов / Общие облачные расходы) × 100%

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

Отключайте весь мусор и не жалейте
Отключайте весь мусор и не жалейте

Забытые dev-серверы, отключенные диски, балансировщики без трафика — все это стоит денег, а пользы не приносит. И так практически у всех. Российские компании в большинстве своем имеют схожий бэкграунд, ведь в 2022 году почти все были вынуждены мигрировать с западных платформ, создавая кучу дублирующих систем. Потом про них благополучно забыли, но оплачивать не перестали. А всего-то и нужно, что просто отключить все ненужное.

Если автоматизировать, то найти такие ресурсы в большой инфраструктуре не так уж и сложно. Тем более, что логика поиска в целом довольно простая:

  • Сервер неделю потребляет меньше 5% CPU – кандидат на удаление
  • Диск не монтировался целый месяц – берем на карандаш
  • База не имеет активных соединений – пока смотрим

В Kubernetes ключевая проблема — это зомби-ресурсы: поды висят в очереди, хелсчеки не проходят, а место занимают, CI/CD за собой не убирает, и такой мусор может накапливаться месяцами.

  • Внедрите систему тегирования с владельцем и временем жизни.
  • Настройте уведомления о подозрительных ресурсах.

Правда, когда речь зайдет об удалении, проверяйте все руками. Автоматика, конечно, экономит время, но применять ее повсеместно слишком рискованно. Лучше все-таки доверить финальное решение человеку.

Доля распределенных затрат на облако

Кто сколько тратит?

Вот тут начинается самое интересное. Потому что найти мусор и неэффективности — это одно. А разобраться, кто конкретно за все это отвечает — совсем другое.

Эта метрика показывает, какую часть облачных расходов можно привязать к конкретным командам, проектам, продуктам:

Доля распределенных затрат = (Размеченные расходы / Общие облачные расходы) × 100%

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

Что делать? Тегировать все подряд. Каждый сервер, каждая база, каждый диск должны содержать информацию о том, кто за них отвечает, к какому проекту они принадлежат, в каком окружении работают. В Kubernetes понадобятся лейблы на уровне неймспейсов и деплойментов.

Автоматическое тегирование при создании ресурсов — пока что редкость в наших краях. Но кое-какие подвижки в этом направлении уже есть. Например, Cloud.ru развивает Tag Management Service, а Яндекс.Облако предлагает каталоги и лейблы. В общем, жить можно.

Главное – начать с самых дорогих ресурсов. Именно они дают максимальный эффект. Встройте проверку тегов в CI/CD. И введите простое правило: нет тега с владельцем — нет ресурса.

Unit Cost — цена за единицу бизнеса

А вы уже рассчитали, в какую сумму вам обходится каждый клиент?
А вы уже рассчитали, в какую сумму вам обходится каждый клиент?

Во что обходится каждый пользователь?

Связать техническую сторону с бизнес-результатами поможет эта метрика. Она даст конкретное понимание, сколько стоит обслужить одного клиента или обработать один заказ.

Unit Cost = Общие облачные затраты / Количество бизнес-единиц за период

Как выбрать единицу измерения? Все зависит от специфики вашего бизнеса:

  • Для SaaS – это активные пользователи или API-запросы.
  • Для интернет-магазинов — заказы.
  • Для финтех-компаний — количество транзакций.

Главное, чтобы единица измерения реально отражала пользу для бизнеса.

Основная проблема в том, что данные будут разбросаны по разным системам и надо их как-то собрать. Расходы лежат в биллинге провайдера, а бизнес-метрики — в аналитических системах. А API для выгрузки биллинговых данных у наших провайдеров пока развиты слабее западных, хотя кое-какой прогресс есть.

Снижение Unit Cost — хороший знак, он означает, что ваша эффективность растет. А что, если все наоборот? Иногда это можно оправдать добавлением новых функций, но чаще скачок Unit Cost указывает на проблемы с производительностью. Для российских компаний важно еще учитывать валютные колебания, особенно, если провайдер формирует тарифы, исходя из курса доллара.

Доля зарезервированных ресурсов

Пользуетесь ли скидками?

Тут все довольно очевидно. Лучший способ сэкономить на покупке — купить со скидкой. А облачные провайдеры как раз любят предлагать льготные программы: долгосрочные договоры, предоплаты, фиксированные мощности.

Метрика считает, какую долю расходов вы тратите по льготным тарифам:

Доля резервов = (Потребление по льготным тарифам / Общее потребление) × 100%

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

Резервируйте стабильные нагрузки вроде продакшн-баз и основных сервисов, которые работают круглосуточно. Для dev-окружений и тестовых стендов лучше использовать принцип pay-as-you-go. И обязательно учитывайте валютные риски при заключении долгосрочных договоров.

Отклонение от облачного бюджета

Насколько точно планируете?

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

Формула показывает, насколько фактические расходы отличаются от запланированных:

Отклонение = |(Факт - План) / План| × 100%

В российских условиях планировать облачные расходы на долгосрок — задача не из легких. Тарифы постоянно меняются, появляются новые регуляторные требования, а курсы валют скачут туда сюда. Поэтому что считать нормой – решительно непонятно.

Возьмите за правило, что отклонение в 5-10% незначительно; 15-20% – терпимо, хотя следует задуматься над оптимизацией. А вот 30-50% и больше — уже серьезная проблема с планированием, которую точно надо исправлять.

Как? Легко и просто. Большинство российских провайдеров предлагают базовые инструменты для бюджетного контроля:

  • VK Cloud может присылать уведомления при превышении лимитов.
  • Яндекс.Облако показывает детализацию по проектам и каталогам.

Продвинутых функций вроде автоматического прогнозирования или ML-рекомендаций у российских провайдеров практически не встречается. Поэтому техническим специалистам часто приходится самим настраивать мониторинг расходов. Но это просто нужно сделать, ведь если дневные расходы выросли на 30% от средних за неделю, нужно обязательно разобраться в причинах роста, пока не стало слишком поздно.

Аномалии в облачных расходах

Аномалии в российских реалиях могут отличаться от зарубежных
Аномалии в российских реалиях могут отличаться от зарубежных

Как ловить внезапные всплески?

И последнее. Эта метрика нужна для случаев, когда что-то идет совсем не так, как рассчитывали. Если расходы увеличиваются слишком резко, это может свидетельствовать о серьезных проблемах, которые требуют немедленного вмешательства, и специальная формула помогает выявить значительные отклонения от нормальных трат:

Аномалия = (Текущие расходы - Средние расходы за период) / Средние расходы × 100%

В российской специфике источники аномалий бывают весьма необычными:

  • DDoS-атаки на критическую инфраструктуру.
  • Резкие изменения в поведении пользователей после блокировок зарубежных сервисов.
  • Попытки обхода различных ограничений.

Российские провайдеры только начинают внедрять ML-системы для автоматического выявления аномалий. Но лучше всего работает в основном статистический анализ: если расходы за день выросли больше чем на 50% от среднего за месяц — идем разбираться.

Как внедрять FinOps на практике

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

  • Начинать можно постепенно. Возьмите 2-3 критичные метрики и апробируйте их у себя. Лучше всего брать коэффициент использования ресурсов и процент облачных потерь. Это классические “фрукты”, которые проще всего сорвать и которые дадут быстрый результат.
  • Западные рецепты не всегда работают в наших условиях. У нас свои правила игры, и их надо учитывать: провайдеров немного, курсы скачут, регуляторы любят неожиданности.
  • Автоматизируйте. Собирать данные из всех систем вручную — адский труд. Да, API у наших провайдеров пока не идеальны, но альтернативы нет. Придется писать интеграции и костыли, зато потом все будет работать само.
  • Собирайте все в одном месте. Когда метрики разбросаны по разным системам, толку от них мало. Стройте единый дашборд, где видно всю картину целиком. Особенно это важно, если используете несколько облачных провайдеров.
  • Обучайте команды. Разработчики должны понимать, как их код влияет на счета компании.

Управление облачными расходами больше не роскошь, а средство передвижения. Особенно в наших условиях, где каждый рубль на счету, а выбор ограничен. Эти метрики превратят хаотичные траты в понятную и эффективно систему. Главное – научиться правильно ей управлять.

27
Начать дискуссию