Наскільки DevOps-інженеру потрібно знати програмування?
Давайте підемо незвичайним шляхом і розкриємо карти з самого початку. Щоб бути хорошим DevOps-інженером, вміти писати код необов’язково. Але це вміння не буде зайвим: воно відкриє нові можливості, допоможе краще розуміти розробників та говорити з ними однією мовою.
Як обійтися без коду?
Почнемо з визначення, що таке DevOps. На цю тему написано багато книг і публікацій, і всі вони сходяться з цим:
DevOps — набір практик, інструментів і концепцій, ціль яких розв’язати проблему ізольованості процесів та швидше доставляти цінність продукту протягом всього життєвого циклу програми.
Це визначення не говорить про конкретні дії DevOps-інженера, через що виникає багато запитань. Якщо життєвий цикл дуже об’ємний і складний, з ним все одно належить працювати повністю або тільки з якимось етапом? Що таке цінність та як її визначити? А може, ця цінність суб’єктивна? Яка оптимальна швидкість доставки?
Через цю невизначеність вміти писати код необов’язково. Інженери та роботодавці інтерпретують цей момент по-своєму.
Загальний опис обов’язків DevOps:
- робота з провайдером публічної хмари
- впровадження процесів CI/CD
- дослідження проблем у розміщених середовищах
- робота над інфраструктурою, часто застарілою
- забезпечення оптимального використання хмарних ресурсів
- реалізація моніторингу та оповіщень для розміщеної інфраструктури
- контроль витрат на інфраструктуру
Усі ці пункти можна виконувати без знання програмування. З хмарним провайдером можна працювати через інтерфейс користувача. Процеси CI/CD можна реалізувати за допомогою візуальних редакторів або так званих What you see is what you get. Із застарілою інфраструктурою — голими руками, бо тут більше нічого не допоможе. А за витратами на інфраструктуру можна стежити у хмарних провайдерах через панель керування витратами. Це все експортується в csv файл, який можна форматувати в лист Excel і зробити діаграми.
Що дасть знання коду?
Відразу уточнимо, що говорячи про інженера DevOps, йдеться не тільки про написання коду. Це ще й про глибину його розуміння, яка допоможе розробити життєвий цикл доставлення. Чим глибше ваші знання з програмування, тим ефективнішим DevOps-інженером ви стаєте.
Скрипти розвитку подій:
I рівень: можете написати кілька скриптів
На цьому рівні знань ви вмієте писати код типу “запустіть це, і виконаються x, y та z”. Це не найгарніший код, може навіть не дуже ефективний, але свою функцію він виконує. Швидше за все, ви пишете лише однією мовою, залежно від типу середовища, в якому ваші скрипти працюють. Наприклад, Bash або PowerShell.
Нехай ваші знання поки дуже поверхневі, вони все одно важливі. Ви можете автоматизувати процес, щоб не робити вручну те, про що ми писали вище. Це ще й питання зручності: швидше за все, вам буде зручніше працювати з рішеннями, орієнтованими на код. Наприклад, з конвеєрами CI/CD у вигляді коду. Ви зможете виконувати свою роботу зі значно більшою повторюваністю.
II рівень: є досвід розробки
Ваша ефективність та якість коду стали вищими. Написана вами автоматизація пайплайну CD більш надійна і працює так, як очікувалося. Ви краще знаєте стеки програм, тому можете самі усувати проблеми або повідомляти про архітектурні рішення. Ще ви можете впроваджувати розробку у свої повсякденні робочі процеси.
Але найкрутіше на цьому рівні те, що ви почнете розуміти болі команди розробників, з якою працюєте. Або визначати області для поліпшення компонентів життєвого циклу доставлення додатків.
III рівень: отримуєте кайф від розробки
Ви цікавитеся програмуванням, займаєтеся розробкою не тільки для роботи, але і для особистих проєктів. Ви можете бути не найкращим розробником у світі, але хочете брати участь у цьому процесі. Усі функції DevOps, вказані на початку, ви можете виконувати повністю за допомогою коду.
Ви розумітимете не тільки інфраструктуру, але й саму програму, її складові та хоча б одну з мов, якою вона розробляється. У такому разі ви зможете говорити з розробниками однією мовою. Ви будете пояснювати все на зрозумілих прикладах, доносити вимоги до архітектури та моніторингу або самі діагностуватимете проблему. Це допоможе підвищити взаємодію розробників та адміністраторів інфраструктур та приведе до кращих результатів. Адже всі розумітимуть який процес і для чого потрібний.
Підсумок: You Win!
Вам не потрібні знання програмування, щоб потрапити у DevOps. Але від них ви можете тільки виграти: щоб розвиватися в ролі та ставати ефективнішим, потрібно вчитися розуміти та писати код. Чим краще ваші навички програмування, тим ширші можливості. Для DevOps-інженера зі знаннями як з технічних питань, так і з питань процесів, немає нічого неможливого.
Розвивайтеся, дізнавайтесь нове та робіть процес доставлення додатків ще краще!