Мистецтво найму DevOps інженера

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

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

Так в чому ж складність?

Унікальний виклик тут полягає в тому, що навіть визначення, що повинен робити DevOps інженер в кожній конкретній компанії не є тривіальною задачею.

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

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

То що ж ми маємо на увазі, коли говоримо "DevOps"?

Можна спробувати пояснити на аналогіях. Уявімо собі чоловіка і дружину, які мають дітей - двох близнюків: Даринку та Богданку. Батьки домовились, що за Даринку відповідає батько, а за Богданку  - мати. Таким чином кожен з них зможе зосередитися на одній дитині, і кожен буде спеціалізуватися на вихованні цієї дитини.

Чудова ідея, правда?

Насправді ж така сім'я приречена, бо чоловік і дружина не мають спільної відповідальності. Рішення, які батько пропонує Даринці, не будуть застосовані до Богданки (попри те, що вони, ймовірно, мають схожі потреби), і те ж саме буде відбуватись з Богданкою.

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

Ми знаємо, що 2 людини можуть досягти більшого, якщо вони працюють над одним і тим же продуктом або послугою, але ми не завжди пам'ятаємо про основи - це вірно лише тоді, коли у них є співпраця.

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

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

Ця спільна відповідальність може проявлятися по-різному:

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

Яка роль DevOps інженера?

Якщо відповідальність розподілена між розробкою та експлуатацією, то якою є роль DevOps інженера і чому здається, що саме він відповідає за експлуатацію?

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

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

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

Розгортання - це, звичайно, лише один приклад.

Є й інші речі, які входять до сфери відповідальності DevOps-інженера.

Що входить до обов'язків DevOps інженера

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

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

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

Ось лише деякі з них:

  • Infrastructure: забезпечення, обслуговування та масштабування інфраструктури.
  • Monitoring: журнал моніторингу, метрик і трас, запуск сповіщень.
  • Continuous Integration: безперервна співпраця над однією і тією ж кодовою базою.
  • Secrets Management: дозволяє зберігати та отримувати конфіденційні дані про конфігурацію.

І т.д.

Платформа складається з 3 речей:

Інструменти - готові до використання системи, які вже вирішують існуючі проблеми

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

Знання - інформація та моделі мислення, необхідні для вирішення проблеми

Приклад: моніторинг

Давайте на прикладі моніторингу розберемо як ми будуємо платформу, використовуючи інструменти, процеси (автоматизовані та неавтоматизовані) і знання девопс інженерів.

Наприклад, розробникам потрібно розуміти, що відбувається зі створеними ними додатками після релізу. 

Дії команди DevOps можуть бути наступними:

#1 - Рекомендація всім розробникам почати виставляти метрики. DevOps команда надає розробникам для цього спільноту SDK (Інструменти) та ділиться навчальними посібниками (Знання).

#2 - Редагування шаблону мікросервісу компанії для використання SDK з коробки (Процеси).

#3 - Розгортання Prometheus, щоб почати збирати метрики (Інструменти).

#4 - Розгортання Grafana, щоб почати відображати показники (Інструменти).

#5 - Проведення воркшопу з використання Prometheus та Grafana (Знання).

#6 - Створення інструкції зі управлінням дашбордом з показниками додатку (Процеси).

Після цього розробники можуть розпочати моніторинг додатку за допомогою метрик і та платформи.

Це лише один приклад.

Підіб'ємо підсумки

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

DevOps - це культура, спрямована на покращення співпраці шляхом збільшення спільної відповідальності.

Якщо в вашій компанії виникли складнощі з наймом DevOps інженера, ми з радістю проконсультуємо вас або навіть сходимо на технічне інтерв'ю з потенційним кандидатом.

Додатокові статті:

  1. Hire DevOps Engineers
  2. Hire Kubernetes Experts
  3. Hiring AWS Developers
  4. Hire a Release Train Engineer
1590