Кар'єра в IT: посада DevOps engineer

Представляємо нову статтю з циклу «Кар'єра в IT» . Вона присвячена посади DevOps engineer — такі фахівці працюють на стику областей розробки і системного адміністрування, забезпечуючи ефективність процесу постачання.

DevOps (development + operations) — це зародилася в 2009 році методологія, націлена на взаємодію програмістів і системних адміністраторів для збільшення частоти випуску релізів. Відповідно, DevOps engineer — фахівець, який працює на стику цих двох посад і займається автоматизацією життєвого циклу програми (включаючи проектування, розробку, тестування, розгортання, підтримку та моніторинг).

За даними ДОУ , середньому українському DevOps інженеру 28 років, він має зарплату $1200-2700 і досвід роботи 4 роки.

Завдання та обов'язки

Головна завданням DevOps інженера — максимально збільшити передбачуваність, ефективність і безпеку розробки ПО.

Якщо розглядати повний життєвий цикл ПЗ, то на етапі оцінки DevOps фахівці отримують первинну інформацію про необхідність нового кодування та внесення змін в ІТ-інфраструктуру. На етапі проектування — визначають вимоги до інфраструктури. На етапі розробки і тестування — займаються розгортанням продукту, а також підтримкою засобів для розробки, інтеграційних та навантажувальних тестуванням ПЗ для перевірки готовності операційного середовища.

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

«Класичні программеры поняття не мають про те, як їх додаток буде розгортатися в продакшені, інтегруватися з десятком інших додатків. Тому потрібні люди, які будуть розбиратися в коді на достатньому рівні, щоб вичищати за розробниками сміття з конфігів, дописувати милиці за необхідності, пов'язувати сервіси воєдино, деплоить це добро на тестові стенди і автоматизувати процеси тестування, релізи та оновлення».

В обов'язки DevOps engineer входить:
— Розгортання поставленого розробниками релізу у виробництві;
— Інтеграція і поглиблення процесів розробки в поставку;
— Стандартизація оточення розробки;
— Налагодження інфраструктури на особливості розроблюваного ПЗ;
— Підготовка продуктивної середовища до частим внесенням змін;
— Виявлення і виправлення проблем;
— Автоматизація процесів.

«Автоматизація всіляка, моніторингові системи, синхронізація даних та інше. Наприклад, така задача — практично по одному кліку підняти зменшену копію продакшн інфраструктури, щоб одна з команд могла розгорнути свій бранч для тестування».

«Автоматизація різних завдань, пов'язаних з деплоями софта, який розробляється, деплоями системного софта, конфігуруванням. Забезпечення моніторингу, реакція на різні позаштатні ситуації. Поліпшення платформ в плані зниження ціни за інфраструктуру, в плані продуктивності і простоти. Надання різних доступів для розробників (наприклад, в репозиторії, VPN). Дизайн систем, їх архітектура».

«На мій погляд, основними завданнями DevOps є автоматизація процесів розробки (викотити гілку з git для тестування, викотити певну версію додатка production, автоматизація управління інфраструктурою), моніторинг стану програми, по можливості автоматичне відновлення програми та відповідні оповіщення членам команди».

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

«Я поступово „переїхав“ у DevOps з Dev відділу. В роботі доводиться активно контактувати з Dev, Ops і QA відділами, c іншими відділами рідше. Якщо описати посаду DevOps однією фразою, я б сказав так — створювати інструментарій для Dev, Ops, QA etc відділів, щоб їм було легше і зручніше працювати».

«Створюємо нові віртуальні машини, пишемо сервіси для їх додаткового моніторингу і так далі».

«Я вчора підняв teamcity/gradle+gitlab і налаштував автоматичну викладку сайту за коммиту в ріпу на сервер. От чимось таким девопсы і займаються».

Переваги і недоліки

Головне достоїнство професії DevOps engineer — зростання інтересу компаній до концепції DevOps. За даними EMA, близько 30% компаній вже реалізували або планують реалізувати DevOps найближчим часом. Тобто попит є — без роботи хороший фахівець не залишиться.

Самих DevOps фахівців привертає те, що в роботі вони мають 100% завантаження, на відміну від професії системного адміністратора.

«Подобається фактор несподіванки — це робить роботу досить цікавою та не перетворює в рутину».

Інший плюс — широка спеціалізація:

«На мій погляд, девелопмент програє оперейшеналу з простих причин. Девелопер має в руках інструмент, яким він робить свою роботу — синтаксис мови і якісь там мовні примочки і особливості. Оперейшенал інженер знає купу всього, на чому будується сучасні інформаційні системи, як вони працюють, і вивчення якогось Ruby мало чим буде відрізнятися від вивчення системи моніторингу Ganglia».

Деяких приваблює те, що результат роботи можна «помацати руками»:

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

Недоліки професії, схоже, не відрізняються від таких у системних адміністраторів:

«Нічні несподіванки».

Як стати і куди рухатися далі

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

«В голові треба мати бібліотеку за всіма доступними технологіями, починаючи від методів кодування сигналів до останнього модного продукту Open Stack».

Необхідні якості:
— Аналітичний склад розуму;
— Стресостійкість;
— Вміння не здаватися навіть у безвихідних ситуаціях.

«Важливо розуміти, що розробники не погані і роблять такий продукт, а просто поставити себе на їх місце і допомогти».

Можливі кар'єрні шляхи DevOps інженера:
— Рости як DevOps спеціаліст, заглиблюватися в спеціалізацію і освоювати суміжні технології;
— Перекваліфікуватися у розробники, якщо починали як системний адміністратор;
— Перекваліфікуватися в сисадміни, якщо починали як розробник (якщо цікаво більше працювати з інфраструктурою, ніж з розробкою);
— Перекваліфікуватися в інженери з IT-безпеки;
— Також відкриті шляхи в системні архітектори , тестувальники (у тому числі автоматизаторы ), проектні менеджери .

«Насправді, краще просто бути хорошим фахівцем у _ЛЮБОЙ_ своїй області, яка тобі подобається, і жити повним життям. І неважливо, хто це — DevOp або хімік нафти».


P. S. Дякую за допомогу в написанні статті Олексію Асютину і ще 5 українських DevOps інженерам, які поділилися з DOU таїнствами своєї професії. Наведені в статті цитати взяті з їх розповідей.


Інші статті циклу:
Кар'єра в IT: посада Team Lead
Кар'єра в IT: посада Software Architect
Кар'єра в IT: посада Project Manager
Кар'єра в IT: посада CTO
Кар'єра в IT: посада QA engineer
Кар'єра в IT: посада QA Automation engineer
Кар'єра в IT: посада Бізнес-аналітик
Кар'єра в IT: посада системний адміністратор
Кар'єра в IT: посада Data Scientist/Machine Learning Engineer
Кар'єра в IT: посада Technical Writer
Кар'єра в IT: посада Delivery Manager
Кар'єра в IT: посада Software Product Manager

Опубліковано: 31/05/16 @ 07:00
Розділ Різне

Рекомендуємо:

4 червня, Київ — Інтенсивний курс з основ програмування на мові Java
Финстрип за лютий 2016
9 червня, Київ — Безкоштовний workshop/інтенсив «Швидкий старт ІТ кар'єри для тестувальників»
Бути в тренді ефективного просування просто - SMM.ua
Ucoz відгуки