Чому системні адміністратори повинні стати DevOps-інженерами

Чому системні адміністратори повинні стати DevOps-інженерами

Для навчання у житті немає кращого часу, ніж сьогодні.


На дворі 2019 рік і тема DevOps зараз актуальна, як ніколи. Кажуть, що дні системних адміністраторів минули, як минула епоха мейнфреймів. Але чи це так насправді?
Як це часто буває в ІТ, ситуація змінилася. З'явилася методологія DevOps, але вона може існувати без людини з навичками системного адміністратора, тобто без Ops.

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

Чому системні адміністратори повинні стати DevOps-інженерами

Але чи справді так страшно? Я б сказав, що не треба сприймати нестачу знань як якусь велику проблему. Це скоріше професійний виклик.

Web-scale-продукти засновані на Linux або іншому програмному забезпеченні з відкритим вихідним кодом, а на ринку можна знайти менше фахівців, здатних їх обслуговувати. Попит вже перевищив кількість професіоналів у цій галузі. У системного адміністратора не вдасться просто продовжувати працювати, не підвищуючи свій рівень кваліфікації. Він повинен мати навички автоматизації, щоб керувати безліччю серверів/вузлів, і добре розуміти принципи їх роботи, щоб вирішувати проблеми, що виникають.

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

Отже, як же системному адміністратору перейти від звичного підходу до нової концепції DevOps? Все як завжди: спочатку необхідно змінити мислення. Зовсім непросто відмовитися від підходу, який ви наслідували останні десять або двадцять років, і почати все робити по-новому, але це необхідно.

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

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

Чого вам може не вистачати як фахівця з Ops, так це навичок програмування. Зараз написання сценаріїв (скриптів), якими системні адміністратори користуються для автоматизованої установки патчів на сервері, керування файлами та обліковими записами, для усунення несправностей та складання документації, вже вважається застарілим. У відносно простих випадках сценарії, як і раніше, застосовуються, але концепція DevOps має на увазі рішення великомасштабних завдань, будь то впровадження, тестування, робота зі складання або розгортання.

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

Що робити? Щоб залишатися затребуваним фахівцем, потрібно набути актуальних навичок — освоїти як мінімум одну мову програмування, наприклад Python. Людині, яка професійно займається адмініструванням, це може здатися складним, оскільки він звик думати, що програмують лише розробники. Зовсім необов'язково ставати експертом, проте знання однієї з мов програмування (це може бути Python, Bash або навіть Powershell), безумовно, стане перевагою.

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

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

Але наскільки вірним є це твердження?

Системний адміністратор: один у полі воїн

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

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

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

Він також відповідатиме за оновлення апаратного забезпечення, перевірку та аналіз журналів, аудит безпеки, встановлення патчів на сервері, усунення несправностей, аналіз першопричин та автоматизацію – як правило, за допомогою сценаріїв PowerShell, Python або Bash. Один із прикладів використання сценаріїв — це керування обліковими записами користувачів та груп. Створення облікових записів користувачів та призначення дозволів – завдання надзвичайно стомлююче, оскільки користувачі з'являються та зникають майже щодня. Автоматизація за допомогою сценаріїв дозволяє вивільнити час для вирішення більш важливих інфраструктурних завдань, наприклад, для оновлення комутаторів і серверів та виконання інших проектів, що впливають на прибутковість компанії, в якій адміністратор працює (хоча і прийнято вважати, що IT-відділ не приносить дохід безпосередньо).

Завдання системного адміністратора — не марнувати час і економити гроші компанії будь-якими можливими способами. Іноді системні адміністратори працюють як члени великої команди, що поєднує, наприклад, адміністраторів Linux, Windows, баз даних, сховищ тощо. Робочий графік також буває різним. Наприклад, зміна в одній часовій зоні наприкінці дня передає справи наступній зміні в іншій часовій зоні, щоб процеси не зупинялися (follow-the-sun); або у працівників звичайний робочий день з 9 ранку до 5 вечора; або це робота в цілодобовому дата-центрі.

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

DevOps: розробка та обслуговування єдині

DevOps - Це свого роду філософія процесів розробки та обслуговування. Такий підхід у світі IT став справді новаторським.

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

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

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

Тема автоматизації стає дедалі актуальнішою. Як системні адміністратори, так і фахівці DevOps зацікавлені в оперативному масштабуванні, зниженні кількості помилок, а також швидкому пошуку та усуненні існуючих помилок. Таким чином, автоматизація - це поняття, де дві області сходяться. Системні адміністратори відповідають за такі хмарні послуги, як AWS, Azure та Google Cloud Platform. Вони повинні розуміти принципи безперервної інтеграції та доставки та те, як використовувати в роботі інструменти типу Дженкінс.

Крім того, системні адміністратори повинні застосовувати такі засоби налаштування та управління, як Неможливо, необхідні для паралельного розгортання XNUMX або XNUMX серверів.

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

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

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

Якщо ви системний адміністратор, то вам потрібно краще вивчити Git, зрозуміти, як будується керування версіями та запам'ятати найпоширеніші команди: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff та інші. Існує безліч онлайн-курсів та книг, які допоможуть вивчити цю тему з нуля та стати професіоналом із конкретними навичками. Є також чудові шпаргалки з командами GitТому зубрити їх все необов'язково, але чим більше ви користуєтеся Git, тим простіше вам буде.

Висновок

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

Джерело: habr.com

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