DevOps Engineer: чим займається у компанії та що потрібно знати для роботи на цій позиції
Редакція DOU продовжує рубрику «Кар’єра в IT». У цьому матеріалі розповідаємо про професію DevOps-інженера: які навички цей спеціаліст повинен мати для роботи, у чому труднощі та плюси професії, які рутинні завдання наповнюють його день у компанії.
За даними DOU, середньостатистичному DevOps-інженеру 32 роки, він живе у Києві та входить до найоплачуваніших ІТ-спеціалістів. Медіанна зарплата — $3600. Найбільша кількість фахівців цього напряму має рівень Middle і Senior. Джуніорів у цій професії лише 13%.
Ми поспілкувалися з фахівцями DevOps, щоб детальніше дізнатися про їхню роботу. Всі цитати взяті з їхніх розповідей.
👉🏼 Долучайтесь до DevOps-спільноти DOU!
🥁 Хто такий DevOps Engineer
DevOps — це методологія або культурна філософія, набір практик, що поєднує розробку ПЗ (Dev) та ІТ-операції (Ops). Основна мета DevOps — скоротити цикл розробки ПЗ і подбати про безперервне доставлення програмних компонентів на кінцеве програмне середовище.
DevOps-інженер — це фахівець, який об’єднує процеси розробки та операційної підтримки, щоб оптимізувати та автоматизувати розгортання, моніторинг, тестування і підтримку ПЗ. Він відповідальний за безперервну інтеграцію та доставлення коду, масштабованість інфраструктури, безпеку та стабільність продуктивних середовищ.
У сучасній розробці ПЗ написання коду займає невелику частину того, що потрібно для створення робочого застосунку. А це компіляція коду в продукт, автоматичне тестування, розгортання хмарної та мережевої інфраструктури, безпека, моніторинг.
Багато таких супутніх завдань можна автоматизувати і поставити на потік. На виході отримуємо своєрідний «конвеєр» — у професії він називається CI/CD Pipeline. Де написаний розробниками код автоматично проходить різні «зупинки». Серед них перевірка якості та безпеки коду, збирання конкретної версії коду в робочий продукт, збереження цієї версії збірки, розгортання інфраструктури, налаштування безпеки, завантаження додаткових програм і бібліотек, налаштування мережі між компонентами готового рішення, запуск автоматичних тестів тощо.
DevOps-інженер часто налаштовує та підтримує процеси на кожній «зупинці» конвеєра. Він реагує на нестандартну поведінку інфраструктури, певні оповіщення і стежить за тим, щоб проєкт стабільно працював.
Також DevOps-інженер допомагає автоматизувати процеси, але в цьому він орієнтується на бізнес-цінність змін.
«DevOps — це не про професію і не про позицію, це культура, яку треба нести в команду. Бо це людина, яка співпрацює з різними підрозділами, розробниками, менеджерами, тестувальниками. І основне її завдання — налагодити процес між ними».
💸 Скільки він заробляє
З фінансового погляду професія DevOps Engineer досить приваблива. Влітку 2024 року медіанна зарплата цих фахівців становила $3600, що на $100 більше, ніж у розробників. Найвищі зарплати мають фахівці DevOps у продуктових компаніях — $3350 у мідлів і $5500 у сеньйорів.
Якщо порівнювати із суміжними професіями, DevOps-інженер посідає друге місце за оплатою праці.
Медіанна зарплата згідно з літнім опитуванням 2024.
📅 Основні завдання та обов’язки DevOps Engineer
«DevOps-інженер має бути одним з перших фахівців на проєкті. Від початку він вирішує, який вигляд матимуть технічні процеси „під капотом“ проєкту. Крім того, розробники потребують вже розгорнутої інфраструктури для первинного тестування майбутнього рішення.
Також DevOps-інженер має бути останньою людиною, яка „вимкне за собою світло“ на проєкті, що завершився. Відімкнення неактуальної інфраструктури теж входить у його обов’язки».
Які рутинні завдання виконує DevOps-інженер у компанії
- Комунікація. DevOps-інженер багато спілкується з різними стейкголдерами, уточнює, ставить запитання, пропонує. Він взаємодіє з великою кількістю інших ролей, впливає на їхню роботу. Розробники, спеціалісти з безпеки, архітектори, тестувальники — майже всі фахівці в команді певним чином є його клієнтами та споживачами інфраструктури.
- Налаштування та підтримка CI/CD Pipeline. DevOps приєднує до проєкту нові команди чи продукти, додає функціональності. Іноді DevOps-інженери роблять функціональність самообслуговування, передаючи налаштування «конвеєра» безпосередньо розробникам чи тестувальникам. Наприклад, це може бути функціональність автоматичного «відкочування» на попередню версію продукту у разі невдалого тесту.
- Інфраструктурні завдання. Цей фахівець автоматизує розгортання інфраструктури, потрібної для тестування та роботи продукту. Налаштовує хмарні сервіси, мережі, безпеку, моніторинг, відновлення у разі аварій. DevOps-інженер відповідає за те, щоб серверній інфраструктурі вистачало потужності для роботи продукту та щоб не витрачати зайвих грошей на хмарну інфраструктуру.
- Підтримка системної надійності. Фахівець постійно вдосконалює процеси та системи для запобігання простоїв.
- Оптимізація продуктивності. DevOps-інженер аналізує та оптимізує системи для того, щоб ресурси використовували максимально ефективно.
- Відновлення після збоїв. Фахівець розробляє стратегії резервного копіювання та відновлення, щоб швидко відновитися після збоїв.
«Якщо проєкт на старті, то у DevOps-інженера буде багато обов’язків. Особливо якщо це маленька компанія з одним таким спеціалістом у команді. Тоді він буде займатися і побудовою архітектури, і її налагодженням, розгортанням всього проєкту, моніторингом, щоб усе працювало коректно».
🧲 Що повинен знати кожен DevOps
- Операційні системи. Мастхев — це знати, як працює Linux і загалом Unix-система. Розуміти, у чому різниця між Windows, MacOS та іншими Unix-подібними системами.
- Version Control: Git, SVN, Mercurial.
- CI/CD Tools: Jenkins, Travis, GitLab CI, GitHub Actions.
- Інфраструктура як код (IaC): Terraform, CloudFormation, Bicep, Google Cloud Deployment Manager, Pulumi.
- Публічні хмари: AWS, Azure, GCP. Іноді DevOps-інженери працюють на приватних хмарах, але ці три найбільші публічні хмари дають найширшу функціональність для DevOps-процесів.
- Мікросервіси та оркестрування мікросервісної архітектури: Docker, Kubernetes, Helm, ArgoCD, FluxCD.
- Мережі та безпека. Розуміння принципів побудови безпечних мереж і управління сертифікатами. Основи мережевих технологій VPN, VPC, балансування навантаження, DNS. Практики безпеки: SSL/TLS, налаштування фаєрволів, управління доступом (IAM).
- Моніторинг і логування. Prometheus, Grafana, Loki, ELK Stack.
«DevOps-інженеру потрібні фундаментальні знання в ІТ, особливо в інфраструктурній частині. Операційні системи (з акцентом на Linux), мережа, віртуалізація, Web, сховища, бази даних. Також важливі навички в скриптингу та програмуванні. Найбільш популярні мови програмування для DevOps-завдань — Python і Go».
Фахівці радять оглянути періодичну таблицю DevOps-інструментів. Вона показує різноманіття і складність технологій, з якими працює DevOps-спеціаліст. Умовно, інженеру на проєкті доводиться працювати з одним інструментом кожного кольору.
Які навички потрібні новачку для старту в професії
- Базові принципи Linux. Розуміти, як працювати з командним рядком і системними процесами.
- Контейнеризація та оркестрація. Навчитися працювати з Docker і Kubernetes. «Для старту в професії важливо вміти будувати власні контейнери, оптимізувати їх і „запакувати“ все у Docker. Нині є тенденція, щоб усе було у контейнерах. Це ізольовані середовища, які можна підіймати, і це досить зручно для локальної розробки».
- Основи хмарних технологій. Ознайомитися з AWS, Azure або GCP.
- CI/CD. Розуміти процеси безперервної інтеграції та доставляння коду.
- Інфраструктура як код (IaC). Почати з Terraform або Ansible.
- Мережі та безпека. Знати основи TCP/IP, VPN, безпеки у хмарах.
- Базове вміння програмувати. Писати простий код на рівні скриптингу на Go, Python, Bash.
«Коли кажуть, що DevOps-інженери не пишуть код, це неправда. DevOps пишуть код і часто. Тому класно, якщо початківець буде мати базові знання у програмуванні».
💡 Які софт-скіли важливі для DevOps Engineer
Англійська мова. У цій професії важливо багато комунікувати, і англійська обов’язково знадобиться, навіть у цілком українських компаніях. DevOps комунікує не лише з колегами, а й з партнерськими організаціями та вендорами, технічною підтримкою продуктів тощо.
«Технології постійно змінюються, і DevOps часто гуглять, щоб отримати нові знання. І те, що з’являється першим про нові технології, — найчастіше англійською. Відповідно потрібно мати принаймні рівень Intermediate чи Upper-Intermediate».
Вміння ставити запитання та постійно вчитися, шукати інформацію та розбиратися в деталях. Професія DevOps вимагає багато досліджень та експериментів. Безліч речей, які трапляються інженеру, будуть для нього нові або суміжні. Вчитися треба безперервно.
«Це не та професія, де ти вивчив дефолтний стек і з ним працюєш. Проєкти масштабуються та вдосконалюються, під’єднуються нові сервіси. Тому DevOps повинен бути „зарядженим“ і прагнути постійно розвиватись».
Самостійність. Хоч ці інженери і взаємодіють з різними командами, при цьому їм варто бути готовими самостійно ухвалювати рішення, проявляти лідерські риси та просувати ідеї.
Вміння розставляти пріоритети. Важливо розуміти, які завдання є найбільш терміновими, а що можна відкласти. Це особливо важливо у критичних ситуаціях, коли потрібно реагувати швидко.
«Я часто спостерігаю, як молоді колеги під час „алярму“ намагаються взятися за все й одразу. У критичній ситуації DevOps починають писати всі співробітники в усі чати. Але на відповіді їм можна витратити надто багато часу. Тому я передусім занурююся в основну проблему, а тоді вже відповідаю на репорти».
📌 Завдання DevOps Engineer упродовж робочого дня
Перевірка стану інфраструктури проєкту. День часто починається з перевірки стану систем, моніторингу та логів для виявлення будь-яких аномалій чи збоїв, що могли виникнути за ніч.
Також це перегляд дашбордів моніторингу (Prometheus, Grafana, Datadog) і аналіз метрик, таких як використання CPU, пам’яті, мережевого трафіку та часу відгуку сервісів.
Щоденні зустрічі (Stand-up). DevOps бере участь у щоденних планувальних зустрічах з командами розробки та тестування, де обговорюють завдання, проблеми та пріоритети на день.
Автоматизація та конфігурація
- Працює над автоматизацією процесів, створює та оптимізує скрипти для розгортання, налаштування CI/CD пайплайнів.
- Проводить перевірки після розгортання, щоб упевнитися, що всі сервіси працюють належним чином.
Виявлення та розв’язання проблем
- Швидко реагує на інциденти або аварії, діагностує та розв’язує проблеми.
- Аналізує логи, метрики та системи моніторингу, щоб виявити першопричини проблеми та усунути її.
- Разом з розробниками та тестувальниками розв’язує проблеми, пов’язані із середовищем, розгортанням або продуктивністю.
Поліпшення інфраструктури
- Оптимізує та масштабує інфраструктуру, додає нові функції або сервіси.
- Розробляє та впроваджує нові інструменти або процеси для підвищення продуктивності та стабільності систем.
Тестування та моніторинг
- Налаштовує та підтримує автоматизовані тести для перевірки системи перед релізом.
- Впроваджує нові інструменти моніторингу та сповіщень для кращого відстеження стану системи.
Документація
- Оновлює документацію про інфраструктуру, CI/CD, процедури розгортання та аварійного відновлення.
- Пише звіти про виконану роботу та відомості про закриті проблеми або статуси завдань у системі.
Планування наступного дня
- Переглядає прогрес і планує завдання на наступний день або тиждень.
- Обговорює майбутні релізи, інфраструктурні зміни або нові проєкти з командою.
🔔 Труднощі та переваги професії
Виклики
DevOps-інженери повинні добре взаємодіяти з різними командами: розробниками, тестувальниками, адміністративним персоналом. Непорозуміння або погана комунікація можуть призвести до затримок або помилок у розгортанні інфраструктури.
Також DevOps-інженерам варто бути готовими до можливих критичних ситуацій і реагувати на них швидко. Навіть якщо це стається у неробочий час чи навіть уночі. Все залежить від вартості падіння проєкту: іноді вмикатися в роботу потрібно максимально швидко, іноді це може зачекати певний час. Проте якщо інфраструктура побудована гарно, схоже стається рідко.
«Якщо на проєкті один DevOps або він працює на аутсорсі для невеличкої команди, то ноутбук завжди має бути з собою: у машині, басейні, спортзалі. Добре, якщо ви за пів години можете відповісти, що бачите проблему і за кілька годин почати відновлення. Але якщо це фінансовий проєкт, реагувати доведеться за лічені хвилини».
Професія вимагає глибоких знань у багатьох інструментах. Це означає, що потрібно постійно вчитися і бути в курсі останніх розробок в напрямі інфраструктури, автоматизації, безпеки.
Переваги
DevOps-спеціалісти мають великий попит на ринку праці. Компанії цінують їхню здатність прискорювати розробку та підвищувати надійність систем. Тому зарплати тут зазвичай високі.
DevOps-інженери відіграють ключову роль у розробці та доставленні продукту. Вони можуть безпосередньо впливати на якість, швидкість і надійність випуску ПЗ.
«Ці фахівці можуть зазирнути „під капот“ масштабних проєктів, які мають вагомий вплив на рівні організацій. У роботі багато спілкування, багато відповідальності та висока цінність праці».
DevOps-інженери можуть швидко побачити результати своєї роботи — як пришвидшилися процеси та поліпшилася робота систем.
Вони постійно опановують нові технології та інструменти, що сприяє професійному зростанню.
Ці інженери мають свободу вибирати інструменти та підходи, які будуть найкращими для вирішення конкретних завдань. Завдяки цьому робота стає більш творчою.
🤔 Чому DevOps-інженер — це не сисадмін
Ще 15 років тому не були такими поширеними CI/CD-пайплайни, контейнеризація та інші патерни, якими зараз займається девопс. Тож усі суміжні з DevOps завдання виконував сисадмін. Проте нині ці позиції розділені.
Сьогодні девопсів стало більше: 2015 року фахівці DevOps/SRE становили 1% від усіх ІТ-спеціалістів, а
Дані з Портрета ІТ-спеціаліста 2024.
«DevOps — це наче еволюція сисадміна, наступний рівень».
Системний адміністратор опікується робочими станціями, фізичними серверами та локальною інфраструктурою в офісі. DevOps-інженер дбає про проєкт. Це може бути внутрішня система для співробітників чи зовнішня для клієнтів. DevOps-інженер займається запуском обслуговування, автоматизацією цієї системи та її оновленням. І його позиція передбачає роботу з іншими інструментами, ніж у сисадміна, — для контейнеризації та автоматизації.
Також на відміну від сисадмінів, DevOps-інженери пишуть код і працюють з хмарними технологіями.
«Сисадмін — це більш усталена професія, де спеціаліст виконує рутинні завдання. Так, буває імплементація нових технологій, сервісів, але досить поступово. DevOps — це динамічний напрям, де фахівець відчуває турбулентність змін».
📚 Де шукати знання DevOps Engineer
Безплатні курси та навчальні платформи
- Introduction to DevOps, Site Reliability Engineering від Google Cloud — вступний курс на Coursera, який охоплює основи DevOps і SRE.
- Version Control with Git від Atlassian на Coursera — основи роботи з Git.
- Learn Git Branching — інтерактивна гра для розуміння, як працює Git.
- Introduction to DevOps: Transforming and Improving Operations від Linux Foundation — курс на edX, охоплює основи DevOps і його роль у сучасних ІТ-операціях.
- Learn DevOps: Docker, Kubernetes, Terraform and Azure DevOps — курс від Udemy для ознайомлення з основними інструментами DevOps.
- AWS Cloud Practitioner Essentials — офіційний курс від AWS для початківців, що пояснює основи роботи з хмарними сервісами.
- Introduction to GitHub — практичні вправи для роботи з GitHub і Git.
- GitHub Actions: Hello World — ознайомлення з CI/CD-конвеєрами на основі GitHub Actions.
- Learn the Command Line від Codecademy — вивчення основ командного рядка для роботи з Linux-системами.
Документація та практичні керівництва
- Docker Documentation — офіційна документація Docker містить докладні інструкції для початківців, зокрема встановлення, основи Docker і роботу з контейнерами.
- Docker Playground — онлайн-пісочниця для практики з Docker без потреби встановлення.
- Kubernetes Documentation — офіційна документація з основами Kubernetes, зокрема про розгортання кластерів та управління контейнерами.
- AWS Free Tier — безплатні продукти для практичного вивчення AWS-сервісів.
- AWS Training and Certification — ресурси з відео та лабораторними роботами для ознайомлення з сервісами AWS.
- Ansible Documentation — офіційна документація з основами Ansible для управління конфігураціями та автоматизації.
Онлайн-спільноти та блоги
- DevOps-спільнота DOU.
- Reddit: r/devops, r/docker і r/kubernetes.
- Dev.to — статті та підручники з DevOps, Docker, Kubernetes, CI/CD тощо.
- Medium: DevOps — статті, блоги та підручники від DevOps-інженерів.
- devDosvid blog — блог про технології, потрібні для повсякденної роботи DevOps.
Подкасти про DevOps на DOU
- DevOps-подкаст DOU, який уже має 11 випусків.
- «DevOps-інженер: обовʼязки, must-have навички та зарплати».
- «DevOps — це (не) секта? Які технології варто знати».
YouTube-канали
- TechWorld with Nana — відео про Docker, Kubernetes, CI/CD та інші теми DevOps.
- freeCodeCamp — відеокурси та лекції на різні ІТ-теми, зокрема DevOps.
- CS144 — вступ до комп’ютерних мереж, серія лекцій.
- [не]правильний DevOps — канал про DevOps та SRE.
- ДевОпс Українською — лекції про хмари, пайплайни, контейнери тощо.
Книги
«The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win», Gene Kim, Kevin Behr, George Spafford.
«Learn DevOps: Infrastructure Automation With Terraform», Yevgeniy Brikman.
Дякуємо за підготовку та рецензування матеріалу нашим експертам:
Володимир Абрамович — DevOps Engineer у Promova (Genesis)
Ілля Ільїн — DevOps Engineer у Genesis
Олександр Савченко — Staff DevOps Engineer у Checkr
Роман Рудик — DevOps Engineer в Sigma Software
Дмитро Клевакін — Azure Solutions Lead, Solutions Architect, CoE — Critical Services у SoftServe
Владислав Грам — Lead DevOps Strategy Advisor у Ciklum
Олександр Полюх — Lead DevOps (AWS) Engineer в Intellias
Сергій Дівнич — Engineering Manager в Avenga
Все про українське ІТ в телеграмі — підписуйтеся на канал DOU
8 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.