(Шкідлива) автоматизація: чи може її бути забагато?
Автоматизація спрощує повторювані механічні задачі, оптимізує процеси та пришвидшує доставлення продукту. Проте більше автоматизації ≠ кращий результат або менше роботи. Треба вміти розрізняти, коли автоматизація доцільна, а коли — зробить тільки гірше.
Ось кілька базових моментів, про які слід пам’ятати.
Найперше: щоб автоматизувати процес, ви маєте глибоко його розуміти, що може бути нелегко для складних систем. Тож ви маєте чітко усвідомлювати для чого ви це робите.
Автоматизація не означає, що ви можете один раз налаштувати процес і забути про нього. Процеси потребують постійного обслуговування та оновлень, що може зайняти багато часу та дорого коштувати.
Вона також може усунути потребу в людській креативності, навичках розв’язання проблем і прийнятті рішень, важливих для розробки ПЗ.
Тож де та межа, де закінчується ефективна автоматизація та починається процес заради процесу? Розберімося.
Коли автоматизації забагато
Всі компанії хочуть стати схожими на Netflix, Amazon, Google чи іншого великого гравця ринку, що їм до вподоби. Agile, як новіша та продуктивніша за вотерфол методологія, може з цим допомогти. Але це не означає, що треба надто різко переходити до гнучких методологій та вдаватися до крайнощів.
В прагненні стати кращими бізнеси починають зловживати гнучкістю, а відповідно і DevOps та автоматизацією.
Спершу необхідно визначити, які процеси варто автоматизувати та налагодити ті з них, що на даному етапі працюють не так, як потрібно. Інакше ви автоматизуєте неефективність або зламаєте процеси.
Найкращий варіант — автоматизувати чітко визначені процеси. А не варто цього робити з тими з них, які потребують кілька точок прийняття рішень, або тими, що дорожче автоматизувати, ніж залишити, як є.
Шукаємо баланс автоматизації
Одні компанії надто автоматизують DevOps, деякі не роблять цього зовсім. Де шукати баланс?
Дивимося в корінь проблеми: сенс автоматизації в тому, щоб взяти ручний процес та з допомогою технологій зробити його повторюваним. Якщо процес неефективний чи має недоліки, то ви просто прискорюєте виконання поганого процесу.
Спершу ви маєте зосередитись на процесах, які відбуваються під час розробки. Після їх перевірки, ви зможете визначити, які з них підтримати з інструментами DevOps. Не всі процеси можна або треба автоматизувати.
Ще одна важлива очевидна річ: ви — унікальні. Постачальники інструментів DevOps часто захоплюють вас успішними прикладами, але їх не завжди можна так само ефективно застосувати для вашого продукту. Це потрібно враховувати.
Передивіться та зверніть увагу на специфіку програм, якими ви користуєтеся, сховищ даних та процесів розробки. З часом ви прийдете до процесів, які включатимуть проєктування, розробку, тестування, розгортання, керування конфігурацією тощо.
Автоматизуємо найбільші проблеми
«Добре, з чого почати?» Коли мова заходить про таку жваву екосистему, як DevOps, легко розгубитися, чим зайнятись в першу чергу.
Підказка: щоб правильно розставити пріоритети — поверніться на етап планування та визначте моменти, які займають найбільше часу вашої команди. Потім знайдіть спосіб їх автоматизувати.
Якщо команда витрачає надто багато часу на ручне тестування, автоматизуйте цей аспект.
Найбільше часу займає створення та налаштування робочих середовищ? Знайдіть інструмент, що допоможе з цим.
Якщо забагато процесів залежить від кастомних сценаріїв та жорстко закодованих змінних, перейдіть на сценарії ініціалізації, параметри інфраструктури як коду та динамічної вставки змінних.
Підійдіть до цього серйозно, щоб не зламати процеси.
Використовуємо стандарти
Не треба вигадувати велосипед, адже багато компонентів DevOps мають добре встановлені стандарти. Дотримуйтесь цих практик, щоб ефективно імплементувати процеси.
Впровадження стандартів також дозволяє наймати досвідчений персонал, який одразу може займатися розв’язанням складних проблем. Їм не доведеться гаяти час на те, щоб розібратися зі специфічними інструментами, що ви використовуєте.
Стандарти також дають гнучкість в процесі збирання ПЗ. Ви можете перемикатися між постачальниками або інструментами, які використовують однакові стандарти, якщо вони пропонують вам кращі функції.
На чому будувати автоматизацію
Щойно ви визначили найбільші проблеми, все одно можуть виникнути труднощі з вирішенням, з чого почати автоматизацію. Ось фундамент, який ви можете закласти.
- Контроль версій
Так ви зможете відстежувати зміни, відкочувати їх і запускати інші процеси автоматизації на основі гілок або різних версій коду. Якщо зміна викликає помилку, скасування зміни в контролі версій може запустити всі процеси, необхідні для тестування та відкоту змін до всіх середовищ.
- CI/CD
Безперервні інтеграція, доставлення та розгортання — це набір інструментів та послуг, які допоможуть автоматизувати важливі завдання. Наприклад, тестування, створення та розгортання коду в середовищах. CI/CD з’єднує багато інших компонентів DevOps.
Далі відштовхуємось від цього фундаменту:
- Тестування
Тестування вручну забирає дуже багато часу, тож його варто якісно та надійно автоматизувати.
Якщо довіряєте своїм тестам, то позбавляєтесь головної перешкоди на шляху автоматизації DevOps. Так ви можете довіряти змінам коду, які проводите через інші процеси.
Тестування може включати модульні, інтеграційні тести, тести навантажень та інші. Існує багато інструментів і фреймворків, які допоможуть створити те, що вам потрібно.
- Автоматизація інфраструктури
Автоматизуйте створення інфраструктури та середовищ. З цим допоможе інфраструктура як код та відповідні інструменти, що дозволяють визначати її декларативним способом. Ви зможете керувати нею в контролі версій та запускати автоматизовані процеси подібно до коду.
Автоматизація створення середовища та надання йому динамічності полегшує масштабування та ітерацію в інфраструктурі, оскільки вона стає ще одним ресурсом, який можна створювати, видаляти та додавати.
Також не залишайте без уваги допоміжні сервіси: постійні сховища даних і DNS-сервери.
- Логування та моніторинг
Щоб добре розуміти ефективність вашої програми, необхідні журналювання та моніторинг. Програмні продукти можуть генерувати багато даних, а обробляти їх вручну займає багато часу та може викликати помилки. Такі інструменти допоможуть вам зберігати, агрегувати, аналізувати та отримувати сповіщення про продуктивність ваших програм.
Автоматизація журналювання та моніторингу допомагає закрити цикл DevOps, оскільки ви можете бачити наслідки змін коду та відстежувати їх до розгортання.
Контролюємо та повторюємо
Щойно ви визначили правильні процеси та автоматизували їх, ваш шлях DevOps продовжується. Ви маєте контролювати, щоб все відбувалося належним чином, та періодично переглядати процеси, щоб їх покращувати.
Якщо щось працює неефективно, подумайте, як це виправити. Якщо все працює налагоджено, потіштеся результатами, адже ви — молодець.
Продовжуйте шукати процеси, які теж можна автоматизувати, щоб полегшити та покращити розробку програмних продуктів.
А щоб знати, як це робити правильно — реєструйтесь на наш курс «Адміністрування та автоматизація за допомогою Ansible». Це програма, з якою ви зможете спростити доставлення, настройку та розгортання застосунків. Після курсу вмітимете працювати з ролями й плейбуками так, щоб технології працювали за вас 😉