Оптимізація вартості хмарної інфраструктури: AWS, GCP, Azure

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

Чому оптимізація витрат на хмару не дає ефекту

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

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

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

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

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

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

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

Вимірюваний ефект: швидкість викладки, відмови, простій

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

  • Час викладки релізів. Кеш артефактів живе між запусками, незмінені шари не перезбираються, сервіси викладаються паралельно. Викладка йде з десятків хвилин на одиниці, і реліз перестає бути подією на півдня.
  • Частка відмов і час відновлення. Перевірки на стадії викладки виявляють несумісні зміни до продакшену, а опис інфраструктури в Terraform дає відтворюваний відкат: невдалих викладок у рази менше, повернення до робочої версії — хвилини, а не збирання з нуля.
  • Частка простоювальних ресурсів. Автомасштабування за фактичним навантаженням і розклад для тестових контурів прибирають машини, які враховуються в рахунку, але не обслуговують запити. Зазвичай це половина парку, після налаштування — одиниці відсотків.
  • Передбачуваність навантаження. Ліміти та запити за процесором і пам’яттю виставляємо за реальним профілем сервісу: видно, який компонент упреться першим, і зростання трафіку перестає бути сюрпризом.
  • Стійкість до піків. Резервні потужності та черга запитів гасять сезонні сплески без ручного втручання: пік проходить на штатній конфігурації, після спаду ресурси повертаються до спільного пулу.

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

Режими управління витратами: порівняння підходів

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

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

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

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

Порядок робіт: аудит, схема, налаштування, перевірка

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

  1. Аудит інфраструктури — збираємо карту ресурсів: машини, диски та снапшоти, балансувальники, реєстри образів, бази та черги. Звіряємо список із метриками споживання за кілька місяців: так видно простоювальні вузли й ресурси, забуті після експериментів.
  2. Схема інфраструктури — граф залежностей: хто з ким обмінюється трафіком, де спільний кеш і сховище, які сервіси дублюють одне одного. Без цієї схеми вимкнення «зайвого» ламає сусідній контур.
  3. План змін — розставляємо правки за співвідношенням ефекту й ризику: спочатку те, що дає обсяг без впливу на прод, потім усе, що потребує вікна обслуговування.
  4. Тарифні режими та зберігання — стабільну базу переводимо на резервування, змінну частину залишаємо за фактом; холодні дані вирушають у дешеві класи зберігання.
  5. Налаштування лімітів — квоти на команди та середовища, пороги автомасштабування із захистом від розгону, lifecycle-правила: останні N образів і снапшотів живуть, решта чиститься.
  6. Перевірка під навантаженням — профіль реального трафіку: масштабування спрацьовує вчасно, ліміти не ріжуть піки, відмовостійкість зберігається при виході вузла. Плюс алерти на відхилення витрат від планової динаміки.
  7. Передача в супровід — дашборди, регламент змін, документація та навчання команди. Замовник бачить, за що платить, і тримає режим сам.

Політики доступу, схеми та регламенти обслуговування

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

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

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

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

Кейс: розбір інфраструктури, метрики до і після

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

Що показали заміри

Зняли метрики за 30 днів: середнє завантаження процесорів трималося на 12–14% при заявленій нестачі, частка простоювальних ресурсів становила 38% — цілодобово працюючі тестові середовища, знімки дисків старші за рік, відключені томи.

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

Що змінили і що вийшло

Розміри машин підібрали за 95-м процентилем фактичного споживання замість пікового, автомасштабування перевели на цільову утилізацію та довжину черги запитів, базову частину навантаження закрили резервованими ресурсами.

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

Результат впровадження: частка простою знизилася з 38% до 9%, робоче завантаження машин зросло до 62–68%, викладка релізу скоротилася з 40 до 9 хвилин, частка відмов на деплої — з 6% до 0,3%.

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

Що робити, якщо інфраструктура вже розгорнута й зростає

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

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

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

Зростаюче навантаження впирається в ліміти та квоти акаунта раніше, ніж у продуктивність.

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

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

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

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

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

Чи спрацює це з нашим поточним стеком?

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

Хто відповідає за наші дані?

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

А якщо інфраструктуру розгортали не ви й опису немає?

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

Скільки це займає і чи можна повернути як було?

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

Обговоримо задачу та повернемося з оцінкою й планом

Щоб обговорити задачу з оптимізації хмарних витрат предметно, не потрібно готувати вивантаження за роки й відкривати повний доступ до акаунтів.

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

Що корисно надіслати на першому кроці:

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

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

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

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

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