FinOps: как связать расходы на облако с продуктами, командами и бизнес-результатом
Облако обещает бизнесу гибкость: инфраструктуру можно получить за минуты, масштабировать под нагрузку и платить за фактическое потребление. Но у этой модели есть обратная сторона. Чем проще разработчику получить инфраструктуру, тем сложнее CIO ответить на простой вопрос CFO:
Почему мы потратили на облако столько денег и на что именно?
Проблема начинается не тогда, когда облако становится дорогим. Она начинается тогда, когда компания перестает понимать связь между расходами на инфраструктуру, продуктами, командами и бизнес-результатом. В своей практике я внедрял FinOps именно как систему управления затратами, а не как набор рекомендаций по отключению неиспользуемых серверов. В результате удалось снизить затраты на инфраструктуру на 17%, одновременно получив детализацию расходов по продуктам, компонентам и контурам.В этой статье расскажу, как построить такую систему и зачем она нужна CIO, CPO, CFO и руководителям продуктов.
1. Почему обычного ИТ-бюджета больше недостаточно
В традиционной бюджетной модели инфраструктура часто выглядит как относительно фиксированная часть:
- серверное и сетевое оборудование;
- пользовательское оборудование;
- лицензии;
- каналы связи;
- дата-центр;
- техническая поддержка.
Расходы планируются заранее, формируется бюджет, закупки и затем изменение инфраструктуры, что требует времени и согласований.
Облако меняет эту экономику. Новый сервер появляется несколькими кликами. Новый Kubernetes-кластер — несколькими строками Infrastructure as Code. Увеличение CPU или RAM — изменением конфигурации. Новая база данных — одним запросом к API. Техническое решение превращается в финансовое обязательство мгновенно. И здесь возникает несколько проблем.
Проблема №1. CIO не знает, хватит ли бюджета
Сам факт, что за текущий месяц потрачено 1 млн рублей, мало что говорит. Нужно понимать:
- сколько было запланировано;
- сколько уже потрачено;
- как меняется динамика;
- сколько будет потрачено до конца года;
- какие проекты создают основной рост.
То есть нужен не только план/факт, но и /прогноз.
Вопрос руководителя должен звучать не:
«Сколько мы потратили?»
а:
«При текущей динамике сколько мы потратим до конца года и когда выйдем за пределы бюджета?»
Проблема №2. Продукт не знает своей себестоимости
Предположим, у компании есть десять цифровых продуктов. Общий счет за облако — 50 млн рублей в год. Но сколько из этих 50 млн стоит каждый продукт? Если ответить на этот вопрос невозможно, значит невозможно корректно посчитать и экономику продуктов. Мы можем знать выручку продукта, количество пользователей, количество транзакций, маржинальность. Но если стоимость ИТ-инфраструктуры известна только на уровне всей компании, полноценной юнит экономики нет.
Проблема №3. Архитектура начинает влиять на бюджет незаметно
Современный продукт может состоять из десятков или сотен компонентов:
- микросервисов;
- баз данных;
- очередей;
- Kubernetes-кластеров;
- виртуальных машин;
- хранилищ данных;
- балансировщиков;
- систем мониторинга;
- резервных копий;
- дополнительных контуров.
Каждое архитектурное решение по отдельности может быть вполне разумным. Но кто отвечает за совокупную стоимость этой архитектуры? Иногда продукт становится дорогим не потому, что ему действительно нужна сложная архитектура, а потому, что сложность накапливается постепенно. Еще один микросервис. Еще одна база. Еще несколько реплик. Еще немного CPU. По отдельности расходы небольшие. Вместе они превращаются в миллионы рублей.
2. FinOps — это не про экономию серверов
Классическое представление о FinOps часто сводится к простой формуле:
«Нужно уменьшить расходы на облако».
Это слишком узкое понимание. В зрелой модели FinOps должен отвечать как минимум на пять вопросов:
1. Сколько мы тратим?
2. Кто тратит?
3. На что тратит?
4. Почему это столько стоит?
5. Какой бизнес-результат мы получаем за эти деньги?
Последний вопрос принципиально меняет саму концепцию. Если мы просто нашли и отключили десять виртуальных машин — это оптимизация инфраструктуры. Если мы понимаем, что продукт приносит 100 млн рублей выручки, из которых 8 млн приходится на инфраструктуру, а затем можем связать изменение архитектуры с изменением этих 8 млн. — это уже управление экономикой продукта.
Поэтому я рассматриваю FinOps не как отдельную техническую практику, а как систему управления экономикой ИТ.
3. Сначала нужно научиться отвечать на вопрос «чьи это деньги?»
Первый практический шаг — единая система классификации инфраструктуры. В моем подходе я использовал четыре ключевых измерения:
Каждый инфраструктурный объект должен иметь соответствующие метки.
Например:
Теперь стоимость конкретного ресурса можно связать не просто с облачным аккаунтом, а с конкретным продуктом и ответственным за него подразделением. Это принципиальный переход:
Cloud account → Product → Team
вместо:
Cloud account → «ИТ»
Почему нельзя позволять командам создавать произвольные метки
Это выглядит как мелочь, но на практике именно здесь легко разрушить всю систему аналитики. Например, разные команды могут назвать одну и ту же базу:
Для человека очевидно, что речь идет об одном и том же. Для аналитической системы это потенциально шесть разных сущностей. Поэтому нужен жесткий справочник значений. Метки должны быть не свободным текстовым полем, а частью корпоративной модели данных. Причем контролировать нужно не только наличие метки, но и ее корректность. Иначе через несколько месяцев DWH будет заполнен красивыми, но практически бесполезными данными.
4. Из облачного биллинга делаем управленческие данные
Облачный провайдер уже знает стоимость каждого ресурса. Но смотреть на счет в личном кабинете облачного провайдера — это еще не FinOps. Задача компании — регулярно забирать тарификацию в собственное хранилище данных и объединять ее с другими источниками.
Базовая схема выглядит так:
Cloud Billing → Выгрузка в Excel → ручной анализ
Для полноценного анализа одного биллинга недостаточно. Ручной труд в XXI веке мовитон. Поэтому я построил контур данных следующим образом:
Загрузка должна выполняться регулярно, в моем подходе — ежедневно. В DWH попадают как финансовые, так и технические характеристики ресурсов:
- ресурс;
- тип ресурса;
- стоимость;
- период;
- продукт;
- контур;
- микросервис;
- команда;
- другие необходимые измерения.
Но самое важное — рядом с биллингом должны появиться данные о фактическом потреблении ресурсов.
Например:
- сколько CPU выделено;
- сколько CPU реально используется;
- сколько RAM выделено;
- сколько RAM используется;
- сколько выделено storage;
- сколько занято;
- какая фактическая нагрузка;
- сколько запросов обрабатывается.
Теперь мы можем не просто знать:
«Этот сервер стоит 30 тысяч рублей в месяц».
Мы можем задать следующий вопрос:
«За что именно мы платим и насколько эффективно используем купленный ресурс?»
Это уже совершенно другой уровень аналитики.
5. Одного биллинга недостаточно
Самая важная часть подхода — соединить финансовые данные с техническими и продуктовыми. В DWH должны встретиться как минимум три группы источников.
Финансовые данные
- стоимость инфраструктуры;
- бюджет;
- план/факт;
- прогноз;
- стоимость лицензий и сервисов, если они относятся к продукту.
Технические данные
- CPU;
- RAM;
- VRAM;
- Disk;
- фактическая загрузка;
- количество экземпляров;
- количество запросов;
- технические метрики микросервисов.
Продуктовые данные
- пользователи;
- транзакции;
- заказы;
- выручка;
- другие бизнес-метрики.
Именно объединение этих данных создает ценность. Представим, что стоимость инфраструктуры продукта выросла на 20%. Сам по себе этот факт мало что говорит. Но если одновременно мы видим, что:
- количество пользователей выросло на 5%;
- транзакции выросли на 7%;
- выручка выросла на 6%;
- инфраструктурные расходы выросли на 20%,
то возникает вполне конкретный вопрос:
Почему стоимость инфраструктуры растет значительно быстрее бизнеса?
Ответ может находиться уже не в лишних инфраструктурных компонентах, а в архитектуре или работе продуктовой команды.
6. Что делать с инфраструктурой, которую используют несколько продуктов
Это один из самых сложных методологических вопросов. Предположим, один сервер или микросервис используется тремя продуктами. Кому отнести его стоимость? Самый простой ответ:
«На общий инфраструктурный бюджет».
Но тогда расчет стоимости продукта слишком грубый, например один продукт высоконагруженный, а остальные слабо востребованы. Нужно честно разделить стоимость между продуктами. Возникает следующий вопрос:
Как именно?
В зависимости от характера нагрузки можно использовать разные драйверы распределения:
- количество пользователей;
- количество транзакций;
- объем трафика;
- количество запросов;
- потребление CPU;
- потребление storage;
- другие объективные показатели.
Например, если общий сервис обслуживает три продукта, а на продукт А приходится 60% транзакций, на продукт B — 30%, на продукт C — 10%, стоимость сервиса можно распределить в соответствующей пропорции. Но здесь важен не столько конкретный алгоритм, сколько принцип:
Правило распределения должно быть определено заранее и применяться одинаково.
Нельзя каждый месяц выбирать удобную методику в зависимости от того, кому хочется показать меньшую себестоимость. Иначе юнит экономика превращается в спор между продуктами и жонглирование данными, что в принципе превращает FinOps из объективных измерений в дорогостоящую фикцию.
7. Четыре дашборда, которые превращают FinOps в систему управления
Когда данные собраны, возникает следующий вопрос:
Что именно должен видеть руководитель?
Я бы выделил четыре уровня аналитики: бюджет, продукты, детализация продукта, анализ инфраструктуры.
7.1. Дашборд CIO/CFO: бюджет
На верхнем уровне руководитель должен видеть:
- годовой бюджет;
- факт;
- процент использования;
- прогноз;
- отклонение;
- динамику;
- основные источники перерасхода.
Главный вопрос:
«При текущей динамике сколько мы потратим к концу года?»
Допустим, за первые шесть месяцев использовано 45% бюджета. Это еще не означает, что мы экономим. Если расходы растут ускоряющимися темпами, к концу года можно получить существенный перерасход. Поэтому важно видеть не только процент освоения бюджета, но и прогноз. Это превращает отчетность в систему раннего предупреждения.
7.2. Дашборд продуктов
Следующий уровень — расходы по продуктам.
Например:
Продукт → DEV / STAGE / PROD / GeoPROD
Здесь сразу становятся заметны интересные вещи. Предположим, есть два примерно сопоставимых продукта. Один использует 100 условных единиц инфраструктурных ресурсов, другой — 300. Первый вопрос:
Почему?
Это не означает автоматически, что второй продукт построен неправильно. У него может быть существенно большая нагрузка. Но если бизнес-нагрузка сопоставима, необходимо углубляться.Причиной может оказаться:
- архитектура;
- избыточное масштабирование;
- неправильный выбор технологий;
- неоптимальная конфигурация;
- неиспользуемые компоненты;
- исторически накопившаяся инфраструктура;
- слишком большой DEV/STAGE;
- неоптимальная работа с данными.
Здесь FinOps становится инструментом архитектурного контроля.
7.3. Дашборд юнит экономики
Это наиболее интересный уровень. Мы соединяем:
Пользователи → потребление → выручка → расходы → результат
Например:
Теперь стоимость инфраструктуры можно обсуждать не в терминах:
«Нам дорого стоит Kubernetes».
а:
«Инфраструктура продукта составляет X% его выручки».
Или:
«Стоимость обработки одной транзакции составляет X рублей».
Это уже язык бизнеса. И здесь появляется возможность сравнивать не только продукты между собой, но и динамику одного продукта во времени.
Если выручка растет быстрее инфраструктурных расходов — экономика улучшается.
Если инфраструктурные расходы растут быстрее выручки — нужно искать причину.
7.4. Дашборд эффективности инфраструктуры
Последний уровень — анализ самого ресурса. Для каждого элемента можно сопоставить:
- выделенный CPU;
- фактический CPU;
- выделенную RAM;
- фактическую RAM;
- VRAM;
- Disk;
- фактическую загрузку;
- стоимость.
Например:
Возникает простой вопрос:
Зачем платить за 26 CPU?
Возможно, есть причина. Например, необходимо обеспечить резервирование или выдержать кратковременный пик нагрузки. Но если таких причин нет, появляется кандидат на оптимизацию. Можно уменьшить выделенные ресурсы и рассчитать потенциальную экономию:
26 CPU → 8 CPU → потенциальная экономия X ₽/месяц.
Теперь это не абстрактное:
«Кажется, сервер слишком большой».
Это конкретная задача:
«Есть ресурс стоимостью X рублей в месяц, фактическое использование Y, потенциальная экономия Z».
Так формируется план работ по оптимизации инфраструктуры.
8. Самая опасная ошибка — не «зомби-сервер»
Когда говорят об оптимизации облака, обычно вспоминают простаивающие виртуальные машины. Но я считаю гораздо более опасной другую проблему — отсутствие финансовых ограничителей вокруг инженерных решений.
Представим обычную ошибку в IaC:
вместо:
Одна ошибка может создать сотню ресурсов.
Если ошибка обнаружена через несколько минут — это технический инцидент. Если через несколько часов — это технический инцидент с финансовыми последствиями. Если через несколько недель — это уже финансовый инцидент.Именно поэтому FinOps не должен находиться где-то отдельно от DevOps/SRE. Он должен встраиваться в инженерный процесс.
Например, через:
- управление изменениями;
- бюджеты;
- квоты на ресурсы;
- мониторинг и автоматические инциденты.
И здесь появляется важный принцип:
FinOps должен не только объяснять расходы постфактум, но и предотвращать неконтролируемые расходы.
9. Что в итоге получает CIO
После внедрения такой системы меняется сам характер управления. До FinOps разговор выглядит примерно так:
«Счет за облако вырос на 18%. Почему?»
После внедрения:
«Продукт A увеличил инфраструктурное потребление на 24%. Рост связан с сервисом X. При этом пользовательская нагрузка выросла только на 7%. Необходимо проверить масштабирование и конфигурацию сервиса».
Это принципиально разные уровни управления.
Первый — реактивный.
Второй — Data Driven.
Еще важнее, что второй разговор уже не обязательно должен начинаться с CIO. Его может начать финансовый контролер, руководитель продукта, архитектор или руководитель инфраструктуры — потому что у всех появляется единая модель данных, единая база. И это, на мой взгляд, один из главных результатов внедрения FinOps.
10. FinOps как часть Data-Driven IT Management
В зрелой ИТ-функции FinOps нельзя рассматривать изолированно.
Он соединяется с:
- ИТ бюджетированием;
- архитектурой;
- DevOps;
- SRE;
- ITSM;
- Product Management;
- DWH/BI;
- управлением портфелем;
- финансовым контроллингом.
Получается замкнутый цикл:
На каждом уровне возникает обратная связь. Бизнес определяет цели. Продукт формирует требования. Архитектура определяет способ реализации. Инфраструктура обеспечивает выполнение. Потребление превращается в расходы. Расходы сопоставляются с бизнес-результатом. После этого принимается новое управленческое решение. И цикл повторяется.
Именно этот цикл превращает ИТ из центра затрат в управляемую бизнес-функцию.
11. С чего начать внедрение FinOps
Не обязательно начинать с покупки специализированной FinOps-платформы. На первом этапе важнее правильно построить модель данных и ответственности.
Шаг 1. Провести инвентаризацию
Понять:
- какие облака используются;
- какие ресурсы существуют;
- кто ими управляет;
- какие продукты их используют;
- где находятся shared-компоненты.
Шаг 2. Создать единый справочник
Определить:
- продукты;
- команды;
- контуры;
- сервисы;
- правила именования;
- обязательные метки;
- владельцев справочников.
Шаг 3. Начать регулярно собирать биллинг
Ежедневно загружать выгрузки детализации билинга в DWH. На этом этапе уже можно получить первый важный результат — увидеть реальную структуру расходов.
Шаг 4. Добавить технические метрики
Соединить стоимость с фактическим использованием:
- CPU;
- RAM;
- Disk;
- VRAM;
- количеством запросов;
- нагрузкой;
- количеством ресурсов.
Теперь появляется возможность анализировать эффективность.
Шаг 5. Связать расходы с продуктовой аналитикой
Добавить:
- пользователей;
- транзакции;
- выручку;
- другие бизнес-показатели.
И перейти от анализа cost к анализу unit economics.
Шаг 6. Создать четыре уровня отчетности
Я бы двигался именно в такой последовательности:
Budget → Product → Unit Economics → Infrastructure
Сначала нужно научиться управлять общим бюджетом. Затем понять стоимость продуктов. После этого — связать стоимость с бизнес-результатом. И только затем глубоко оптимизировать отдельные инфраструктурные ресурсы.
Шаг 7. Определить ответственность
У каждой значимой группы затрат должен быть владелец. Не должно существовать ситуации:
«Это расходы ИТ».
Нужно понимать:
«Это расходы продукта X, которыми управляет команда Y».
Тогда возникает возможность не только анализировать затраты, но и управлять ими.
Шаг 8. Запустить регулярный FinOps-review
Отчет сам по себе ничего не оптимизирует. После анализа должен появляться конкретный план мероприятий:
- что отключить;
- что уменьшить;
- что переразмерить;
- что изменить архитектурно;
- где пересмотреть тариф;
- где изменить технический стандарт;
- где установить дополнительный контроль.
И главное — каждое решение должно иметь ожидаемый экономический эффект.
12. Главный вывод
FinOps начинается с простого вопроса:
«Сколько мы платим за облако?»
Зрелый FinOps должен привести компанию к совершенно другому вопросу:
«Какой бизнес-результат мы получаем за каждый рубль, вложенный в инфраструктуру?»
Для этого необходимо уметь пройти по цепочке:
рубль → инфраструктура → микросервис → команда → продукт → пользователи → выручка.
Когда такая связь существует, счет облачного провайдера перестает быть непрозрачной строкой расходов. Он превращается в управляемые данные. А данные позволяют принимать решения. Какой ресурс изменить. Какой компонент убрать. Какую архитектуру пересмотреть. Какой продукт оптимизировать. Какой команде изменить подход. И, в конечном итоге, куда компании действительно стоит направлять деньги.
Именно в этом я вижу главный смысл FinOps. Не в том, чтобы просто потратить на облако на 10% меньше. А в том, чтобы сделать экономику ИТ прозрачной, измеримой и управляемой.