Від SysAdmin до DevOps: частина 1. Як і навіщо варто змінюватись

26 червня
Х’юґо Берначеа, Senior Developer у DataArt
Від SysAdmin до DevOps: частина 1. Як і навіщо варто змінюватись
Очевидно, що DevOps сьогодні є гарячою темою в IT-колах. У статті я розповім про переваги та можливості цієї методології, про інструменти, задіяні в її розгортанні.

ЧОМУ DEVOPS?

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

Процес прийняття нових методологій DevOps тягне за собою зміну вашого мислення та здобуття нового набору навичок. Сюди можна віднести і спроби знайти можливості автоматизації для кожної задачі. Нелегко змінити те, як ми працювали протягом 10 або 20 років. Але мені здається, це необхідно чи навіть обов'язково.

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

Системний адміністратор може не володіти знаннями у сфері програмування чи навичками кодування. Яким у цьому випадку може бути розв’зання проблеми? Вивчення хоча б однієї мови програмування. Можливо, нелегко зневіритись, що кодування — лише для розробників. Необов'язково отримувати професійні знання у сфері кодування, але, безумовно, вміння писати код було б корисним. Для цього можна пройти різні безкоштовні курси, наприклад, тут.

Я вмію працювати з PowerShell і наразі вивчаю Python. Останній, схоже, є більш гнучким і рідним для Linux, а PowerShell краще інтегрований у Windows і .NET-фреймворк. Але це лише особистий досвід.

DevOps image

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

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

ОГЛЯД КОНЦЕПЦІЙ

  • DevOps — це набір практик, процесів та інструментів для розробки ПЗ, які поєднують розробку ПЗ (Dev) і IT-операції (Ops), що спрощують життєвий цикл розробки.
  • DevOps відіграє дуже важливу роль для команд із розробки ПЗ у забезпеченні автоматизації створення, тестування та запуску автоматизації, так званої безперервної інтеграції (CONTINUOUS INTEGRATION, CI), безперервного тестування (Continuous Testing, CT) та безперервної доставки (Continuous Delivery, CD).
  • DevOps має на увазі роботу з циклом доставки, зокрема планування, розробку, тестування, розгортання, запуск і моніторинг за активного сприяння різних членів групи.
DevOps image
  • Зазвичай DevOps називають пайплайном з посиланням на лінійний робочий процес, який іде від тестової збірки до запуску. Пайплайн показує загальну картину застосування, від контролю джерела до виробництва, причому акцент робиться не на безперервну інтеграцію, а на безперервну доставку. Компанії витрачають багато часу на розуміння автоматизації всього процесу під час розробки програмного забезпечення.

ПОШУК МОЖЛИВОСТЕЙ ДЛЯ АВТОМАТИЗАЦІЇ

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

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

РОЗРОБКА Й ОПЕРАЦІЇ ЯК ЄДИНЕ ЦІЛЕ

DevOps розглядається як підхід, відповідно до якого виконуються задачі з розробки (Dev) і IT-операції (Ops). Звісно, такий підхід — величезна зміна в робочому процесі: під егідою DevOps на одному боці коридору знаходиться команда розробників ПЗ, на іншому — команда IT-операторів. Імовірно, тут також зберуться команди управління продуктом, контролю якості та UX-дизайну. Всі команди об'єднують сили для ефективної оптимізації та стабілізації створення нових додатків і оновлення коду для підтримки та поліпшення всього бізнесу.

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

ВІД SYSADMIN ДО DEVOPS

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

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

Системні адміністратори відповідають за хмарні сервіси: AWS, Azure і Google Cloud Platform. Вони мають розуміти пайплайни CI/CD і знати, як управляти ними за допомогою Jenkins. Ці концепції включають безперервну інтеграцію, безперервний розподіл і безперервне розгортання.

DevOps image

До того ж системні адміністратори мають використовувати інструменти налаштування та пошуку, такі як Ansible, що використовується для одночасної роботи 10 або 20 серверів. Мається на увазі підхід “Інфраструктура як код”: ПЗ — це все, і все — це ПЗ. По суті, необхідно вийти на певний рівень переосмислення, щоб наступний співробітник краще підходив на посаду. Системні адміністратори приходять з операційної сторони, їм потрібно навчитись ефективно працювати разом з розробниками, і навпаки. Очевидно, дві голови краще, ніж одна.

Остання важлива частина головоломки — Git. Традиційно Git не був одним з повсякденних обов'язків сисадміна. Ця система управління версіями широко використовується командами розробників ПЗ: DevOps, командами розробників, Agile-командами тощо. Якщо ви залучені у процес розробки життєвого циклу ПЗ, безумовно, ви працюєте з Git.

Системний адміністратор має удосконалювати свої навички роботи з Git, розуміти управління версіями та вчити основні команди: git status, git commit -m, git add, git pull, git push тощо. Існує безліч онлайн-курсів. Я рекомендую цей — він досить хороший, інтерактивний і простий.

Крім того, можна знайти шпаргалки для Git, тож необов'язково вивчати кожну команду; але чим більше їх використовуєш, тим більше пам'ятаєш. Microsoft Visual Studio Code (як альтернатива Notepad++) — безкоштовний інструмент, що дозволяє виконувати команди Git безпосередньо з середовища Visual Studio Code.

Ansible — відмінний інструмент пошуку для множинних серверів, який дозволяє автоматизувати настройку та пошук, написання плейбуків у форматі yaml.

DevOps image

Ansible дозволяє створити нову, цілком автоматизовану середу високої доступності у хмарі. Немає необхідності входити в Azure, GCP або AWS.

ВИСНОВОК

DevOps image

ПАРА СЛІВ НАОСТАНОК

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

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

Який би інструмент ви не вибрали, він перетворить вас на ефективного професіонала в будь-якій компанії.

Джерела: