
Підхід, колись створений спільнотою небайдужих спеціалістів, вже встиг перетворитися на цілу філософію, до якої звертаються найбільші компанії світу. В чому ж секрет концепції DevOps та які фахівці здатні втілити її в життя? У цій статті ми розповімо про професію DevOps-інженера, а також поділимось роадмапою, яка допоможе вирости із системного адміністратора до практика DevOps.
DevOps (Development Operations) — методика комфортної взаємодії між командами, що відповідають за розробку та експлуатацію продукту. Для розуміння наведемо приклад.
Принцип роботи без DevOps наступний: припустимо, розробники запускають код у продакшн. Якщо у команди експлуатації виникають проблеми, вони назначають відповідальними за це команду розробки. Така процедура має вади: процес налагодження повільний, і кінцевий продукт все одно може мати недоліки.
Тому методику DevOps запровадили в якості «з’єднувального елементу» між двома командами задля покращення результату та підвищення швидкості процесів. Фахівець з DevOps особливо необхідний, коли на проєкті є проблеми зі стабільністю, масштабуванням, або коли процес створення продукту надто затягується.
Найцікавіше, що методологія DevOps стала відповіддю на потреби розробників, проджект-менеджерів, системних адміністраторів. Тобто, її не «нав’язали» згори, вона логічно розвинулась у середовищі практиків.
Культура DevOps заперечує розділення обов’язків. Вона заперечує класичне твердження, що розробники повинні виконувати лише свої обов’язки й не цікавитись, наскільки успішним буде запуск продукту у продакшн. Також ця культура не передбачає пошук «більш винної» команди у разі невдачі. Відповідальність за результат несе кожен учасник. Це значить, що проблема, яка виникає — загальна, і кожен зацікавлений в її усуненні.
DevOps — методологія, яка виникла відносно недавно (її сформували у 2008 році). Тому її принципи щороку вдосконалюються та змінюються. Загальноприйнятими вважаються наступні:
Принципи DevOps часто порівнюють з ідеологією Agile. Але у випадку з DevOps, методика розповсюджується не тільки на процеси розробки, але й на експлуатацію та тестування. Щоправда, є декілька правил, напряму запозичених з Agile:
DevOps інженер — спеціаліст, який має компетенції у всіх процесах та циклах розробки й експлуатації продукту. Маються на увазі: розробка, тестування, побудова архітектури, аналіз ризиків, автоматизація процесів, технічна підтримка продукту.
Загалом DevOps спеціаліста можна розглядати як адміністратора (або навіть «диригента оркестру»). Розробники знають процеси, але можуть не знати про проблеми з їх продуктом. Технічна підтримка знає про проблеми, але не розуміє принципи роботи системи. DevOps-інженер робить ці процеси прозорими для всіх учасників: шляхом автоматизації та своєчасного доставлення результатів командам.
Навчання за темою
Він відповідає за використання загальноприйнятої методології, налагоджуючи оптимальну роботу команд програмування та експлуатації. Ключове завдання — реалізувати поставлену бізнес-мету: створити продукт швидко, задовольнити клієнта, забезпечити прибуток компанії.
Методологія DevOps дуже об’ємна, тому універсальних спеціалістів не існує. Кожен інженер спеціалізується на конкретній ніші. Наприклад, існують реліз-інженери (вони відповідають за правильне розміщення та розгортання коду), платформенні інженери (підіймають сервери, об’єднані у кластери), DevSecOps-спеціалісти (відповідають за безпеку) та інші.
Не завжди для кожної ролі потрібен окремий фахівець. Буває, що функції Build Engineer у компанії виконує розробник, адміністратор бере на себе суброль Automation Engineer, а конкретно DevOps інженер займається автоматизацією та опрацюванням процесів розробки й доставлення продукту в продакшн.
Відмінність — не просто у знаннях, а в підході до роботи. У випадку, коли системний адміністратор працює за узгодженим щоденним списком задач, DevOps-спеціаліст більш гнучкий. Умовно: сьогодні він може працювати з кодом, завтра — контролювати процеси тестування, післязавтра — розв’язувати помічену проблему тощо. Він працює над тими процесами, які є найбільш актуальними для команди.
Станом на червень 2022 року DevOps інженери в Україні входять до трійки спеціалістів з найвищою зарплатою. Середній рівень становить $3500 та має тенденцію до підвищення.
джерело: DOU.ua
HR-експерти, говорячи про наймання DevOps, називають ситуацію «гарячою». Річ у тому, що попит на ринку шалений, а хороших інженерів недостатньо. Такі спеціалісти потрібні компаніям, які розробляють застосунки чи сервіси і зацікавлені у налагодженні єдиної системи роботи. Приклади компаній-гігантів, які активно розвивають культуру DevOps та наймають таких спеціалістів: Amazon, Facebook, Google, Adobe. І наразі бачимо динаміку, що все більше й більше компаній починають наслідувати приклад найкращих.
DevOps інженеру треба розумітися на специфіці розробки, тонкощах адміністрування і тестування. Розглянемо, які є вимоги до DevOps інженера. Для зручності скористаємося «дорожньою картою».
джерело: https://roadmap.sh/devops
Знання хоча б однієї з зазначених у карті мов обов’язкове. Звичайно, DevOps інженеру не треба мати рівень Senior у області розробки. І обрана мова програмування теж не має критичного значення. Головне — знати мову настільки, щоб використовувати її для написання програм для автоматизації процесів. Зазвичай DevOps інженери вивчають Python, Ruby, Node.js, Go, Rust, C або C++.
Вато знати принципи роботи операційних систем, концепції побудови мережі, стандарти POSIX. Потрібні навички роботи з файловою системою, сокетами, віртуалізацією, керуванням пам’яттю, введенням та виведенням, процесами. Знадобиться вміння роботи з терміналом на різних операційних системах. Так, багато сучасних компаній працюють у Linux-середовищі, тож буде потрібен досвід роботи з адмініструванням Linux та Bash-скриптами.
Потрібен досвід роботи з різними типами протоколів: TCP/IP, HTTP, HTTPS, SMTP, FTP. Умовно: треба розуміти різницю між HTTP і HTTPS, розбиратися у криптографічних протоколах SSL/TLS, протоколі віддаленого серверного керування SSH, передачі файлів мережею FTP, технології Port Forwarding. Додатково знадобиться розуміння мережевої моделі OSI та її рівнів. Хорошим бонусом буде освоєння опенсорсного інструменту SaltStack, який використовує push-модель для виконання команд за протоколом SSH. Він підтримує вертикальне і горизонтальне масштабування та шаблони YAML.
DevOps інженеру варто знати як налаштувати вебсервер (наприклад, IIS, Nginx, Apache чи Tomcat). Потрібні знання про кешуючі сервери, балансувальники навантажень, зворотні проксі, брандмауери тощо.
Згідно з моделлю Infrastructure as Code (IaC), налаштування інфраструктури схоже на процес розробки. Інженеру треба працювати з контейнеризацією, керувати конфігурацією. Це — ключова компетенція DevOps експерта. Вона передбачає вивчення:
Безперервна інтеграція та безперервне розгортання — ключова частина методології DevOps. Тож треба освоїти інструменти GitLab, Jenkins, GitHub actions або подібні.
Мікросервіси — невеликі, незалежні частини. Кожен мікросервіс діє автономно та обслуговує певну бізнес-потребу. У порівнянні з традиційним монолітним додатком мікросервіси пропонують переваги модульності, масштабованості та безпеки. Тому не дивно, що в DevOps команди переходять на мікросервісну архітектуру, яку необхідно розуміти.
Запуск серверів, конфігурація програми, розгортання — за DevOps все має бути автоматизовано. Для середовища розробки часто використовують Vagrant. Для моделювання інфраструктури популярні Terraform та Cloudformation for AWS. Для управління конфігураціями — Ansible, Chef, Saltstack та Puppet.
В умовах одночасної роботи багатьох служб треба «тримати руку на пульсі» та мати впевненість у стабільності процесів. Для цього, наприклад, треба освоїти інструмент SigNoz — він забезпечує моніторинг системи.
Більшість застосунків створені для хмарних обчислень. Тому треба знати провайдерів. Головні з них — AWS, Heroku, Azure, DigitalOcean та Google Cloud. Основні компетенції для DevOps інженера у цій сфері:
У підході DevOps закладене вміння слухати й чути. Будь-які процеси повинні відбуватися з певною метою, тому потрібно вміти чути стейкхолдерів, команди — і пропонувати для них цінність.
Майндсет девопса заточений на те, що в поняття “краще” немає меж. Будь-який сьогоднішній процес може стати кращим завтра, але при цьому вкрай важливо правильно визначати пріоритети.
Це не про відокремлення. DevOps повинен заохочувати культуру колаборації та відкритих процесів у компанії. Це може бути складно, адже деякі організації звикли “ховати” процеси одних команд від інших. Але такий патерн несумісний як з Agile, так і з DevOps.
Жага до навчання та змін може бути заразливою. Зміни та адаптація до нового може бути болісною для багатьох організацій. Але культура DevOps, яка покаже результати, може дати друге дихання організації. Такі фахівці заохочують усіх до навчання та обміну інформацією.
По-перше, вчіться: опануйте мову програмування, розберіться в нюансах операційних систем. Вам потрібно впевнено працювати з терміналом, знати про передачу даних та протоколи шифрування, розумітися на інструментах оркестрування і контейнеризації. Системні адміністратори вже мають деякі компетенції: після навчання та отримання додаткових навичок вони можуть сміливо брати на себе нові обов’язки та переходити до нової ролі.
По-друге, починайте думати новим чином. Розвивайте в собі таку систему мислення, щоб постійно переглядати свої процеси та стратегії. Пробуйте автоматизувати їх, робити прозорими. І обов’язково спілкуйтесь з колегами: дізнавайтесь про проблеми, з якими вони стикаються, розповідайте їм про нові інструменти. Не бійтесь вдосконалюватись та заглиблюватися в нову культуру.
Також радимо почитати: