FinOps як культура. Як правильно управляти витратами у хмарних сервісах

9 Серпня 2023

Використання хмарних сервісів на проєкті = витрати. А де є гроші, має бути контроль. Тож управління витратами й ресурсами при використанні “хмар” покладають на FinOps-інженерів. Це нова спеціалізація, яка має всі шанси стати професією майбутнього. Олексій Вінніченко, DevOps-інженер у NIX, представив ґрунтовний огляд теми FinOps. Головні тези — далі в матеріалі.

Що таке FinOps

Finance Operations — це методологія та практика управління витратами і ресурсами у хмарних обчисленнях, сервісах та інфраструктурі. Часто кажуть, що FinOps — це про відстеження бюджету та економію. Та насправді поняття набагато ширше. Це ніби окрема дисципліна, культура, яка задає в компанії усталені підходи до використання хмарних сервісів.

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

Чому не вести все в Google-табличці?

Хтось запитає: навіщо все ускладнювати? Створіть Google-таблицю з основними і додатковими витратами — і все. Та в реальності це не так просто. Хмарні сервіси навіть у межах AWS, Azure або Google Cloud можуть мати різну тарифікацію. Зокрема, за обсяги ресурсів чи за час використання, за години, хвилини або секунди, чи з іншими обмеженнями.

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

Чотири переваги впровадження FinOps

  • Економія. Позбавившись від непотрібних витрат, ви зменшите вартість хмарних послуг і як результат — бюджет створення кінцевого продукту без втрати якості.
  • Продуктивність.  FinOps-спеціалісти знаходять кращі рішення у використанні хмар. Їхня задача — підібрати те, що дозволить команді отримувати більше обчислювальних ресурсів у межах наявного бюджету.
  • Передбачуваність. Використання хмар може бути непропорційним у різні періоди роботи над продуктом. Це позначиться і на рахунках. Але з FinOps-практикою можна більш точно спланувати використання ресурсів. Так компанія знатиме, коли потрібно платити більше, а коли — менше.
  • Прозорість.  FinOps деталізує рахунки і залучає до цього процесу всю команду. Коли люди бачать реальні витрати, то краще несуть відповідальність за них.

З чого почати?

Інформування

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

Оптимізація

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

Контроль

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

Рухаємось по моделі зрілості FinOps

Ви завжди маєте рухатися вперед — до кращої оптимізації використання ресурсів. Орієнтуйтесь на модель зрілості FinOps та на три етапи її впровадження:

  • Crawl. Початкова стадія, коли команда вчиться аналізувати й оптимізувати бюджет. Всю увагу спрямовано на виправлення знайдених помилок. У цьому випадку фахівці розраховують витрати з погрішністю у 20%.
  • Walk. Команда змогла автоматизувати більшу частину перевірки витрат. На цьому рівні якість прогнозування бюджету підвищується до погрішності у 15%.
  • Run. Найвищий рівень впровадження FinOps-культури, коли цієї методики дотримується вся команда навіть у великих та складних проєктах. Погрішність розрахунків не перевищує 12%.

Best practices

FinOps доволі молодий напрям не лише в Україні, але й на західному IT-ринку. Усталених практик не так вже й багато. Як на мене, найкраще звертатися до FinOps Framework. Створений зусиллями спільноти FinOps Foundation, він описує все, що стосується запуску та підтримки FinOps-культури на проєкті. Починаючи від функціональних зон діяльності, доменів, стейкхолдерів і закінчуючи конкретними задачами, процесами, етапами. Спільноту заснувала Linux Foundation у 2019 році. До неї вже приєдналися понад 10 тисяч експертів та більше 3500 компаній.

Найефективніші підходи FinOps

З відомих підходів FinOps хочу виділити найбільш ефективні, на мій погляд:

  • Залучайте всю команду.  Про раціональне використання хмар повинні думати всі, хто так чи інакше працює з ними. FinOps має стати культурою для всіх на проєкті.
  • Розподіляйте відповідальність. За кожен пункт у рахунку має бути відповідальний. Тільки так можна досягти ефекту, коли кожен співробітник постійно розмірковує, як оптимізувати використання «своїх» хмарних ресурсів.
  • Візуалізуйте дані.  Наочні, гарно стилізовані графіки витрат формують у команди краще розуміння того, що й скільки коштує та який вплив має.
  • Налаштуйте ліміти.  Навіть коли всі відповідально ставляться до FinOps, є ризик перевищення бюджету. 
  • Не обмежуйтесь однією платформою. Часто на проєктах підключають сервіси одного провайдера. Це спрощує роботу розробників, девопсів, так легше гарантувати стабільність продукту. Але інколи розділення мікросервісів на різні платформи дає можливість заощадити значні кошти та попередити певні ризики.
  • Комбінуйте інструменти. Існують хороші нативні застосунки для FinOps: AWS Cost Explorer, Azure Invoices, Google Cloud Pricing Calculator. Так само стануть в нагоді й сторонні рішення на кшталт Apptio Cloudability та Spot by NetApp.
  • Звертайтесь до техпідтримки.  Може здатися дивним запитувати у провайдера, як заощадити на оплаті його послуг. Насправді ж сапорт цілком адекватно ставиться до оптимізації ресурсів та бюджетів клієнтів. Усі клауд-гіганти пропонують різні варіанти економії: сезонні акції, споти, гуртові ціни. Інколи це стосується певних технологій. Наприклад, в AWS обіцяють до 72% знижки на зарезервовані інстанси у порівнянні з інстансами на запит.
  • Відмовляйтесь не лише від значних, але й від малих витрат.  
  • Відключайте або видаляйте непотрібне.  Багато коштів йде на інстанси, які не використовуються «‎тут і зараз». Налаштуйте автоматичні системи масштабування так, щоб відключати чи взагалі видаляти те, що не потрібно на проєкті в даний момент. Доцільніше потім включити або створити їх заново.
  • Прогнозуйте. Чимало інструментів дозволяють розрахувати витрати на певні ресурси ще до їх підключення. Так розробники одразу розуміють доцільність певного технічного рішення. У майбутньому це допоможе уникнути помилок на деплої.

Що треба знати, аби стати FinOps-інженером

Вам знадобляться знання DevOps, Business Intelligence, Big Data, а також розуміння сфери фінансів (прогнозування, бюджетування).

Зазвичай цей напрям обирають DevOps-спеціалісти, які добре знаються на хмарних рішеннях і можуть вбудовувати методології у пайплайни CI/CD. Певною мірою фахівець стає Product Owner-ом побудованої ним інфраструктури. Він знає технології проєкту і тарифи сервісів, потреби замовника та бізнесу — і підпорядковує це єдиній меті. Ця робота також передбачає багато комунікацій з усіма стейкхолдерами: від розробників та бізнес-аналітиків до клієнта і колег на боці його команди.

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

У більшості проєктів зазвичай немає можливості виділити таку окрему роль. Тому за FinOps-культуру відповідають передусім девопси. Водночас й інші залучені до проєкту фахівці на різних етапах можуть долучатись до брейнштормінгу і продумувати реальні потреби у хмарних сервісах для своїх задач та пов’язаних частинах продукту. За бажання, будь-який ІТ-спеціаліст може осягнути FinOps.

FinOps має бути частиною проєкту вже на старті

Якщо застосувати ці принципи від початку розробки, на рівні архітектури можна передбачити гнучкість у використанні ресурсів та грамотно заощадити кошти. Такий підхід допоможе сформувати та підтримувати потужну, довготривалу FinOps-стратегію. А з нею бізнес неодмінно досягне успіху.