Хто такий DevOps Engineer: обов’язки, завдання та необхідні навички | ITExpert

Кар’єра DevOps Engineer: що потрібно знати, щоб заробляти $5500

ITExpert team 18.05.2023
ITExpert Блог Кар'єра
Кар’єра DevOps Engineer: що потрібно знати, щоб заробляти $5500

Згідно з дослідженням порталу DOU, зарплатня DevOps-інженерів здебільшого зростає швидше за доходи інших технічних фахівців. Крім того, Global Market Insights прогнозує зростання ринку DevOps з $7 млрд у 2021 році до $30 млрд 2028 року. 

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

Ми запитали DevOps Engineer з 15-річним досвідом Олексія Кудрю, що таке DevOps і чому ці практики змінюють світ розробки вже зараз. Також обговорили, чим займається девопс інженер і що потрібно знати, щоб ним стати. Бонусом додали корисні посилання на книги, канали та професійні спільноти в соцмережах.

Тривалий час працював з фізичним обладнанням та віртуалізацією у великому data center, починаючи від розпаковування обладнання та закінчуючи проєктуванням та наданням власних SaaS-рішень користувачам у private cloud. Веде Telegram-канал, де ділиться досвідом SysOps та публікує поради, як стати DevOps Engineer.

А CTO & co-founder ITExpert Микола Клєстов (6+ років досвіду в IT та організації рекрутинг-процесів) розповів, які вимоги перевіряють у фахівців із DevOps на співбесіді. Він працював із Depositphotos, Emerson, Ring та іншими компаніями, зокрема консультував і щодо пошуку DevOps-інженерів.

Хто такі DevOps (Девопс-інженери)

DevOps — це простими словами що за фахівець такий? Насправді DevOps Engineer — це як сисадмін і програміст в одній особі. Традиційний цикл розробки програмного забезпечення виглядає так:

Розробники невеликими порціями пишуть код -> Віддають його до відділу тестування -> Тестувальники пишуть тести та шукають помилки у коді -> Якщо знайшли — віддають програмістам на допрацювання -> Якщо помилок немає, код надсилають на складання, щоб включити його в нову версію програми -> Після додавання цього коду до нової версії код знову тестують: чи «дружить» новий код зі старим, чи немає конфліктів -> Якщо є, код віддається назад програмістам -> Якщо все гаразд, код подається на сайт.

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

Кожен із цих відділів має своє робоче оточення: вони стежать за своїми завданнями, інструментами та технологіями. Через це те, що працює в одних, може не працювати в інших. На фініші всі витрачають час на синхронізацію вимог до коду, компонентів, фреймворків та бібліотек, а робота стоїть.

З DevOps-підходом до розробки процеси відбуваються інакше:

  • якщо щось можна автоматизувати — автоматизуємо;
  • кожен відділ використовує той самий софт і налаштування;
  • фінальний код повинен якнайшвидше доходити до того, хто користується цим софтом.

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

Обов’язки девопс-інженера варіюються залежно від проєкту, але зазвичай це створення та налаштування інфраструктури: автоматизація та покращення процесів розробки й релізів, робота з розробниками, щоб упевнитися, що код відповідає необхідним характеристикам, а також забезпечення безпеки та захисту інфраструктури.

👉 Головні задачі DevOps-інженера — зробити так, щоб автоматизації було якнайбільше та щоб вона прискорювала розробку та операційні процеси у команді.

DevOps’и мають різні спеціалізації:

  • Класичний DevOps фахівець повинен вміти працювати з Linux / Windows / Mac OS системами, знати CI/CD процеси, розуміти базові принципи системного адміністрування тощо.
  • TechOps тестує й моніторить уже готову систему — працює з інцидентами та техпідтримкою. Він — експерт в готових сервісах, але не має кваліфікації у їхньому створенні.
  • CloudOps застосовує практики та процеси до хмарної архітектури, забезпечує оптимальне використання бюджету на публічні хмари.
  • DevSecOps зосереджений на оцінюванні ризиків та інтеграції технологій безпеки даних. Його завдання — моніторинг та покращення гнучкості системи.
Олексій Кудря фото
Олексій Кудря
DevOps Engineer

«‎Для запуску нового продукту й створення застосунку потрібні щонайменше дві команди: розробники (developers, Devs), які пишуть програми, та системні адміністратори (operations, Ops), котрі займаються налаштуванням та обслуговуванням серверного обладнання.

Команда розробників надає програмне забезпечення команді адміністраторів, щоб ті, своєю чергою, запустили його в потрібний час на обладнанні компанії. Тобто адміністратори у прямому сенсі виконують запуск вручну, починаючи від підключення та налаштування та закінчуючи інсталюванням залежностей ПЗ через введення команд у консолі.

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

Ви могли почути типовий діалог між розробником та адміном: “У мене на лептопі все працює!”. Для розв’язання спільного питання, а це в основному розробка ПЗ, не повинно бути меж між Dev та Ops. Девопс-інженер — це не назва посади чи представника певної технології. DevOps — радше набір процесів, ідей та методик.

Як результат, компанія із фахівцем з DevOps отримує велику кількість плюсів: замість злиття різних гілок використовується інтеграція, код знаходиться в стані швидкого розгортання, розробники мають можливість оновлювати код десятки разів на день, а не чекати годинами чи навіть днями.

Замість регулярних простоїв та перебоїв у роботі, отримуємо системи з автоматичним відновленням, моніторинг з оповіщеннями та відсутність будь-якої ручної роботи. Компанії, яким вдалося опанувати DevOps-практики, показують дивовижні результати: значно підвищуються випуски нових функцій, знижується кількість дефектів та частота збоїв».

DevOps: навички (hard & soft skills), потрібні спеціалісту

Хочете стати DevOps? Що потрібно знати фахівцю на старті? Усе залежить від технологій у проєкті, проте вхід у професію загалом буде значно легшим, якщо ви з порога володієте знаннями та навичками щодо роботи з:

  • хмарними платформами (наприклад, AWS, Google Cloud чи Microsoft Azure);
  • обчислювальними мережами і протоколами: основи топології сіток, основні протоколи стеку TCP/IP (IP, TCP, UDP, HTTP/HTTPs);
  • концепціями API (REST, gRPC, GraphQL);
  • IAAC-інструментами (Terraform/Terragrunt);
  • контейнеризацією (Docker, Kubernetes);
  • інструментами для безперервної інтеграції (CI) й доставляння (CD) (Jenkins, GitlabCI, CircleCI, GitHub Actions);
  • системами контролю версій (git тощо);
  • інструментами для конфігураційного управління (Ansible, Puppet);
  • мовами програмування (Python, JavaScript/TypeScript чи Go);
  • ОС та інструменти по роботі з ними.

Серед soft skills — комунікабельність, самомотивація, сильні аналітичні здібності, вміння швидко вчитися та розв’язувати проблеми — у протилежному випадку кар’єрний роадмап не працює.

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

Як стати девопс інженером?

Олексій Кудря фото
Олексій Кудря
DevOps Engineer

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

Загалом ще до початку пандемії ми обговорювали з колегами питання входу в професію девопса. Дехто дотримувався думки, що DevOps Junior-рівня не існує, бо дуже великий поріг входження. Тобто DevOps ставали або розробники, або системні адміністратори з великим досвідом й одразу рівня Senior.

Проте ковід змінив правила гри. Попит на DevOps-інженерів був настільки великим, що можна було зустріти інтерна фахівця, котрого закріпляли до проєкту, де він мав ментора, мав змогу приєднатись до команди та побачити на власні очі все, що там відбувається. Це дозволяє доволі швидко отримати базові знання.

Проте перш ніж шукати ментора або компанію, потрібно опанувати навички програмування. Наприклад, я на різних проєктах використовував Python, Go та JavaScript. Також важливо ознайомитися з системами контролю версій, хмарними технологіями, системами автоматизації процесів розробки та розгортанням застосунків тощо.

І потрібно цікавитись DevOps-культурою загалом, оскільки це не лише технічні навички, але й підхід до розробки програмного забезпечення та забезпечення співпраці між розробниками та адміністраторами».

Зв’яжіться з нами вже зараз
Замовити консультацію

Junior -> Middle -> Senior DevOps: опис відмінностей у грейдах DevOps Engineer

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

Junior DevOps Engineer

Кандидат повинен знати базові речі. На інтерв’ю оцінюють логічне мислення, готовність до навчання. Цінується вміння самостійно знаходити інформацію та ставити запитання досвідченішим колегам.

DevOps Engineer — обов’язки та базові вимоги для джуна:

  • Знання ОС: Linux, у західних компаніях часто Windows.
  • Базові знання інфраструктури та мереж, розробки програмного забезпечення, модель OSI, CI/CD.
  • Знання Kubernetes.
  • Англійська мова на рівні читання технічної документації. 
  • Вміння засвоювати великі обсяги інформації та навчатися.

Ці навички можна опанувати на DevOps курсі — такі проводять великі IT-компанії (наприклад, SoftServe) або онлайн-школи.

Middle DevOps Engineer

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

Базові вимоги:

  • Базове адміністрування Linux.
  • Docker та Kubernetes.
  • Траблшутинг.
  • Розуміння та застосування різних практик, досвід роботи з метриками.
  • Досвід написання плейбуків Ansible, завдання Jenkins.
  • Робота з моніторингом.

Senior DevOps Engineer

Senior вміє розв’язувати абстрактно сформульовані завдання, ухвалює рішення та бере на себе відповідальність за результат. Знає, коли потрібно під’єднати до завдання колег, може координувати їхню роботу. Має глибші знання, ніж Middle, а також розуміє верхньорівневі процеси з позиції бізнесу.

Базові вимоги:

  • Обов’язково знати конкретний напрямок. Якщо CI/CD — знання hands on, з установкою з нуля, налаштуванням, напрямок проєкту. Якщо стек Microsoft — Visual Studio, cmake для С++, інсталятори.
  • Базове розуміння бюджетування.
  • Великий багаж інструментарію: віртуалізація, контейнеризація, агрегація логів, метрик.
  • Розуміння верхньорівневого процесу організації та майбутніх кроків щодо розвитку практик DevOps у компанії, впровадження нових практик та системний підхід.

Team Lead DevOps Engineer

Team Lead — це «конектор» DevOps з бізнесом. На першому місці в нього — управлінські навички. Крім ймовірного досвіду в AWS, Google Cloud Platform, Terraform і Kubernetes, тимлід повинен використовувати підходи проєктного менеджменту (наприклад, Agile), вміти оцінювати ефективність роботи команди й працювати з метриками (MTTD, MTTR та іншими). Не менш важливе вміння перекласти ІТ-мову на бізнесову (і навпаки) й навички давати ефективний зворотний зв’язок.

А що далі? Куди може розвиватися DevOps Engineer

Зазвичай подальший кар’єрний розвиток девопса виглядає так: 

Senior DevOps -> DevOps Team Lead -> Director of Engineering

або: 

Senior DevOps -> Solutions Architect -> VP of Engineering -> CTO.

Олексій Кудря фото
Олексій Кудря
DevOps Engineer

«Шлях кар’єрного зростання може бути такий:

  • Senior DevOps: це перший етап професійного зростання для DevOps-інженерів, яка передбачає складніші завдання, ніж на початковому етапі.
  • Team Lead: керує командою DevOps-інженерів, повинен мати глибокі знання в області розробки програмного забезпечення, а також вміти керувати процесами розробки, тестування та впровадження продукту. Головна задача фахівця — забезпечити ефективну та продуктивну роботу команди DevOps-інженерів.
  • Manager/Head of DevOps: відповідальний за управління командами розробників, але його головним завданням є забезпечення зв’язку між різними командами, створення та реалізація стратегій для покращення процесів розробки й впровадження продукту.
  • DevOps Architect: роль вимагає розуміння принципів та практик DevOps та вміння проєктувати й реалізовувати інфраструктуру, яка підтримує процеси розробки та постачання.
  • Технічний директор (CTO): відповідальність за технічний розвиток компанії та ухвалення стратегічних рішень, що стосуються технологій.

Також в IT DevOps Engineer може розвиватися в більш спеціалізованих напрямках, таких як: DevOps-інженер з безпеки, моніторингу, DevOps-інженер зі знанням операційних систем, DevOps з аналітики даних тощо».

DevOps: зарплатня фахівця в IT

Середня зарплатня DevOps досвідченого рівня (Middle+) становить $5000. Загалом «температуру по зарплатах» можна побачити на DOU.

Спрощено медіанний дохід залежно від рівня виглядає так: 

  • Trainee (до року досвіду): $1100.
  • Junior (1–3 роки досвіду): $2400.
  • Middle (4–6 роки досвіду): $5000.
  • Senior: $5000+.

При переманюванні фахівця можуть пропонувати й більше, ніж у середньому для DevOps певного рівня.

Як пройти інтерв’ю на Middle+ DevOps Engineer: про що запитують та на що звертають увагу

Відповідає CTO & co-founder ITExpert Микола Клєстов. Тож які вимоги перевіряють у фахівців на співбесіді:

Микола Клєстов фото
Микола Клєстов
CTO & co-founder ITExpert

«З найочевиднішого: запитання з CI/CD інструментів. Інформація про те, як по пушу в git розгорнути новий тестовий сервер та прогнати всі автотести має відскакувати від зубів. Для загального розвитку варто також ознайомитися з додатковою програмою, наприклад, GitLab, щоб розуміти відмінності.

Сініорних DevOps Engineer також запитують про:

  • Конфігурування: Ansible, для хмар ще й про Terraform або CloudFormation (для AWS-інфраструктури).
  • Скрипти: практично обов’язково YAML, а також, імовірно, про bash та основи Python.
  • Оркестрація в k8s. Сучасний Highload забезпечується хорошим DevOps з Kubernetes-кластером, а не знаннями бекенд-розробників. Це означає, що для  роботи з крутою зарплатнею потрібно опанувати не просто Docker’ом, а й повноцінною оркестрацією в k8s. При цьому графічних оболонок типу Rancher зазвичай недостатньо. Потрібно легко працювати з load-balancing інструментами, Ingress-контролерами та (бажано) з kubectl.

Крім того, кандидата можуть запитати про базу системного адміністрування (як про html запитують будь-якого веброзробника). Вам доведеться працювати щонайменше з моніторингом та системами логів, а також іноді й розгортати бази, конфігуруючи їх під різні середовища».

Більше про особливості проведення співбесід читайте в нашій статті «Чек-лист кандидата в IT».

Бонус: корисні ресурси для DevOps Engineers

  • Книга від Google про SRE: тут можна здобути знання про ОС, є інформація про release engineering, моніторинг-системи та service level agreement.
  • Книга UNIX and Linux System Administration Handbook, Evi Nemeth & Trent R. Hein: гайд із системного адміністрування. Автори книги — піонери в UNIX та AWS, викладачі топових університетів світу. Працювали в Internet Society, ООН та інших відомих організаціях.
  • Книга Continuous Delivery: Reliable Software Releases, Jez Humble & David Farley: про конвеєр розробки, безперервне доставлення, стратегії ролаута та інші базові поняття.
  • Книга Kubernetes Security, Liz Rice & Michael Hausenblas: про функції безпеки Kubernetes, зокрема про те, коли їх використовувати. 
  • Telegram-канал CatOps — апдейти нових версій інструментів, закордонні статті та авторські огляди.
  • Telegram-канал ДевОпс Інженер — топові технології та рішення, реальні архітектурні проблеми, контейнери, оркестратори, скейлінг і моніторинг.
  • Telegram-канал ITExpert Vacancies — кар’єрні поради та вакансії для DevOps Engineer і не тільки.

DevOps-інженери стають ще потрібнішими, ніж раніше. Кількість вакансій для DevOps на відомих сайтах пошуку роботи зросла на 75%, а згадки про навички DevOps у соцмережах, таких як LinkedIn, зросли на 50%. Це підтверджує, що ринок DevOps буде розвиватися, а кадровий голод тільки збільшуватиметься.

Наскільки корисним був цей пост?

Click on a star to rate it!

Середній рейтинг 5 / 5. Кількість голосів: 3

Оцінок поки немає! Будьте першим, хто оцінить цю публікацію.

Поділитися з друзями
Залиште коментар

up