20 поширених запитань і відповідей на інтерв’ю DevOps [2022]

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

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

Часті запитання та відповіді на інтерв’ю DevOps

Що таке DevOps для вас?

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

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

Чому DevOps важливий?

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

  • Покращене спілкування
  • Командна робота та згуртованість
  • Покращена співпраця
  • Швидша доставка якісної продукції
  • Зменшена складність і швидке вирішення проблем
  • Більша масштабованість і гнучкість для додавання нового коду
  • Більш стабільне робоче середовище
  • Більша автоматизація
  • Зниження витрат і використання ресурсів
  • Безпека завдяки інтегрованим і автоматизованим інструментам

Які щоденні завдання DevOps?

Деякі щоденні завдання, які ви можете згадати:

  • Забезпечте постійну інтеграцію та розгортання
  • Призначайте та повідомляйте про завдання, які потрібно виконати
  • Розробити та замовити протоколи випробувань
  • Моніторинг і збір показників інфраструктури та додатків
  • Аналіз результатів, отриманих на кожному етапі розробки
  • Зменшити частоту помилок і час відновлення у разі помилок
  • Скоротіть час доставки

Як DevOps допомагає розробникам?

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

Що таке контроль версій?

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

Що таке CI/CD і які його переваги?

Безперервна інтеграція (CI)

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

Безперервна доставка (CD)

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

Безперервне розгортання (CD)

На відміну від безперервної доставки, метою цієї практики є відсутність втручання людини під час розгортання програмного забезпечення у виробництві. Публікація нового або зміненого коду в робочій версії автоматизована.

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

Що таке постійний моніторинг

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

Чому постійне тестування важливо?

Безперервне тестування автоматизує тести на ранній стадії, поступово та відповідним чином у процесі розробки. Це важливо, оскільки дозволяє забезпечити якість коду. Помилки виявляються на ранній стадії, а зворотній зв’язок коду виконується швидше.

Поясніть кілька типів тестів, які використовуються в DevOps?

Модульні тести

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

Тести компонентів

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

Тести розгортання

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

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

Що таке архітектура мікросервісів і чим вона відрізняється від традиційної архітектури?

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

Це призводить до зупинок або навіть збоїв і становить велику небезпеку для збереження коду. Для клієнтів це означає втрати і головний біль.

В архітектурі мікросервісів функції програми являють собою незалежно розроблену та інтегровану службу. Компоненти окремі, але працюють разом для виконання пов’язаних завдань.

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

Мікросервіси з’являються, щоб зробити DevOps ще гнучкішим і ефективнішим, прискорюючи наскрізну розробку та роблячи програми ще більш масштабованими.

Що таке інфраструктура як код?

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

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

Інфраструктура як код базується на кількох практиках:

  • Використовуйте файли визначення
  • Самодокументовані системи та процеси
  • Версія всіх елементів
  • Постійно тестуйте системи та процеси
  • Невеликі зміни замість партій
  • Забезпечте безперервну доступність послуг

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

Деякі інструменти краще підходять для проектів на певних мовах програмування, таких як Maven і Apache’s Ant, які, хоча технологію можна використовувати з іншими мовами, переважно використовуються в проектах Java. Інші, такі як Hudson або Jenkins, можна використовувати ширше з різними проектами.

Що таке конвеєр DevOps?

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

  • Бачення продукту: визначає особливості продукту;
  • Команда розробників: розвивається ітеративно та поступово;
  • Сфера діяльності: впроваджує та підтримує стабільне середовище;
  • Моніторинг і зворотній зв’язок: прагнути створити цінність і використовувати клієнтом.

Які різні етапи конвеєра CI/CD?

Кроки, з яких складається конвеєр CI/CD, — це кілька згрупованих завдань, які називаються етапом конвеєра. Коротко, це:

  • Компіляція: етап, на якому компілюється програма;
  • Тест: етап, на якому тестується код. Тут автоматизація економить час і зусилля;
  • Запуск: коли програма відправляється в репозиторій;
  • Розгортання: код розгортається у виробничому середовищі;
  • Перевірка та відповідність. Ви можете використовувати інструменти перевірки безпеки зображень, такі як Clair, щоб переконатися в якості ваших зображень, порівнюючи їх із відомими вразливими місцями (CVE).

Це найпоширеніші етапи конвеєра DevOps. Проте кожна компанія має свої специфічні потреби та конвеєр.

Що означає віртуалізація платформи та які її переваги?

Віртуалізація платформи означає імітацію всієї комп’ютерної системи для одночасного запуску кількох екземплярів операційних систем на одній фізичній машині.

У цій конфігурації монітор віртуальної машини (VMM) або гіпервізор має повний контроль над апаратними ресурсами фізичної машини. Гостьові операційні системи працюють у віртуальних машинах, якими керує VMM. Віртуалізація середовища передбачає імітацію однієї або кількох віртуальних машин і мережевих з’єднань між ними.

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

Зокрема, використання віртуалізації дає такі переваги:

  • Швидке реагування на мінливі вимоги
  • Консолідація
  • Стандартизація
  • Простота обслуговування базових ліній

Яка різниця між контейнерами та віртуальними машинами?

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

У чому головна відмінність між Docker і Kubernetes?

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

У той же час Kubernetes — це інструмент оркестровки контейнерів, який може групувати контейнери за логічною категоризацією. Його можна розгорнути на кількох комп’ютерах за допомогою автоматичного розповсюдження.

Дізнайтеся більше про Kubernetes Vs. Докер.

Які метрики телеметрії в DevOps?

  • Бізнес-рівень: наприклад, кількість транзакцій продажу, дохід від транзакцій продажу, реєстрації користувачів, рівень відтоку та результати A/B-тестів.
  • Рівень програми: наприклад, час транзакцій, час відповіді користувача та збої програм.
  • Рівень інфраструктури: наприклад, трафік веб-сервера, навантаження ЦП і використання диска.
  • Рівень клієнтського програмного забезпечення: приклади включають помилки програми, збої та час транзакцій, виміряний користувачем.
  • Рівень конвеєра розгортання: Приклади включають статус конвеєра збірки (червоний або зелений для різних наборів автоматизованих тестів), зміну кінцевих термінів розгортання, частоти розгортання, рекламне середовище тестування та статус середовища.

Які технології ви використовуєте для DevOps?

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

  • Постійний розвиток: Git, SVN, Mercurial, CVS, Jira
  • Безперервна інтеграція: Jenkins, Bamboo, Hudson
  • Постійний розвиток: Nexus, Archive, Tomcat
  • Постійне розгортання: Puppet, Chef, Docker
  • Безперервний моніторинг: Splunk, ELK Stack, Continuous Nagios
  • Тестування: Selenium, Katalon Studio

Розкажіть нам про свій досвід управління проектами DevOps

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

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

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

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