DevOps простими словами: як IT-команді робити важливе і заробляти більше

Стаття написана у співавторстві з Андрієм Бауліним, Head of DevOps продуктової IT-компаніїMegogo .

Розбираємося, чому спроби «впровадження DevOps» не мають сенсу без конкретної мети і як оптимізувати роботу IT-компанії, коли мета є.

В різних технічних колективах можна зустріти різні формулювання DevOps і їх навичок. Більшість зводиться до того, що це якийсь чоловік, який перебуває «в одній кімнаті» з development і IT operations (іноді ще QA) і погоджує їх роботу. Звичайно, таке визначення дуже і дуже умовно.

У технологічних стартапів з малою кількістю людей не програмуючий девопс — нонсенс. Навіщо він там? По суті, в таких командах ops — маленькі літери в кінці, а DEV — великі на початку. В стійких командах середнього розміру OPS набирають обертів, а девов і так багато, тому «питома вага» літер помітно змінюється.

Ми ніколи не ставили перед собою мету впровадити DevOps» або «найняти девопсов». Тому що — ну, хто це? Чому вони повинні зробити нас краще всіх? Чим вони відрізняються від тих людей-оркестрів, які в компанії і так було завжди? Ми створювали команду мотивованих операціоністів, які знають і поглиблюються в логіку продукту, працюють пліч-о-пліч з девелоперами і тестерами. І потім констатували, що багато в глобальному IT-співтовариство називають таких людей девопсами.

Навіщо нам DevOps

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

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

Нам не потрібні люди з титулом DevOps і умінням міркувати про Kubernetes 20 хвилин підряд, якщо вони не вміють пояснити, як TCP-пакет потрапляє з однієї ОС на іншу.

Ми продуктова компанія, і все у нас крутиться навколо продукту. У нас ніколи не було «системних адміністраторів», тому що не було таких систем, які мали б сенс і цінність без продукту. На початку 2010-х, коли ми виходили на ринок, в продуктових компаніях сисадмінами були люди, які чудово розуміють як бізнес-логіку своїх продуктів, так і складність їх масової постачання і обслуговування в продакшені. Такі ж люди зараз стають хорошими девопсами: розуміють, що, як і для чого робити.

Ми не ставили перед собою мету впровадити DevOps». Замість цього поставили собі питання: що нам потрібно в operations і хто це може реалізувати. Відповідь вийшов з трьох частин: люди (команда), підхід до роботи IT operations і середовище.

Що (і хто) робить команду ефективної

Для початку ми описали людей, яких хочемо бачити в колективі: їх hard і soft skills, майндсет і роботу всієї команди. Ось ознаки, які вийшло виділити:

Якими характеристиками повинен володіти IT operations

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

В якому середовищі люди працюють ефективно

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

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

DevOps-інструменти — це абстракція

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

Наприклад, в інтернет-статтях у переліку DevOps-інструментів часто згадується Jenkins. Так, Jenkins з'явився вже в часи DevOps. Але раніше його спокійно собі налаштовували старі добрі сисадміни.

В інтернеті повно статей на тему «у компанії використовують Y». Але вас не повинно цікавити той факт, що такий-то бізнес використовує Prometheus, Grafana або щось ще. Вам повинно бути цікаво, наскільки дана компанія схожа на вашу, які завдання вирішує і чому саме цими рішеннями. Потрібно дивитися, з чого вибирали довго використовують, ніж ще з подібних продуктів користуються, наскільки глибоко впровадження. Може, вже збираються відмовлятися від цього інструменту. Загалом, вам потрібні дрібниці. А назви самих продуктів не потрібні. Сформулюйте конкретну проблему і шукайте, які інструменти її вирішують.

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

Які висновки можна зробити з усього цього

Ніякої «інструкції» по впровадженню DevOps не існує. Більш того, вона не має сенсу. Немає єдиної системи, за якою потрібно організовувати DevOps в компанії. У нас, наприклад, є «девопсы девопсов» — якась core-команда, яка розробляє загальні для всіх команд речі. Але в цілому це віртуальна структура: системні завдання і субпроекти кочують від людини до людини. Немає окремо техсаппорта і девопсов. У Megogo девопсы не втратили ITIL-класифікації сисадмінів, як L3 техсаппорта.

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

Ще раз: немає ніякого «покрокового плану впровадження DevOps». Але якщо все-таки спробувати сформулювати загальні поради, то їх всього два:

  1. Не бійтеся переробляти. Дуже велика помилка — робити переформатування роботи у всьому і завжди. Бо перероблення — це, по суті, є життя.
  2. Тверезо оцінюйте ціну помилок. Часто зробити помилку дешевше, ніж не допустити її.

Опубліковано: 15/05/19 @ 10:00
Розділ Різне

Рекомендуємо:

Із зони комфорту на європейську конференцію: як я підготувався за 28 днів і виступив вперше
Senior Research Analyst в IBM Олександр Романко: «Аналіз великих даних буде популярними ще років 10 мінімум"
C++ дайджест #15: геолокація з Qt, ACCU 2019
PM дайджест #18: порівняння ефективності методологій, фреймворк AgileLite, перехід з розробки PM
7 причин, чому продукти не стають успішними на ринку. Приклади Nokia, IBM, Apple та інших компаній