Гайд по DevOps для початківців

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

Гайд по DevOps для початківців

Багато чого відбулося з того часу, як термін DevOps закріпився в IT-світі. З огляду на те, що більшість екосистеми має відкритий вихідний код, важливо переглянути, чому почалося і що це означає кар'єри в IT.

Що таке DevOps

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

Слово "DevOps" є об'єднанням слів "розробка" (development) та "операції" (operations). DevOps допомагає збільшити швидкість доставки додатків та послуг. Це дозволяє організаціям ефективно обслуговувати своїх клієнтів та ставати більш конкурентоспроможними на ринку. Простіше кажучи, DevOps – це узгодженість між розробкою та ІТ-операціями з більш ефективною взаємодією та співпрацею.

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

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

Дзвінки для команди розробників

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

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

Проблеми, з якими стикається операційна група

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

  • Управління розподілом ресурсів зі зростанням попиту.
  • Обробка змін у дизайні чи налаштуваннях, необхідних для застосування у виробничому середовищі.
  • Діагностика та вирішення проблем, пов'язаних із виробництвом, після самостійного розгортання додатків.

Як DevOps вирішує проблеми розробки та операцій

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

  • Зменшити відсоток відмов при випуску нових релізів
  • Збільшити частоту розгортання
  • Досягти швидше середнього часу на відновлення у разі виходу нового релізу програми.
  • Скоротити час на виправлення

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

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

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

Гайд по DevOps для початківців

Протистояння DevOps, Agile та традиційного IT

DevOps часто обговорюється у зв'язку з іншими ІТ-практиками, зокрема, гнучкою та водопадною ІТ-інфраструктурою.

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

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

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

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

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

Оперативна група не має уявлення про прогрес команди розробників. Також вона розробляє план моніторингу на основі власних уявлень.

Оперативна група повністю обізнана з прогресом, досягнутим командою розробників. Вона також взаємодіє з командою розробників і вони спільно розробляють план моніторингу, який задовольняє IT та потреби бізнесу. Вони також використовують інструменти моніторингу продуктивності програм (APM).

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

Життєвий цикл DevOps

DevOps передбачає прийняття певних загальноприйнятих практик.

Безперервне планування

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

Спільний розвиток

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

Безперервне тестування

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

Безперервні випуск та розгортання

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

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

Безперервний моніторинг

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

Постійний зворотний зв'язок та оптимізація

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

Гайд по DevOps для початківців

Переваги DevOps

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

Важливими перевагами DevOps є:

  • Передбачуваність: DevOps пропонує значно нижчу частоту відмов під час випуску нових релізів.
  • Підтримуваність: DevOps забезпечує легке відновлення у разі збоїв у новому релізі або відключення програми.
  • Відтворюваність: Система контролю версій збірки або коду дозволяє відновлювати попередні версії в міру необхідності.
  • Більш висока якість: Вирішення проблем з інфраструктурою покращує якість розробки програм.
  • Час виходу ринку: Оптимізація доставки програмного забезпечення скорочує час виходу ринок на 50%.
  • Зниження ризику: Забезпечення безпеки у життєвому циклі програмного забезпечення знижує кількість дефектів протягом усього життєвого циклу.
  • Економічна ефективність: Прагнення економічної ефективності розробки програмного забезпечення подобається вищому керівництву.
  • Стійкість: Програмна система стабільніша, безпечніша, а зміни можна перевіряти.
  • Більша кодова база розбивається на керовані частини: DevOps заснований на гнучких методах розробки, які дозволяють розбивати велику кодову базу на дрібніші та керовані частини.

Принципи DevOps

p align="justify"> Прийняття DevOps породило кілька принципів, які еволюціонували (і продовжують еволюціонувати). Більшість постачальників рішень розробили власні модифікації різних методик. Всі ці принципи ґрунтуються на цілісному підході до DevOps, і організації будь-якого розміру можуть використовувати їх.

Розробляйте та тестуйте в середовищі, схожому на виробниче

Суть полягає в тому, щоб дозволити командам розробників та фахівців з контролю якості (QA) розробляти та тестувати системи, які поводяться як виробничі системи, щоб вони могли бачити, як додаток поводиться і працює задовго до того, як він буде готовий до розгортання .

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

Розгортання із відтворюваними, надійними процесами

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

Моніторинг та перевірка якості роботи

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

Удосконалення циклів зворотного зв'язку

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

DEV

  • Планування: Kanboard, Wekan та інші альтернативи Trello; GitLab, Tuleap, Redmine та інші альтернативи JIRA; Mattermost, Roit.im, IRC та інші альтернативи Slack.
  • Написання коду: Git, Gerrit, Bugzilla; Jenkins та інші інструменти з відкритим вихідним кодом для CI/CD
  • збірка: Apache Maven, Gradle, Apache Ant, Packer
  • тести: JUnit, Cucumber, Selenium, Apache JMeter

Ops

  • Випуск, розгортання, операції: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Моніторинг: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, та інші, покриті у цьому посібнику

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

На закінчення

DevOps – це все більш популярна методологія, метою якої є об'єднання розробників та операторів у єдине ціле. Вона унікальна, відрізняється від традиційних IT-операцій та доповнює Agile (але не є такою ж гнучкою).

Гайд по DevOps для початківців

Дізнайтеся подробиці, як отримати затребувану професію з нуля або Level Up за навичками та зарплатою, пройшовши платні онлайн-курси SkillFactory:

ще курси

Корисне

Джерело: habr.com

Додати коментар або відгук