У цій статті ми постаралися розповісти про суть роботи DevOps Engineer. Матеріал написаний для новачків та тих, хто цікавиться професією, напрямком.
В Інтернеті багато думок і вони відрізняються. Розглянемо тему під різними кутами.
Хто такий DevOps: думки розходяться
У світі програмістів є дві думки, що таке DevOps. І кожна має своїх шанувальників та ворогів: «Ви неправильно тлумачите термін!» Про все по порядку.
DevOps як практика, філософія. 10-15 років тому розробники відповідали за програму, а адміністратори — що ця програма потрапить до користувача через сервер.
Раніше йшло багато часу на те, щоб виправити помилку. Системний адміністратор передавав повідомлення розробнику і розповідав про проблему. А програміст втрачав час, щоб випустити оновлення і виправити код.
Загляньте в смартфон і подивіться, скільки програм отримали оновлення сьогодні — не 1 і не 2. Ситуація змінилася — компанії працюють над серією понад 10 програм щодня. Потрібно випускати оновлення, перевіряти на помилки та баги.
Щоб конкурувати зараз, потрібно працювати швидше і якісніше за інших. А як цього досягти, якщо розробники лише пишуть код, а системні адміністратори встановлюють на сервер і стежать за роботою програми? Як спілкуватися швидше?
Для цього в тусовці IT-компанії вигадали принцип DevOps:
За build відповідає девелопер (Dev), а за test та release сисадмін, оптимізатор (Ops)
Це спосіб спільної роботи девелопера й адміністратора (оптимізатора продукту). Якщо сисадміну потрібне оновлення програми, то він робить запит розробнику в командному чаті. А написати скрипт для сервера сисадмін може самостійно.
DevOps користуються компанії, на зразок Amazon, Microsoft, Etsy, Ebay. Для них важливо усунути більше багів та випустити оновлень, щоби змагатися з конкурентами за увагу споживача.
Якщо говорити простіше, то DevOps – нові правила чи способи спілкування розробника та адміністраторів у компанії.
DevOps як професія. Так називають верхівку айсберга у світі системних адміністраторів. Девопс робить так, щоб сисадміни та розробники працювали над продуктом швидше. Подивіться на спрощені приклади:
DevOps до колег: «Спілкуємось у Microsoft Teams. Завдання та процес виконання прошу зареєструвати тут. Виникнуть питання – пишіть мені».
Розробник пересилає код та документацію сисадміну. Той переносить код на сервер. На етапі встановлення адміністратор може знайти помилку. Він не пише розробникам, а вирішує проблему самостійно як DevOps.
Не всі інструменти обов'язково знати у DevOps. Наприклад, в одній компанії працюють у Slack. А в іншій з Microsoft Teams.
DevOps — це ланка між командою розробників і командою експлуатації — сисадмінами. Розбирає конфлікти в коді, підтягує оновлення для системних адміністраторів, розставляє завдання між відділами. Те, як він це зробить — залежить від обраних інструментів.
Навіщо девопсу програмування
Якщо розглядати DevOps як набір практик, то й звичного поняття системного адміністратора не зустрінеш. Розглянемо на двох прикладах:
Один сісадмін отримав код від розробника. Його завдання – перенести код на готовий сервер. У цьому його робочі завдання закінчуються. Додаткові програми або оновлення звертаються до розробника. Мине багато часу, девелопер напише скрипт, і сісадмін встановить програму на сервер. Це довго.
Інший сисадмін бачить, що без скрипта не може встановити оновлення програми. Замість листа розробнику він напише скрипт сам: сісадмін знає базу програмування, працює з Python і впорається із завданням. Розробник працює над покращенням програми, а сисадмін йому не заважає. Так швидше.
У компаніях DevOps займаються завданнями, які не обходяться без навичок програмування. Ось неповний та спрощений список: встановлюють сервери з нуля, готують операційну систему під програми, підключають у внутрішні мережі, моніторять та роблять резервні копії.
Без навичок програмування це все одно, що шукати голку в стозі сіна: людина не знає розміру голки і в якому куточку її шукати. А з базою програмування DevOps розуміє, із чим працює девелопер.
Приклад тем для Junior DevOps.
Якщо DevOps не знає програмування, він — системний адміністратор. Він не читає код від розробників і не пише програми для серверів.
Де В DevOps знадобиться мова Python
З основами програмування знайомимо студентів на курсі Комп'ютерної Академії IT STEP «DevOps-інженер». Розповідаємо про переваги Python, що потрібно знати та вміти системному адміністратору та як закривати однією мовою програмування 99% завдань з автоматизації.
Нижче розглянемо приклади, де DevOps-інженер використовує Python у роботі.
Інструмент для аналізу «холостих ресурсів». Компанії мобільної розробки, мобільні оператори користуються хмарними сховищами. Звичний приклад - Google Drive, тільки в тисячі разів більше. На підтримку хмари компанія витрачає мільйони доларів на рік. На Python можна написати бота, який знаходить невикористані місця у хмарі та відключає їх. У середньому через бота можна прибрати до 40-50% непрацюючих ресурсів і заощадити стільки ж бюджету.
Скрипт, який знаходить небезпеку у програмі. Сервер – це гора інформації. І на ручну її не переробити. Можна написати скрипт, з'єднати програми моніторингу помилок та систему завдань, на зразок Slack або Trello. Програма знаходить баг у коді, обробляє та автоматично створює картку завдання для сисадміна і розробників.
Python lint-тестів для Ansible та Kubernetes. Щоб програму побачили люди, її потрібно протестувати та встановити на сервер. Тестують код або руками та очима (вставляти в програму, перевіряти помилки), або через готове рішення — написати на Python автоматичний тестер. Це корисно, коли сисадміни випускають 10 програм та 100 оновлень на день. Перевірити вручну неможливо.
Існують прості приклади: для онлайн-банкінгу пишуть спеціальний скрипт. Щоб не перевантажувати сервер, онлайн-програму розбивають на частини та встановлюють на сотні серверів. Якщо в сервісі трапиться збій, сисадміни знайдуть помилку в конкретному сервері, де менше коду. Це швидше, ніж шукати рядок коду на базі на 10 000 одного сервера.
Завдання з програмуванням у DevOps маса. Від цього й різниця у зарплатах: сисадміни не програмують, виконують менше роботи. За даними Work.ua, сисадмін в Україні отримує до 21 000 грн, а Девопс — від 70 000 грн.
Опорні тези
Щодо поняття DevOps існує 2 точки зору: перша — це набір практик, як швидко спілкуватися розробникам та системним адміністраторам. Друга – це людина, яка налагоджує безперервну роботу між відділами. Наприклад: продукт-сервер-оновлення-сервер-оновлення...
DevOps потрібно програмування, щоб не заважати розробнику: самому тестувати продукт, писати програми для серверів. Це не завдання девелоперів, але їх потрібно виконувати.
Python достатньо для 99% завдань системного адміністратора.