Junior, Middle, Senior — чи підходить така ієрархія для DevOps?
DevOps — загадковий напрямок в IT: скрізь говорять про його ефективність, а провідні ІТ-компанії успішно його впроваджують. При цьому не всі роботодавці розуміють, чим ці спеціалісти мають займатися. У матеріалі розбираємося, як відрізняються завдання та вимоги до фахівців DevOps та наскільки актуально розділяти їх на Junior, Middle та Senior. Також на прикладі розглянемо підходи спеціалістів різного рівня до розв’язання задач.
Хто такий DevOps-інженер
DevOps — спеціаліст, який розуміє всі процеси циклу розробки — розробку, тестування, архітектуру продукту. Він може оцінити ризики безпеки, розуміється на автоматизації, а також розуміє перед- і пост-релізну підтримку продукту. Ця людина об’єднує розробників та адміністраторів, завдяки чому їхня взаємодія покращується, а робочі процеси стають ефективнішими.
Головне завдання таких фахівців — зробити розробку ПЗ максимально передбачуваною, ефективною та безпечною.
Стандартний набір завдань DevOps-інженера:
- Розгортання ПЗ, що розробляється;
- Робота з провайдером публічної хмари;
- Стандартизація оточення розробки;
- Настройка інфраструктури з урахуванням особливостей ПЗ, що розробляється;
- Підготовка продуктивного середовища до частого внесення змін;
- Пошук та виправлення проблем у розміщених середовищах;
- Автоматизація процесів;
- Впровадження процесів CI/CD.
На курсі «DevOps з нуля» навчають виконувати перераховані вище завдання й навіть більше. Дізнайся з якими ще викликами стикається DevOps-інженер і як з ними впоратись.
Хто потрібний на ринку праці
Ми переглянули топ свіжих вакансій DevOps-інженерів на сайті DOU. Порівняємо, чим вони відрізняються і наскільки відчутна ця межа між фахівцями різного рівня.
Перше, на що ми звернули увагу — складність визначити, скільки досвіду вважається оптимальним для фахівців залежно від рівня. Особливо чітко це видно, якщо розглядати вакансії з досвідом від 1 до 3 років — тут можна побачити і Junior, і Middle, і Senior позиції.
Також є й інший момент: у багатьох вакансіях не вказаний рівень позиції. Можливо, цей поділ просто не актуальний для DevOps-інженерів? Перевіримо.
Завдання Junior спеціаліста
В основному, у завданнях фахівців-початківців виділяють:
- Адміністрування серверів та їх обслуговування;
- Управління конфігураціями — встановлення та налаштування інфраструктури;
- Впровадження та управління CI/CD;
- Налаштування моніторингу;
- Розв’язання проблем за допомогою нескладних скриптів;
- Створення та супровід середовищ на хмарних платформах;
- Автоматизація процесів;
- Забезпечення та дотримання процедур безпеки, конфіденційності та захисту даних клієнтів.
Основні вимоги
Від фахівців-початківців очікують досвід:
- адміністрування Linux;
- роботи з хмарними технологіями (IaaS, PaaS, SaaS) та інфраструктурою як кодом (IaC);
- впровадження CI/CD;
- роботи з контейнерними технологіями, наприклад, Docker та Kubernetes;
- налаштування засобів автоматизації (Terraform, CloudFormation, Ansible);
- роботи з реляційними та нереляційними базами даних;
- взаємодії з Git;
- написання скриптів або програмування якоюсь мовою на базовому рівні.
Залежно від компанії та її специфіки, вимоги та завдання можуть відрізнятися або доповнюватися. Але є й такі вакансії, в яких обов’язки не прописані зовсім.
Задачі Middle DevOps
Завдання фахівців рівня Middle — ширше. До них можуть додатись:
- Повна відповідальність за інфраструктуру: створення, налаштування, автоматизація, проєктування та впровадження комплексних інфраструктурних рішень;
- Впровадження, підтримка, вдосконалення конвеєрів CI/CD;
- Розгортання ПЗ у кількох операційних середовищах, встановлення та налаштування середовищ додатків;
- Навчання команди процесам DevOps;
- Усунення проблем у високо навантажених системах;
- Впровадження практик у питаннях масштабованості системи;
- Аналіз незапланованих подій та інцидентів, щоб визначити наступні дії, які зроблять продукт надійнішим.
Основні вимоги
У вимогах змінюється кількість досвіду із технологіями DevOps. Наприклад, замість року досвіду, тут уже потрібний фахівець із 1,5-3 роками досвіду. Додаються й деякі нові вимоги:
- розуміння архітектури та принципів Cloud Native;
- знання скриптової мови на хорошому рівні та досвід автоматизації повсякденних завдань (наприклад, на Python або Bash);
- адміністрування баз даних;
- знання систем ведення журналів, моніторингу та збору метрик;
- досвід розробки конвеєрів.
Middle-спеціалісти займаються завданнями трохи на іншому рівні. Тут підхід більш комплексний. Наприклад, вони повністю відповідають за інфраструктуру: від налаштування до покращення та нових архітектурних рішень. Також тут бачимо навчання практикам DevOps інших членів команди, роботу з високими навантаженнями, масштабування, аналіз та стратегії.
Задачі Senior DevOps
У вакансіях цього рівня ми побачимо, що завдання включають:
- Не просто вміння працювати з хмарною інфраструктурою, а й уміння її розробити: проєктування, створення, міграція, контейнеризація, модернізація хмари;
- Проєктування інфраструктури програм, використовуючи архітектуру мікросервісів;
- Автоматизація операційних процесів;
- Підвищення безпеки, надійності, масштабованості, продуктивності та якості системи;
- Розробку додатків для покращення моніторингу та працездатності системи;
- Усунення несправностей та розв’язання проблем у кількох середовищах.
Основні вимоги
В середньому від кандидатів рівня Senior потрібно від 3 років досвіду у DevOps. Крім цього потрібен досвід:
- масштабування вебдодатків;
- роботи із системами контролю версій (наприклад, Git);
- з інструментами ITSM (наприклад, ServiceNow, Cherwell, HPSM, Zendesk);
- із системами логування, моніторингу та збору метрик (наприклад, Prometheus, Grafana, ELK).
Завдання Senior DevOps-інженера стають ще ширшими: до них додаються мікросервіси. Досвід фахівців дозволяє їм вирішувати завдання на зовсім іншому рівні, тому що підхід до їх вирішення у них зовсім відрізняється від менш досвідчених спеціалістів.
Різниця у підході до завдань
Головна відмінність між фахівцями різного рівня у будь-якій сфері — кількість їхнього досвіду. Чим частіше DevOps-інженер стикається з конкретним завданням, тим ефективніше він його вирішуватиме. У цьому блоці розглянемо, як змінюється підхід до завдань у початківців та тих, кого називають Senior DevOps. Для прикладу візьмемо одну з основних технічних навичок — управління конфігурацією.
Управління конфігурацією — це своєрідна інвентаризація. Це цілий процес, який включає ідентифікацію конфігурації, її контроль і перевірку стану. Ця задача має багато аспектів, які треба контролювати та відстежувати. Робити це потрібно, починаючи з процесу, в який вносяться зміни, до того, як ця зміна впливає на інші залежні системи.
Цим завданням може займатися і фахівець-початківець, і досвідчений девопс, але підходи до вирішення будуть різними.
Приклад: встановлення операційної системи та проміжного ПЗ
Завдання: встановити програмне забезпечення для моніторингу на десятках або сотнях серверів.
Як вчинить Junior:
Він напише скрипт bash, який зможе встановити та налаштувати ПЗ, вказавши імена хостів та облікові дані. Якщо встановити не вийде, запише помилку в лог, щоб повернутися до неї пізніше.
Що зробить Senior:
Подивиться, які операційні системи та їх версії потребує ПЗ, яке потрібно встановити. Спробує стандартизувати хости до мінімальної кількості версій, які доведеться підтримувати.
Потім встановить базові образи ПЗ, через що на нових серверах воно буде встановлюватися за замовчуванням.
Він скористається інструментом керування конфігурацією типу Ansible. У такому разі не доведеться писати кастомний скрипт, який потрібно буде підтримувати вручну.
Senior DevOps продумає та екстраполює змінні середовища зі сценаріїв конфігурації. Потім зміни в установці можна буде протестувати в пре-продакшені, а не відразу розгортати їх на сотнях серверів одночасно.
Потім скористається системою керування вихідним кодом та інструментом безперервної інтеграції для тестування змін у коді.
Висновок
У той час як Middle спеціаліст обере проміжне рішення, Senior DevOps підійде до розв’язання проблеми комплексно. Він намагається зрозуміти, як це реалізувати та як це вплине на всю інфраструктуру. Іншими словами, він дивиться на проблему масштабно, а не думає про рішення тут і зараз.
Це демонструє різницю між вирішенням завдань початківцем та досвідченим фахівцем. Підхід до однієї й тієї ж задачі змінюється, що впливає і на результат. У такому контексті поділ на рівні може бути зручним: у команди, де DevOps ще не впроваджено, важливо шукати лише Middle-Senior або Senior спеціалістів. У випадку Junior фахівців важливо, щоб у команді був досвідчений DevOps, який зможе підказати правильне вирішення завдання.
Іншими словами, поділ на рівні допомагає роботодавцям орієнтуватися у завданнях, які можуть виконувати ті чи інші кандидати. Це дає уникнути ситуації, коли недостатньо досвідчений фахівець створить більше проблем, ніж вирішить їх. Або таких, коли компанія переплачує за вирішення завдань, з якими може впоратися менш досвідчений DevOps-інженер.
А як ви вважаєте, чи варто ділити фахівців DevOps на Junior, Middle та Senior?