Коли не варто використовувати IaC?

Бажання перевести всю інфраструктуру в код — сьогоднішній мастхев для багатьох DevOps-команд. Коли все описано кодом, легше підтримувати стабільність, масштабувати й уникати факапів.

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

То коли варто втриматись від IaC? Зараз пояснимо.

Що таке IaC?

Перш за все варто чітко розуміти, що це. 

Інфраструктура як код (IaC) — це спосіб описати та керувати інфраструктурою за допомогою коду, а не вручну через консолі чи інтерфейси.

Простими словами: раніше інженер сам встановлював ОС, відкривав порти, додавав користувачів та інше. А зараз він пише код, де описує усе це в конфігураційному файлі. І далі система сама розгортає інфраструктуру за цим «описом».

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

Проте є кілька прикладів, де IaC скоріше ускладнить життя, ніж полегшить.

Коли краще обійтись без IaC?

Якщо процеси запускаються раз на рік. 

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

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

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

Якщо ти не керуєш усіма процесами

Інфраструктура як код добре працює там, де ти контролюєш усі елементи. Але якщо твій процес спирається на сторонній сервіс (наприклад, зовнішній API чи провайдера з нестабільним SLA) — автоматизація може виявитися ненадійною.

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

Якщо ресурси складно повторити або відновити

Не застосовуй IaC там, де ресурси важко або неможливо створити знову.

Чому? Бо якщо ресурс не відтворюється автоматично з коду, інфраструктуру не вийде стабільно перезапускати чи оновлювати під час змін. Регулярне відтворення — одна з основ практики IaC.

Наприклад, візьмімо роботу з чутливою інформацією — паролями чи ключами, які зберігаються в сховищах типу Azure Key Vault. Так, у Key Vault є функція soft-delete, яка тимчасово дозволяє відновити видалені секрети. Але коли цей період минає, інформацію втрачено безповоротно.

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

Як витягти максимум з IaC?

Ось кілька порад від Дерека Ешмора, провідного спеціаліста з хмарних технологій та трансформації застосунків:

  1. Не гонись за 100% IaC
    Варто зосередитися на автоматизації більшості процесів, але прагнення до ідеальної цифри не завжди виправдане. Як кажуть, «різниця не велика, але суттєва».
  2. Автоматичне тестування — мастхев
    Важливо перевіряти, коли зміни в API, технологіях або політиках можуть порушити працездатність твого IaC. Це дозволить знайти й виправити проблеми до того, як вони вплинуть на роботу бізнесу.
  3. Пам’ятай про модульність і простоту підтримки
    При розробці шаблонів IaC враховуй їх подальшу легкість в обслуговуванні. Це допоможе зменшити витрати на підтримку і зробить процес дешевшим.
  4. Переглядай та адаптуй рішення
    Технології розвиваються, і те, що не має сенсу сьогодні, може стати важливим через деякий час. Постійний перегляд підходу до IaC допоможе не втратити нові можливості.

Підсумуємо

Інфраструктура як код дійсно спрощує масштабування, підвищує надійність і пришвидшує розгортання. Але тільки тоді, коли її застосовують обдумано.Якщо ти тільки вчишся тримати баланс, тоді маємо чудову пропозицію — навчання на курсі «DevOps з нуля» від ITEDU. Там ми не тільки розповімо про IaC, а й покажемо, як все працює на практиці.

Залишити відповідь

Дякуємо, що поділились