Що таке DevOps? | nt.ua

Що таке DevOps?

Серпень 31, 2022 devops devops інженер
Що таке DevOps?

DEVelopment OPeration Automation

                                        ↙                        ↘

DEV — development

Це люди, які пишуть програму

OPS — operation

Ті, хто її налаштовують, підготовлюють до запуску і відповідають за те, щоб вона безперебійно працювала

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

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

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

Тут з’являються DEVELOPMENT OPERATION ENGINEER.

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

  DEVELOPMENT OPERATION ENGINEER

Що робить Devops?

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

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

  • Робота з кодом (доставка, збірка, тестування та розгортання);
  • Розгортання інфраструктури коду;
  • Автоматизація всіх можливих процесів;
  • Робота з хмарними сервісами та зв’язки між ними;
  • Моніторинг процесів;
  • Безпека всього проєкту.

Ринок праці

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

Мінуси роботи

Це робота 24/7. Сервери іноді лягають, це може статися і вночі, тому ви повинні весь час бути на зв’язку та мати змогу розв'язати проблему, але основна задача DevOps інженерів не допускати таких проблем.

Плюси роботи

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

Автоматизація всього — основний принцип DevOps

Автоматизація DevOps

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

Основна мета автоматизації

  • Зменшення часу на виконання роботи;
  • Зниження помилок, спричинених людським фактором;
  • Оптимізація кількості працівників;
  • Підвищення продуктивності роботи.

Способи автоматизації

  1. Безперервна інтеграція/безперервна доставка (CI/CD)

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

  1. Тестування програмного забезпечення

Це автоматизація всіх можливих напрямків тестувань:

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

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

  1. Створення сценаріїв
  • Підготуйте цільове середовище, можливо, встановивши та налаштувавши будь-яке необхідне програмне забезпечення або запустивши віртуальний хост із попередньо підготовленого образу в хмарному провайдері, такому як Google Cloud.
  • Розгорніть пакети.
  • Виконуйте будь-які завдання, пов’язані з розгортанням, наприклад запуск сценаріїв міграції бази даних.
  • Виконайте будь-яку необхідну конфігурацію.
  • Виконайте тест розгортання, щоб переконатися, що будь-які необхідні зовнішні служби доступні та що система функціонує.

  Способи автоматизації

Як автоматизувати?

  1. Зосередьтеся на інструментах, які будуть інтегруватися з іншими системами

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

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

  1. Зосередьтеся на багаторазовому коді та стратегіях

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

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

  1. Надайте пріоритет інструментам з відкритим кодом

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

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

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

DevOps-и мають бути максимально адаптивними, а не працювати лише в певних середовищах. Якщо ваш інструмент тестування перевіряє лише Python, то це ще великий мінус, бо надалі може знадобитись перехід на JavaScript.

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

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

Висновок

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

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

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

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