Що таке NoOps і як це вплине на DevOps-інженерів
Усім привіт, це Владислав Літовка, Engineering Director в Avenga. В айтішечці вже достатньо давно і встиг попрацювати на багатьох проєктах і різних позиціях. Останнім часом багато досліджував тему NoOps й вирішив поділитись своїми роздумами з вами, вельмишановна публіко.
Тож, чи зможе NoOps-концепція повністю усунути потребу в DevOps-інженерах під час розробки програмного забезпечення? Цілком можливо, що NoOps дозволить розробникам самостійно вирішувати всі питання, пов’язані з делівері програмного продукту. Проте розберімось детальніше у цій доволі дискусійній темі.
Що таке NoOps
NoOps — це концепція розробки та розгортання програмного забезпечення, в якій потреба у спеціалізованих операційних (Ops) командах та їх завданнях мінімізована, або ж і повністю відсутня. Термін «NoOps» походить від культури DevOps, яка наголошує на співпраці та комунікації між ops-інженерами та розробниками для оптимізації та автоматизації SDLC.
За NoOps-підходу розробники реалізовують багато задач, що зазвичай виконують DevOps-команди, наприклад, розгортання та моніторинг програм, управління інфраструктурою, а також забезпечення надійності та безпеки системи.
Головна ідея полягає в автоматизації якомога більшої кількості процесів (за умови, що це ефективно з точки зору витрат), зменшенні потреби у ручному втручанні та мінімізації ризику людської помилки.
Чи можна тепер обійтися без DevOps-спеціалістів
Може здатись, ніби NoOps означає, що операційні команди більше не потрібні, проте варто відзначити, що даний підхід все ще потребує експертних знань в таких питаннях як проєктування інфраструктури, кібербезпека та відповідність нормативним вимогам.
Відповідно, замість усунення операційних команд, NoOps має на меті зробити їх ефективнішими, звільнивши час для вирішення високорівневих завдань та стратегічних питань.
Як результат, цей підхід вимагає від розробників більшого досвіду в області інфраструктури, мереж, розгортання, моніторингу тощо. Принаймні, здається саме так з першого погляду.
Водночас еволюція розробки ПЗ завжди супроводжувалася потребою або бажанням спростити певні речі, інструменти та процеси. Тож як це відбувається, що розробникам тепер потрібно робити більше?
На практиці NoOps-підхід не означає, що розробники візьмуть на себе всі функції, які зазвичай виконують DevOps/SRE. Це означає, що команда DevOps розробить певний фундамент, задокументує та надасть його розробникам ПЗ.
Тобто впровадить набір практик та інструментів, які «ізолюють» команду розробки від інфраструктурного рівня та забезпечать її підтримку.
Приклади NoOps
Насправді NoOps концепція — це не щось абсолютно нове. Більшість з нас вже чули про подібні сервіси та платформи або навіть мали можливість ними скористатись.
Зараз я маю на увазі PaaS-рішення — Heroku. Використовуючи цю платформу, кожен може розгорнути своє програмне забезпечення в хмарі всього за кілька кліків, а для невеликого застосунку це може бути навіть безкоштовно.
Варто зазначити, що інші PaaS також можуть розглядатися як реалізація принципів NoOps, наприклад, Adobe Cloud для Magento. І хоча це рішення спрощує розгортання та управління інтернет-магазинами, воно не повною мірою відповідає чіткому визначенню NoOps-платформи.
Як правило, NoOps означає середовище, в якому розробники самостійно виконують більшість операційних задач з мінімальною участю операційних команд. І хоча Adobe Cloud для Magento абстрагує багато інфраструктурних моментів, воно все ще потребує участі системних адміністраторів та операційних команд у керуванні основною хмарною інфраструктурою та забезпеченні плавної роботи платформи.
Беручи це до уваги, можемо зробити висновок, що Heroku більше відповідає принципам NoOps. Ця платформа дозволяє розробникам фокусуватися на логіці застосунку та процесі розгортання без необхідності глибокого розуміння інфраструктури. Це дає змогу інженерам самостійно виконувати широкий спектр завдань, пов’язаних з розгортанням та управлінням програмним забезпеченням відповідно до принципів NoOps.
Ось ще кілька прикладів реалізацій NoOps, які тою чи іншою мірою можуть вважатись такими:
— DigitalOcean App Platform — це керована платформа як сервіс (PaaS), яка спрощує розгортання та масштабування застосунків. Розробники можуть завантажувати свій код на платформу, а DigitalOcean бере на себе питання створення необхідної інфраструктури, управління контейнеризованими розгортаннями, а також масштабування та балансування навантаження.
— Google App Engine повністю керована serverless платформа для розробки та розміщення вебзастосунків. Вона автоматично масштабує вам застосунок в залежності від трафіку і споживаних ресурсів.
Ми не можемо наразі впевнено стверджувати, що всі ці PaaS-рішення близькі до реалізації NoOps-підходу, оскільки в кожному конкретному випадку NoOps-концепцію реалізовано лише частково і всі ці рішення досі вимагають певних знань в DevOps-галузі.
Водночас великі організації вкладають значні кошти в подібні рішення, і саме тут на сцену виходить Platform Engineering. Вона не є повною реалізацією парадигми NoOps, це скоріше спосіб стандартизувати інструменти, процеси та підходи для спрощення їх використання та пов’язаних з ними витрат. І наші клієнти — не виключення.
До речі, нещодавно було опубліковано доволі цікаве відео від TechWorld with Nana про Platform Engineering, в ньому ви можете дізнатись більше про цю тему.
Висновок
NoOps-підхід не можна вважати руйнівником DevOps, його скоріше слід розглядати як черговий фреймворк, який став свого роду еволюцією DevOps або SRE.
З іншого боку, це вимагатиме від інженерів знань в питаннях, які раніше часто не входили до їхньої компетенції, а ось DevOps-інженери матимуть можливість сфокусуватись більше на своїх обовʼязках.
Також розробка NoOps-платформи сама собою є досить складним завданням, яке вимагатиме прийняття багатьох архітектурних рішень і розвʼязання складних задач.
Хто знає, як цей напрямок буде розвиватись в майбутньому? Діліться своїми думками та ідеями в коментарях.
25 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів