Блог

Як початківцю у DevOps підготуватися до співбесіди в NIX

В’ячеслав Нікітан, Senior DevOps у NIX  

Багато новачків в IT не знають, чим займаються DevOps-інженери. Але й навіть ті, хто розпочинає кар’єру саме в цій області, інколи не можуть продемонструвати своє розуміння теми. Це доводить мій досвід проведення десятків співбесід! Тож я підготував статтю, яка допоможе початківцям якісно підготуватися до співбесіди на посаду адміністратора DevOps/Linux.

Що таке DevOps

DevOps — це повноцінна дисципліна та певна культура. Вона відносно молода навіть за мірками IT-індустрії та почала активно розвиватися в Україні протягом останніх чотирьох-п’яти років. Можна сказати, що DevOps — це IT для IT. Робота DevOps-інженерів включає автоматизацію та оптимізацію процесів у IT-сфері. Тому їхні завдання, як правило, пов’язані зі створенням, налаштуванням та підтримкою того, що допоможе покращити розробку продуктів згідно з сучасною моделлю CI/CD.

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

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

На що треба звернути увагу в своєму резюме

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

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

Які типові питання на співбесіді

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

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

  • Як перейменувати файл за допомогою консолі?
  • Де в Linux можна переглянути логи?
  • Як здійснювати пошук пакетів у репозиторії?

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

Які знання потрібні для старту в DevOps

  • Усвідомлення загального устрою операційної системи Linux і структури та призначення каталогів в ОС.
  • Знання про права користувачів, або user permissions, групи та налаштування прав доступу.
  • Вміння працювати з текстами, файлами, процесами, управлінням сервісами, налаштуванням мережі, часом, з дисками, а також розуміння основ bash.
  • Навички роботи з пакетними менеджерами Centos/Ubuntu та інсталяцією пакетів із вихідних джерел.
  • Розуміння принципів, які лежать в основі роботи інтернету як такого.
  • Практичні навички встановлення та налаштування таких веб-серверів, як nginx та apache.
  • Досвід установки та конфігурування таких CMS-систем, як WordPress, Joomla та Drupal.
  • Розуміння призначення, принципів роботи та організації систем управління базами даних MySQL, вміння робити SQL-запити, бекап та відновлення БД.
  • Знання принципів електронної пошти та призначення поштових протоколів, а також досвід налаштування зв’язки postfix/exim+dovecot+roundcube.
  • Розуміння принципів роботи DNS, типів ресурсних записів та їхнього призначення.
  • Гарні навички роботи хоча б з одним із популярних хмарних провайдерів: AWS або Azure.
  • Чітке розуміння підходу CI/CD та практичні навички використання інструментів CI/CD.
  • Вміння працювати з інструментами контейнеризації, зокрема Docker, та розуміння, які проблеми вирішує ця технологія.

Усе це допоможе продемонструвати необхідний для початківця рівень підготовки. Але його також можна покращити. Наприклад, у багатьох командах бажаним є володіння інструментами управління конфігураціями (наприклад, Ansible) та інструментами управління інфраструктурою (наприклад, Terraform). А ще великим плюсом буде знання і досвід впровадження best practices по всіх зазначених темах.

Чи потрібно мати навички програмування

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

Які ресурси потрібно вивчати початківцю у сфері DevOps

Linux:

Web articles:

Udemy courses:

YouTube channels/playlists/videos:

Books:

  • UNIX and Linux System Administration Handbook — Trent R. Hein, Evi Nemeth, Garth Snyder, Ben Whaley, Dan Mackin
  • The Practice of System and Network Administration — Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup
  • How Linux Works — Brian Ward
  • Linux Phrasebook — Scott Granneman
  • The Linux Command Line: A Complete Introduction — William E. Shotts, Jr.
  • Linux Pocket Guide — Daniel J. Barrett
  • Wicked Cool Shell Scripts — Dave Taylor
  • Bash Pocket Reference — Arnold Robbins

General introduction to DevOps:

Official documentation/manuals:

Web articles:

Udemy courses:

Я впевнений: будь-якому початківцю в DevOps варто ретельно пройтись цими матеріалами та розібратися в деталях. Адже тоді ваші шанси отримати бажаний офер значно зростуть — у будь-якій IT-команді!