Введення в DevOps для початківців

Що таке DevOps: Детальний погляд

Термін “DevOps” набув широкої популярності, але його значення може варіюватися залежно від контексту та людини.

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

Звідки походить DevOps

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

Можливо, вам цікаво, що ж таке гнучка розробка програмного забезпечення?

Гнучка розробка – це загальне поняття, що об’єднує кілька ітеративних і поетапних методологій розробки. Серед найпопулярніших гнучких методів можна виділити Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development та Extreme Programming (XP).

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

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

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

Які проблеми вирішує DevOps

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

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

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

Цілі DevOps

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

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

Типовий сценарій DevOps

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

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

Різні етапи розвитку DevOps

Існує кілька етапів розвитку DevOps. Ось ключові фази, про які вам слід знати.

“Водоспадна” модель розробки

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

Внесення такої кількості змін займало кілька місяців. Цей процес був неефективним.

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

Безперервна інтеграція (CI) – це практика швидкого об’єднання нещодавно розробленого коду з основною гілкою, що готується до випуску. Ця практика допомагає значно заощадити час під час випуску коду.

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

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

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

Безперервна доставка (CD) – це розширення безперервної інтеграції та другий етап розвитку DevOps.

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

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

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

Безперервне розгортання (CD) – це подальший розвиток безперервної доставки. Ця практика дозволяє нам розгортати оновлення без ручного втручання.

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

Невелика кількість компаній, таких як Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, Google та інші, використовують безперервне розгортання.

Цінність DevOps

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

Культура DevOps

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

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

Інструменти DevOps

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

Давайте розглянемо деякі популярні інструменти та практики.

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

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse – це одні з найпопулярніших інструментів репозиторію коду.

Сервер збірки – це інструмент автоматизації, який використовується для компіляції вихідного коду в виконуваний. Jenkins, SonarQube та Artifactory є одними з найпопулярніших інструментів для серверів збірки.

Керування конфігурацією – Puppet, Chef, Ansible, SaltStack, Run Deck тощо допомагають керувати конфігурацією додатків та інфраструктури, забезпечуючи узгодженість між різними середовищами.

Віртуальна інфраструктура – AWS, GCP та Azure є трьома провідними публічними хмарними провайдерами, які пропонують майже всі види інфраструктурних послуг. Вони надають API, що дозволяє створювати інфраструктуру та керувати нею як кодом.

Висновок

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

Автор: Payal Goyal