DevOps інженер: хто це такий і його обов’язки

Хто такий DevOps engineer і чому його не можна замінити системним адміністратором?
Поява нових професій нікого не дивує, але всіх турбує. Все тому що фахівцям необхідно бути вкрай уважними до змін, щоб залишатися в професійній формі і не втрачати своїх позицій на ринку праці. А для цього вкрай важливо стежити за гібридними професіями (перейди за посиланням та зрозумієш чому саме), одну з яких обговоримо детальніше. Хочемо поговорити про те, хто такий DevOps інженер, яка його роль в сфері IT, про його основні обов’язки і важливі скіли в роботі.
Почнемо, мабуть, з того, що існує методологія DevOps (Development Operations). Вона передбачає ефективну організацію роботи команди зі створення/оновлення програмних продуктів і послуг. Це впровадження організаційних змін, які призначені для створення динаміки в роботі на кожному етапі. Методологія заснована на ідеї об’єднання команди розробки, тестування та експлуатації ПЗ для ефективного і швидко створенню будь-якого програмного забезпечення.
А тепер перейдемо до самого інженеру DevOps і його характеристиці.
Хто такий DevOps інженер
Не дуже складно здогадатися, що цей фахівець повинен володіти знаннями і практичними навичками відразу з декількох сфер. Але давайте по порядку і розпочнемо з визначення позиції DevOps інженера.
DevOps engineer — фахівець, який займається всіма циклами і процесами розробки. У його область впливу входить розробка, тестування, перед і пост підтримка релізу продукту. Він здатний розуміти архітектуру продукту, оцінювати ризики безпеки і автоматизувати процеси розробки, створення і випуску ПО. Його робота спрямована на створення взаємодії розробників з іншими IT-фахівцями. Наприклад, якщо програмісти і тестувальники відповідають за Development, то адміністратори відповідальні за Operations. Таким чином, DevOps фахівець, який залучений не тільки в безпосередню розробку, але також в процес деплоя і експлуатації системи.
Обов’язки DevOps інженера
Хтось каже, що DevOps фахівці це ті ж системні адміністратори (може навіть переходять із розробників). На практиці так і є, але для бізнесу цього мало. Тут треба бути не просто сісадміном, а важливо бути ланкою між Development і Operations, володіти глибоким розумінням всіх процесів для їх автоматизації. Але найкраще функціонал цього фахівця може охопити лише опис тих посад, які входять у позицію цього розробника.
Посада DevOps engineer поєднує у собі:
Senior System Administrator (для розуміння середовища, в якій працюватимуть ПЗ);
Networking — CCNA (для виявлення помилок, які можуть бути обумовлені особливостями роботи мережі);
Junior Developer (чим більше DevOps знає про код і інші підводні камені розробки, тим краще вийде зібрати і викотити додаток);
Junior database administrator (для роботи з базою даних і розуміння принципів налаштування, управління, ефективного використання, оптимізації, забезпечення безпеки, міграції даних);
SecOps (для орієнтування і спеціалізації на інформаційну безпеку).
Hard skills для DevOps
Для Junior DevOps:
- знання основ адміністрування операційних систем Linux, git;
- написання скриптів для автоматизації на Bash;
- пошук помилок у програмі і їх усунення (дебажити);
- навички контейнеризації та оркестрації.
Для Middle DevOps:
- вміння адмініструвати БД (PostgreSQL)
- знання мов програмування: Python, Ruby, Go;
- робота з DSL (наприклад, Puppet);
- навички по ELK stack, TICK stack на високому рівні;
- написання і оновлення ролей для автоматичного розгортання;
- заповнювати моніторинг під конкретні потреби.
Для Senior DevOps:
- глибоке володіння вищепереліченими навичками;
- написання eBPF;
- впровадження Test-driven-development з хорошим покриттям тестами Rspec / Serverspec;
- знання і володіння SRЕ-метриками.
Soft skills для DevOps
- комунікабельність і лідерські здібності;
- клієнтоорієнтованість;
- емоційний інтелект (EQ);
- навички time management;
- стресостійкість;
- ініціативність і залученість;
- fluent english;
- презентаційні навички.
Всі ці навички DevOps необхідні для досягнення таких цілей, як: мінімізація витраченого часу на розробку ПЗ для своєчасного виходу на ринок; зменшення ризиків відмов нових релізів; своєчасне виконання виправлень; координація роботи та автоматизація процесів розробки і вихід ПЗ.