Оптимізація витрат на хмару: Kubecost, Infracost, Cost Anomaly

Витрати на хмару зростають, а зрозуміти, яка команда і який продукт їх створюють, дедалі складніше. Ми налаштовуємо облік витрат під ключ: розмічаємо ресурси, виводимо ліміти й регламенти, щоб ви бачили структуру витрат і керували ними, а не гадали за підсумковою сумою. Після впровадження зростання витрат перестає бути несподіваним.
Часті запитання

Cloud Cost Management: де витікає бюджет хмари

Рахунок за хмару зростає швидше за навантаження — перша ознака, що Cloud Cost Management у компанії не вибудуваний як процес. Нові сервіси з’являються, старі ніхто не виводить з експлуатації; піковий трафік минає, а виділені під нього ресурси залишаються. Через кілька місяців розрив між реальним споживанням і оплатою стає стійким і відтворюваним.

Найменш помітними є невраховані ресурси в хмарі. Диски та снапшоти від видалених машин, старі образи, балансувальники без робочих бекендів, зарезервовані адреси, тестові бази: кожна позиція в рахунку дрібна, у сумі — помітна частка. У моніторингу вони не спливають, бо він дивиться на працюючі сервіси, а не на споживання.

Другий шар — розмітка ресурсів. Поки в інстансу, диска й кластера немає міток із командою, продуктом і оточенням, витрати не можна розкласти за споживачами: вони надходять одним рядком, а питання «чий це стенд» вирішується листуванням у чаті.

Автомасштабування без обмежень і простоюючі стенди замикають список. Кластер під пік набирає репліки й не завжди повертає їх назад; середовища розробників піднімаються під задачу й живуть місяцями; тіньові стенди не потрапляють у планування. Саме тут і втрачається основна частина бюджету.

Розбираємо, як це закривається: інвентаризація та розмітка дають розбивку за командами, Kubecost і Infracost рахують вартість до застосування змін, а оповіщення про аномалії ловлять сплеск наступного дня, а не в кінці місяця.

Що дає розмітка та облік витрат: ефект у цифрах

Рахунок за хмару надходить однією сумою, і з нього не видно, який сервіс її створив: зростання трафіку, забутий тестовий контур чи розрослий кластер виглядають однаково.

Розмітка ресурсів за командами, сервісами, середовищами та призначенням знімає цю невизначеність — витрати розкладаються за власниками, і кожен рядок рахунку отримує адресу.

Ключова метрика тут — вартість на одиницю навантаження, а не загальний підсумок. Коли витрата рахується на тисячу запитів, годину роботи сервісу або гігабайт трафіку, видно, що саме дорожчає: обробка запиту чи сам обсяг навантаження. Перше — привід розбиратися в конфігурації, друге — нормальне зростання продукту.

Далі — зниження простою ресурсів. Знімаємо нічні та вихідні репліки в тестових контурах, стискаємо запити за процесором і пам’яттю до фактичного споживання, прибираємо забуті диски та снапшоти. Частина потужностей просто перестає займатися, а не переноситься на наступний місяць.

Третій ефект — виявлення аномалій витрат за години, а не в кінці розрахункового періоду. Будуємо базову лінію за добовою та тижневою варіативністю і налаштовуємо оповіщення на відхилення від медіани.

Залитий лог, зациклене завдання, випадково піднятий великий вузол ловляться того ж дня, коли їх ще дешево відкотити.

Для зведення розрізів в одну картину використовуємо Kubecost: він дає розбивку за кластером, простором імен і мітками, тому прозорість хмарних витрат стає робочою, а не звітною.

Кожна команда бачить свою частку й відповідає за неї, а рішення про оптимізацію спираються на цифри, а не на відчуття.

Способи обліку витрат у Cloud: порівняння підходів

Підходи відповідають на різні питання: скільки коштує ресурс зараз, скільки коштуватиме зміна, хто платить за спільний вузол і чому рахунок виріс учора.

Вибір тут не «або-або»: зрілий контур обліку збирається з шарів, де розмітка задає одиницю виміру, а інші підходи на неї спираються.

Підхід Коли підходить Обмеження
Розмітка силами команд Продуктові команди самі володіють сервісами та своїм бюджетом Дисципліна падає на релізах, спадщина залишається без міток, спільні вузли не покриваються
Оцінка за конфігурацією до запуску Зміна інфраструктури перевіряється до застосування Рахує за тарифним каталогом: не бачить фактичного споживання, знижок і спільних пулів
Розподіл спільних витрат за правилами Спільні кластери, балансувальники та мережі діляться між напрямами Правила потрібно підтримувати, ваги алокації спірні, без угоди про них звіт не приймуть
Зовнішній контроль аномалій Потрібна реакція на сплеск протягом доби, а не розбір у кінці місяця Сигнал надходить без причини й адресата, хибні спрацювання на релізах і міграціях

Шари сумісні, якщо домовитися про єдиний словник міток: ті самі ключі, що команди ставлять на ресурси, використовуються і в правилах розподілу спільних вузлів, і під час розбору відхилень.

Тоді зростання рахунку розкладається до конкретного сервісу та зміни, а не залишається рядком «інші витрати».

Починати розумно з розмітки та правил алокації — вони дають основу, без якої оцінка за конфігурацією рахується у вакуумі. Контроль аномалій підключається останнім: йому вже є до чого прив’язати сигнал.

Порядок впровадження: від аудиту до передачі

Впровадження управління витратами — це не встановлення панелі з графіками, а наведення ладу в даних про споживання. Поки розмітка неповна, звіти дають викривлену картину: помітна частка навантаження йде в «нерозмічене», і рішення щодо неї приймати не можна. Етапи вибудувані так, щоб кожен наступний спирався на перевірений результат попереднього.

  1. Інвентаризація ресурсів: кластери, простори імен, томи, балансувальники, снапшоти, зарезервовані потужності. Окремо фіксуємо «сиріт» — диски, зняті з навантаження, і незайняті адреси, які продовжують тарифікуватися.

  2. Схема розмітки: команда, продукт, середовище, тип навантаження. Значення фіксовані — вільні формулювання ламають збіжність розрізу за продуктом.

  3. Збір даних про споживання: вивантаження білінгу хмари та метрик кластера, приведення до однієї гранулярності за часом. Основна складність — зіставити контейнерне навантаження з позиціями рахунку провайдера.

  4. Правила розподілу: описуємо, як діляться спільні витрати — мережа, сховища, вузли під спільні сервіси. Пропорція має бути відтворюваною, щоб два розрахунки поспіль давали одне число.

  5. Перевірка розрахунків: звіряємо підсумки з фактичним рахунком на кількох періодах, включно із запуском і зупинкою середовищ. Розходження вище допуску — шукаємо причину в розмітці, а не у звіті.

  6. Передача регламентів: документація, алерти на аномалії, порядок розбору — хто реагує, за який строк, що вважається нормою. Після цього відхилення видно наступного дня, а не в закритті періоду.

Артефакти впровадження: розмітка, ліміти, регламенти

На виході в команди залишається не набір разових правок, а комплект артефактів, за яким можна працювати без нас. Кожен лежить у репозиторії інфраструктури: його видно під час перевірки змін, можна відкотити й передати новому інженеру.

  • Схема тегування: обов’язкові мітки — власник, продукт, середовище, тип навантаження; ресурс без них не проходить перевірку під час розгортання.
  • Правила іменування ресурсів: єдиний шаблон для кластерів, реєстрів, сховищ і баз, щоб за назвою читалися середовище та приналежність.
  • Розподіл спільних ресурсів: як діляться мережа, балансувальники, логування та спільні сервіси між командами — жодна стаття не залишається «нічиєю».
  • Оповіщення про перевищення: пороги за просторами імен і окремими навантаженнями, сигнал при відхиленні від звичайного профілю споживання та при різкому зростанні за коротке вікно.
  • Регламент реагування: хто і в який строк розбирає спрацьоване оповіщення, які кроки обов’язкові та коли підключається власник продукту.
  • Політики обмежень: запити та ліміти за замовчуванням, заборона на дорогі класи ресурсів без обґрунтування, розклад зупинки неробочих середовищ.
  • Звітність: зріз витрат за командами та продуктами з поділом на постійну й змінну частину, читабельний без пояснень автора.
  • Інструкція із супроводу: де лежать конфігурації, як додати мітку або змінити поріг, що робити при появі нового середовища.

Із цим комплектом нове навантаження потрапляє в розмітку та звітність автоматично, а зростання витрат видно на етапі, коли воно ще керується правкою конфігурації.

Кейс: як зупинили зростання витрат на хмару

Що було

Рахунок за хмару зростав швидше за навантаження: сервісів стало приблизно на третину більше, а витрати збільшилися майже вдвічі. Розмітки за командами й продуктами не було, тому у звіті змішувалися робочі контури, тестові стенди та особисті середовища інженерів.

Стенди під демонстрації та розбори задач піднімалися вручну й продовжували працювати тижнями. Ніхто не міг сказати, яка команда і який сервіс дає внесок у зростання — обговорювали загальний рахунок, а не джерело.

Що змінили

Ввели обов’язкову розмітку ресурсів за продуктом, командою та типом середовища — звітність будується за мітками, а не за ручними зведеннями.

Kubecost дав розбивку витрат усередині кластера за просторами імен і робочими навантаженнями: стало видно, які сервіси тримають резерв обчислювальних ресурсів і не віддають його.

Аномалії ловимо автоматично — сплеск позначається протягом доби й іде власнику сервісу разом з історією змін.

Ліміти за командами закріпили як поріг на місяць: перевищення розбирається одразу, а не в кінці кварталу. Стенди для демонстрацій і тестових задач гасяться за розкладом — автостоп після кількох годин без звернень, підйом на вимогу.

Що стало

Частка простоюючих обчислювальних ресурсів скоротилася приблизно втричі, а витрати перестали зростати швидше за навантаження: плюс третина сервісів тепер дає зіставний приріст рахунку.

Під розміткою — понад дев’ять десятих витрат, тому відхилення видно в розрізі команди, а не в загальній сумі.

Відкат залишився керованим: розклад гасіння задається політикою, а не ручними діями, і стенд піднімається на запит за хвилини.

Що робити, якщо хмара вже працює без розмітки?

Так, розмітку можна відновити заднім числом, нічого не перезбираючи. Мітка — це атрибут ресурсу, який навішується на вже працюючий об’єкт через API провайдера і застосовується до нових операцій, а не переписує історію.

Основа обліку — не теги, а вивантаження білінгу з деталізацією за кожним ресурсом за минулі періоди: його складають у сховище, з’єднують з інвентарем і отримують картину витрат за власниками навіть там, де розмітки не було ніколи.

Спадщина без тегів розбирається за шарами. Спочатку межі, які вже існують — акаунти, проєкти, підписки, — вони дають перший рівень володіння.

Усередині шару ресурси групуються за назвами та префіксами середовищ, за історією змін у системі контролю версій, за прив’язкою до мереж і груп, і лише неопізнаний залишок іде власникам на уточнення списком.

На першому проході так закривається основна частина витрат, залишок дозмічується ітераціями, без зупинки сервісів і перестворення ресурсів.

Далі важлива міграція без простою. Спочатку вмикається режим попередження: політика перевіряє, що нові ресурси створюються за шаблонами з обов’язковими полями, але нічого не блокує.

Infracost рахує різницю у вартості прямо в перевірці змін інфраструктурного коду — подорожчання видно до застосування. Kubecost розкладає витрати всередині кластера за просторами імен і робочими навантаженнями, тому ціна кожної команди перестає бути усередненою.

Утримати схему допомагає те, що розмітка стає умовою, а не побажанням: обов’язкові поля в шаблонах, щоденна звірка вивантаження з інвентарем, оповіщення про аномалії.

Cost Anomaly ловить сплеск за години, поки він не перетворився на рядок рахунку за місяць, а нерозпізнані витрати одразу видно як окрему частку, а не розчиняються в загальній сумі.

Облік відновлюється повністю й далі тримається сам — інфраструктура при цьому залишається тією самою, що й була.

Технічні сумніви: питання інженерів

Розподіл витрат майже завжди починають з одного й того самого: як ділити спільні вузли між командами і що робити, якщо сервіси живуть у кількох хмарах. Нижче — відповіді на сумніви, які спливають до старту робіт.

Як ділити спільні вузли, якщо на одному кластері працюють кілька команд?

Спільні вузли ділять за фактичним споживанням: запитані й реально використані ресурси контейнерів, час життя подів, прив’язка до простору імен і мітки команди. Залишок — системні компоненти, моніторинг, точка входу трафіку — виноситься окремим рядком «платформа». Так у кожної команди з’являється своя цифра, а не середня за кластером.

У нас кілька хмарних провайдерів — облік доведеться збирати вручну?

Ні. Мітки приводяться до єдиного словника «власник — продукт — середовище», а вивантаження із систем обліку витрат зводяться в одну модель. Kubecost закриває контейнерну частину, інші інструменти — віртуальні машини, сховища та мережевий трафік. Різнобій у розмітці лікується політикою: ресурс без обов’язкових міток просто не створюється.

Коли з’являться перші дані й як відрізнити разову аномалію від системного зростання?

Перші цифри за контейнерами — у межах пари тижнів, повна картина з прогнозом — за місяць-півтора. Разова аномалія — стрибок у вузькому вікні, прив’язаний до конкретного ресурсу або випуску.

Системне зростання виглядає інакше: повільно повзе базова лінія за всіма командами і зростає частка нерозмічених ресурсів — це видно за динамікою кількох тижнів.

Обговоримо задачу: з чого почнемо роботу

Щоб дати оцінку строків, починати потрібно не з впровадження, а з розбору: як влаштовані середовища і де вже є дані про споживання. Нижче — мінімальний набір вхідних даних. Якщо чогось немає, це теж відповідь: отже, розмітку ресурсів і збір метрик закладаємо в перший етап.

  • деталізацію за рахунками за 2–3 місяці з розбивкою за проєктами, акаунтами та сервісами;
  • схему акаунтів і підписок: де prod, де тестові та проміжні середовища, хто власник кожного;
  • поточну розмітку ресурсів (мітки, теги) і список того, що вона не покриває;
  • схему архітектури: керовані сервіси, кластери, сховища, бази даних, трафік між зонами;
  • опис інфраструктури кодом — за ним рахуємо вартість змін до розгортання;
  • уже використовувані інструменти спостереження та те, куди складаються метрики;
  • вимоги до порогів повідомлень: хто і за яким відхиленням має отримувати сигнал;
  • обмеження щодо доступів і політик безпеки, що впливають на збір даних.

Цього достатньо, щоб повернутися з планом робіт з обліку витрат: які правила розмітки вводимо, на якому рівні рахуємо, що потрапляє у звіти і хто отримує оповіщення про аномалії.

Оцінку строків даємо за етапами — від розмітки та збору даних до перших оповіщень і регулярного розбору витрат.

Опишіть задачу у вільній формі — повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142