Рубріки: DevOpsХмари

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

Олексій Вінніченко

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

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

Що таке FinOps

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

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

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

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

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

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

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

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

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

Для старту зосередьтесь на ключових задачах:

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

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

Оптимізація

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

Контроль

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

Описаний вище життєвий цикл FinOps не є «одноразовим». Ця методика передбачає постійне повторення всіх трьох етапів. При цьому кожна частина команди рухається у своєму темпі відповідно до задач і можливостей певної групи.

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

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

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

Best practices

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

Варто згадати, що цей фреймворк постійно еволюціонує. Кожен учасник спільноти може на свій розсуд додати ідеї для його покращення. Та й навіть у самому FinOps Foundation кажуть, що фахівці можуть вільно адаптувати описані рішення під конкретні задачі свого проєкту. У Microsoft вважають, що краще зосередитись на моделі зрілості, аніж на цьому фреймворку. Розробники Azure радять зважати не на конкретні показники зрілості, а оцінювати досягнення команди окремо по кожному напряму.

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

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

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

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

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

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

Уявімо, що ви маєте визначити причину зміни вартості послуг за певний час. Для цього треба відстежувати багато метрик. Наприклад, навантаження CPU. Після виявлення проблеми переходимо до пошуку мікросервісу, який споживає зайві ресурси. Інколи так можна дійти до рівня REST-запитів! А після цього необхідно визначити, чи виправдано це з точки зору бізнесу. Треба порахувати, наскільки вищою є продуктивність зі збільшенням споживання ресурсів. Звісно, це простий приклад. У реальності ж ця робота передбачає багато комунікацій з усіма стейкхолдерами: від розробників та бізнес-аналітиків до клієнта і колег на боці його команди.

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

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

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

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

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Останні статті

IT в Україні йде до свого фінального кінця. І потраплятимуть туди виключно за покликом душі

Коротко про українську IT-сферу у 2024 році Це коли на одну вакансію Middle розробника по…

26.03.2024

Блокчейн-розробка сьогодні: зарплати і перспективи на ринку праці

Формування криптовалютної галузі в Україні почалося ще у 2014 – саме тоді з'явилися перші стартапи,…

18.03.2024

Скільки рішень ухвалює розробник? Погляд новачка, який запускає продукт

Автор цього блогу — Python-девелопер Сергій Солдатов, який вирішив створити досить унікальний продукт. І це…

12.03.2024

Чи треба готуватись до співбесіди?

Думки шукачів діляться на: «так, однозначно» і «ні, не вартує, я все і так про…

04.03.2024

Відкладаєте до останнього? Що таке «синдром студента» і як з ним боротися

Синдром студента — це форма прокрастинації, яка полягає в тому, що людина, якій дали завдання,…

23.02.2024

Вчимося працювати з Git: основи конфігурації, гілки, додавання файлів та директорій

Git — це найпопулярніша CVS прямо зараз, яка дозволяє відстежувати історію розробки і спільно працювати.…

20.02.2024