Бажаєте дізнатися, які запитання можуть виникнути на співбесіді на посаду DevOps-інженера? Наш детальний посібник стане вам у пригоді.
Поняття DevOps з’явилося приблизно у 2007-2008 роках, але на сьогоднішній день це одна з найбільш затребуваних спеціалізацій у сфері розробки програмного забезпечення. DevOps – це не просто технологія, це культурна трансформація, що впливає на усі етапи розробки та експлуатації.
Команди розробників та операцій спільно працюють на всіх стадіях проєкту – від планування та створення до моніторингу та постійного вдосконалення. Нижче наведено перелік поширених питань, які можуть бути задані на співбесіді з претендентами на посаду DevOps-інженера.
Що ж таке DevOps?
DevOps – це абревіатура від “Development” (розробка) та “Operations” (експлуатація). Ця методологія розробки програмного забезпечення об’єднує команди розробників та операторів для автоматизації кожного етапу проєкту. Головний акцент у DevOps робиться на ефективному управлінні ресурсами, комунікації та злагодженій командній роботі.
Які фази включає методологія DevOps?
- Постійна розробка (Continuous Development). На цьому етапі відбувається планування та написання коду.
- Безперервна інтеграція (Continuous Integration). На цьому етапі команда розробників інтегрує різні компоненти коду та перевіряє його працездатність.
- Постійне тестування (Continuous Testing). Проводиться попереднє автоматизоване тестування.
- Безперервне розгортання (Continuous Deployment). Забезпечує плавне розгортання оновлень без негативного впливу на роботу програми.
- Постійний моніторинг (Continuous Monitoring). Відстежується загальна продуктивність програми.
- Постійний зворотний зв’язок (Continuous Feedback). Аналізується інформація про проблеми та продуктивність, отримана від кінцевих користувачів.
- Безперервні операції (Continuous Operations). Дає можливість розробникам створювати покращені версії продукту та оперативно виявляти проблемні моменти.
Які переваги DevOps?
- Пришвидшення та покращення якості випуску продукту
- Підвищена масштабованість
- Оперативне усунення проблем
- Оптимізація використання ресурсів
Назвіть ключові показники ефективності (KPI) DevOps
- Частота розгортання
- Обсяг змін
- Час розгортання
- Показник невдалих розгортань
- Час виявлення помилок
- Рівень запобігання дефектам
У чому різниця між DevOps та Agile?
DevOps – це культура, що стимулює співпрацю між усіма учасниками процесу розробки та підтримки програмного забезпечення.
Agile – це методологія розробки, спрямована на підвищення продуктивності команд та організацію випусків з урахуванням мінливих вимог.
Яка роль AWS у DevOps?
AWS пропонує набір гнучких сервісів, які допомагають компаніям розробляти програми надійно та швидко. Сервіси AWS спрощують процеси розгортання коду, надання інфраструктури, автоматизації випусків та моніторингу продуктивності інфраструктури.
Для чого використовується SSH?
SSH (Secure Shell) – це протокол, що забезпечує захищене з’єднання між різними комп’ютерами. SSH використовується для різних цілей, таких як:
- Надійна аутентифікація
- Надійне шифрування
- Підтримка цілісності з’єднання
- Безпека передачі даних
Що таке безперервна інтеграція?
Безперервна інтеграція дозволяє розробникам об’єднувати свій код у центральному репозиторії. Після цього код автоматично збирається та тестується.
Що таке керування конфігурацією?
Це інженерний процес, що забезпечує узгодженість продуктивності системи або продукту, а також функціональних та фізичних характеристик протягом усього життєвого циклу.
Що таке безперервне тестування?
Це заплановане автоматизоване тестування програми на всіх етапах її розробки.
Що таке Git?
Git – це безкоштовний інструмент з відкритим кодом для керування вихідним кодом. Він призначений для ефективної роботи як з малими, так і з великими проектами.
Назвіть основні команди Git
git clone <https://назва-репозиторію>
git branch <назва-гілки>
git checkout <назва-вашої-гілки>
git add <файл>
git commit -m "повідомлення про коміт"
git push <віддалений-репозиторій> <назва-гілки>
git pull <віддалений-репозиторій>
Поясніть різницю між Git merge і Git rebase
Команда `git merge` дає можливість розробникам об’єднувати різні гілки Git, зберігаючи при цьому історію комітів кожної гілки.
Команда `git rebase` дозволяє інтегрувати зміни з однієї гілки в іншу, змінюючи історію комітів після завершення процесу.
Поясніть різницю між Git fetch та Git pull
`Git fetch` дає вказівку Git отримати (перевірити) останні метадані з віддаленого репозиторію, не переносячи файли.
`Git pull` перевіряє та переносить зміни з віддаленого репозиторію до локального проекту.
Що таке конфлікт злиття?
Конфлікти злиття виникають при об’єднанні гілок з конкуруючими комітами. Зазвичай вони виникають, коли різні розробники змінюють один і той самий рядок коду або файл.
Що таке контроль версій і які є типи?
Контроль версій (контроль вихідного коду) – це процес відстеження змін програмного коду та управління ними.
Існують такі типи систем контролю версій:
- Централізований – передбачає єдину копію вихідного коду на сервері, де фіксуються всі зміни. Приклади: Subversion (SVN) та Perforce.
- Розподілений (DVCS) – не має центрального сервера для зберігання всіх файлів проекту. Приклади: Git та Mercurial.
Які переваги використання контролю версій?
- Допомагає розробникам зберігати ефективність та гнучкість
- Надає повну історію всіх змін у проекті чи файлі
- Покращує відстеження змін
- Спрощує керування злиттям та розгалуженням
- Забезпечує можливість спільної роботи
Що таке розгалуження?
Розгалуження – це створення окремої (нової) версії основного репозиторію. Гілки дозволяють працювати над різними частинами проекту без впливу на основну гілку.
Що таке стратегії розгалуження?
Стратегії розгалуження – це методології, які використовують команди розробників під час написання, об’єднання та розгортання коду. Вони допомагають виявляти та виправляти помилки на етапі гілки до того, як вони потраплять до основного проекту.
Що таке автоматизоване тестування та як його автоматизувати в DevOps?
Автоматизоване тестування – це техніка автоматичної перевірки коду. Воно використовується для перевірки відповідності функціональності, стилю коду та зручності користування вимогам до якості.
Автоматизоване тестування виконується за допомогою інструментів, таких як Selenium та Katalon.
Що таке Jenkinsfile?
Jenkinsfile – це текстовий файл, що містить опис конвеєра Jenkins. Він зберігається у репозиторії керування джерелами. Jenkinsfile дозволяє контролювати історію конвеєра, переглядати код, вносити ітеративні зміни та мати єдине джерело достовірної інформації про конвеєр.
Поясніть архітектуру Jenkins
Jenkins використовує архітектуру “господар-підлеглий”. Це означає, що багато “рабів” працюють на одного “господаря”. Завдяки цьому Jenkins Distributed Build може запускати однакові тести у різних середовищах, а результати збираються та об’єднуються на головному вузлі для моніторингу.
Які найпопулярніші плагіни Jenkins?
- Плагін Blue Ocean для Jenkins
- Плагін Mailer для Jenkins
- Плагін Git для Jenkins
- Плагін Jira для Jenkins
- Плагін Docker для Jenkins
- Плагін інтеграції Maven для Jenkins
- Плагін Kubernetes для Jenkins
- Плагін SonarQube для Jenkins
- Плагін Amazon EC2 для Jenkins
Що таке Selenium IDE?
Selenium IDE – це інструмент, що записує взаємодії браузера для створення тестових випадків. За допомогою інтегрованого середовища розробки Selenium можна встановлювати контрольні точки, а також перевіряти та призупиняти змінні у разі виникнення помилок.
Які компоненти Selenium?
Які види тестування підтримує Selenium?
- Наскрізне тестування
- Регресійне тестування
- Системне тестування
- Тестування продуктивності
- Тестування на сумісність
Які винятки можуть виникати у Selenium?
- ElementNotSelectableException
- NoAlertPresentException
- InvalidSelectorException
- NoSuchSessionException
- StaleElementReferenceException
- NoSuchWindowException
- NoSuchFrameException
- NoSuchElementException
- TimeoutException
- ElementNotVisibleException
Що роблять driver.close() і driver.quit() у WebDriver?
Команда `driver.close()` закриває поточне вікно браузера. Якщо відкрито лише одне вікно, вона закриє весь сеанс браузера.
Команда `driver.quit()` закриває весь сеанс браузера з усіма вікнами, вкладками та спливаючими вікнами.
Що таке Dockerfile?
Dockerfile – це текстовий документ, що містить усі команди, які користувач може використовувати в командному рядку для створення образу.
У чому різниця між образами Docker та контейнерами Docker?
Образи Docker – це шаблони “лише для читання”, що містять вихідні коди, інструменти, бібліотеки, зовнішні залежності та інші файли, необхідні для успішної роботи будь-якої програми на будь-якій операційній системі чи платформі.
Контейнер Docker – це екземпляр образу Docker, що виконується.
Поясніть архітектуру Docker
Docker використовує архітектуру клієнт-сервер, що включає клієнт Docker, хост Docker та реєстр Docker.
Клієнт Docker використовує REST API та команди для взаємодії з сервером (Docker Daemon). Команди клієнта виконуються через інтерфейс командного рядка (CLI), наприклад:
docker build
docker pull
docker run
- Docker Host надає середовище для виконання та запуску програм. Він включає демон Docker, сховище, образи, контейнери та мережі.
- Docker Registry керує та зберігає образи Docker.
Хмарні платформи, що підтримують Docker
Платформи, що підтримують хостинг Docker:
Що таке Nagios?
Nagios – це інструмент для моніторингу усієї ІТ-інфраструктури, що гарантує належне функціонування бізнес-процесів, систем, сервісів та програм.
Як працює Nagios?
- Моніторинг. ІТ-спеціалісти налаштовують Nagios для моніторингу мережевих протоколів, системних показників, програм, мережевої інфраструктури, сервісів та серверів.
- Сповіщення. Nagios надсилає сповіщення про збої критичних компонентів. Сповіщення можуть надходити через SMS, спеціальний код або електронні листи.
- Реагування. ІТ-команда підтверджує сповіщення та вживає заходів.
- Звіти. Створюються звіти, що містять хронологічні записи сповіщень, збоїв, відповідей на попередження та подій для подальшого аналізу.
- Технічне обслуговування. Запланований простій дозволяє уникнути надсилання сповіщень під час технічного обслуговування.
Назвіть декілька плагінів Nagios
- Офіційні плагіни Nagios, розроблені та підтримувані офіційною командою.
- Спеціальні плагіни, розроблені окремими особами або компаніями для задоволення індивідуальних потреб.
- Плагіни спільноти, розроблені членами спільноти Nagios.
Поясніть віртуалізацію з Nagios
Nagios пропонує можливість моніторингу різноманітних показників на різних платформах віртуалізації. Nagios може працювати з такими платформами, як Xen, Amazon EC2, VMware та Microsoft Virtual PC.
Яким чином Nagios допомагає в моніторингу?
Nagios використовує агенти, такі як NRPE, check_mk або SNMP, для збору статистики на сервері та надсилання сповіщень, якщо показники перевищують задані межі.
Які номери портів використовує Nagios для моніторингу?
SNMP: порти 161 та 162.
Що таке Nagios Network Analyzer?
Nagios Network Analyzer – це програмне забезпечення для аналізу потокових даних, яке дозволяє користувачам оперативно виявляти аномальну поведінку, збої та загрози безпеці до того, як вони негативно вплинуть на бізнес-операції. Цей комерційний інструмент забезпечує глибоке розуміння мережевого трафіку та ІТ-інфраструктури.
Які змінні впливають на успадкування та рекурсію в Nagios?
- `name` – ім’я шаблону, що може успадковувати змінні/властивості об’єкта.
- `use` – вказує ім’я об’єкта шаблону, від якого потрібно успадкувати змінні/властивості.
- `register` – вказує, чи має ім’я об’єкта шаблону бути “зареєстрованим” в Nagios.
Що таке Puppet?
Puppet – це інструмент з відкритим вихідним кодом для керування конфігурацією та розгортання програмного забезпечення.
Що таке маніфест Puppet?
Маніфест Puppet – це файл, що містить код на мові конфігурації Puppet, що описує, як потрібно налаштовувати ресурси.
Що таке код Puppet?
Код Puppet є декларативним, тобто він описує бажаний стан системи, а не послідовність дій для його досягнення.
Що таке Chef?
Chef – це інструмент керування конфігурацією, що перетворює інфраструктуру на код. Цей інструмент орієнтований на написання коду замість виконання ручних дій.
Як працює Chef?
Робота Chef починається з визначення системними адміністраторами або розробниками завдань, що потребують автоматизації. Кулінарні книги та рецепти (невеликі програми, написані на спеціалізованій мові) створюються та тестуються за допомогою різних інструментів, таких як Test Kitchen, ChefSpec та Foodcritic.
Після успішного тестування кулінарні книги та рецепти розгортаються на сервері Chef за допомогою інструментів командного рядка `knife` та `chef`. Процес розгортання Chef включає сервер Chef, робочі станції та вузли. Користувачі можуть обирати з понад 3000 готових шаблонів кулінарних книг та налаштовувати їх відповідно до своїх потреб. Далі Chef автоматично виконує решту дій.
Підсумок
Згідно з даними Glassdoor, середня річна зарплата інженера DevOps у США становить $104 281. DevOps – це відносно нова спеціальність, але все більше компаній наймають DevOps-інженерів та пропонують різні курси для підготовки фахівців. У статті вище наведено приклади запитань, які можуть виникнути на співбесіді на посаду DevOps-інженера.
Для глибшого вивчення DevOps можна також скористатися онлайн-курсами.