Що таке NoOps і як це вплине на DevOps-інженерів

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до 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-платформи сама собою є досить складним завданням, яке вимагатиме прийняття багатьох архітектурних рішень і розвʼязання складних задач.

Хто знає, як цей напрямок буде розвиватись в майбутньому? Діліться своїми думками та ідеями в коментарях.

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Девопс це методологія, а не хіпстер в светрі з фрапачіно. А як реалізовувати цю методологію і її дотримуватись це питання відкрите.

Раніше, років 10 тому і раніше, все було так як ви пишете: були інженери які писали код, тестили його і потім це все деплоїли( часто просто заливали бінарник на сервер клієнта). Все було просто, зрозуміло і лампово.

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

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

Особисто я не проти такого підходу, тому що він перетворить ІТшників на більш універсальних інженерів, але з іншого боку, ми ще вище задираємо і без того високу планку як входу в ІТ так і просування по джун-мідл-сініор драбині.

та так само, як no-code на розробників — ніяк. всі ці PaaS часто виходять занадто дорогими і починаєш шукати класичні рішення, де потрібен девопс

Міняємо виділеного девопса на частку часу найбородатішого в команді.
+ може пройти з простішими проектами
+ найбородатішому це може подобатися

— при більш складних проектах можливі проблеми, при збільшенні складності в процесі розробки — людина/тіма може стати потрібною, можливо він муситиме щось перероблювати
— бас фактор на найбородатішому
— найбородатіший може вигорати

«Люблю» коли компанії починають витрачати час та грощі на навчання розробників інфраструктурним питанням. Це насправді «круто» — бо через певний час стаються дива, на мій особистий досвід два дива
— Розробники починають дійсно вчити багато чого типу terraform, kubernetes, aws etc і з часом їх це реально починає нервувати і люди або покидають компанію, або разом наполягають на тому, що будь якою автоматизацією має займатись окремий спеціаліст. На той час як до такого доходить, в інфраструктурі повний хаос, безлад і щось зробити — це час, грощі і високий рейт для хмарного інжинера.
— Хтось один з лідів розробників займається певний час, потів все повертається до п1

В обох випадках для гарного спеца — це велике поле роботи і доствіду за гарні грощі.

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

PS добре, додам третій варіант — про який чув, але особисто не бачив, це коли всі розробники самостійно все роблять в умовному Амазоні, юзають лише native sloution + best practice певного хмарного провайдера і несуть відповідальність за всю частину свого коду, його роботу, деплоймент тощо, але навіть в ткаих компаніях інженери займаються своїми справами.

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

Згоден, не може вважатись руйнівним і так — це чергова евролюція, як на мене компаніії ніж підходів DevOps/SRE.

PPS за багато років в індустрії (майже 20 років) мене вже не ображають, але все одно неприємне відчуття залишається, коли знову і знову ідуть розмови що сісадміни, автоматизатори, девопси — це витратна стаття на проекті і їх можна замінити девами, все одно з часом іде повернення до того, що перше рішення було помилковим, а розгрібати все одно нам

NoOps було б добре. Скоріше дозволило б вирішувати питання.

Як на мене ШІ мав би взагалі нівелювати позицію девопса, там просто багато чого треба знати, а так крок вліво, ввправо не особливо зробиш як у розробці як на мене.

То саме що буде з вашою nosql. Хіба це все буде на nocode. І ще якщо nomoney то взагалі успіх.

Якщо долати нерозуміння аналогіями, то більш інтуітивно зрозумілою буде будівництво. Є будівники будівель (розробники додатків), а є будівники дорог (девопси).

У сталій економіці, як то Німеччина у 2021 році будівельники заробили 145 млрд Евро, а шляхобудівники 17 млрд Евро. Працевлаштування 960 тис проти 94 тис осіб. Тобто, за професійною самовизначеністю приблизно 1:10, а за поділенням доходу приблизно 1:9. Тобто пересічний шляхобудівник має понад 10% додаткового прибутку. Але, якщо розгядати на атомарному рівні, то пересічний шляхобудівник менш забезпечений. Переважна кількість осіб — різноробочі з низьким рейтом. Шалені кошти йдуть на будматеріали. Маленькі фірми випрацьовують 0.65, середні 0.8, великі 1.54. Тобто продуктивність праці стрімко зростає за розміром шляхобудівної компанії, що еквівалентно росту проектів.

Якщо інтерпретувати результати то можна сказати, що noknowledge праця схожа на будівлю під’їзних шляхів до будинків, сходів та іншої прибудинкової інфраструктури. Вона виконується або найменш професійними будівниками (noOps), або окремими малими підрядниками (devOps). Вимоги до таких шляхів нізьки, тому малі підрядники не дуже освідченні й майже вдвічі дешевші за середні показники. Зріст навантаження на дорогу (трафік) та складності проекту (нова інфраструктура з унікальними обставинами та вимогами) потребує бодай частку досвідчених виконавців (SRE). Якщо припустити, що у великих компаніях досвідчені з недосвідченими змішуються у пропорції 1:10, то кваліфіковані фахівці інфраструктурних рішень мають заробляти приблизно х8 за середні показники.

Тобто розподіл someOps в першу чергу за складністю вимог та потреби, щоб то все довго й надійно працювало. Якщо розлусканий драйввей через рік нікого не бентежить, то можна поOps-іти.

Мені налийте те саме що ☝️джентельмен випиває.

А що буде з проектом через пару років активного розвитку у випадку NoOps ?
Це ж так само як найняти архітектора на 2-3 місяці а потім нехай розробники продовжують. Я вважаю що кожен має бути спеціалістом у своїй сфері і нормальний менеджмент має усвідомлювати складність сучасних проектів і особливо їх гнучкість та адаптивність. Не можна просто взяти і набрати 100 розробників в надії що вони зроблять все якісно і з масштабуванням. Може на якихось маленьких і короткострокових проектах дійсно непотрібні архітектори і девопси. Але на середніх і великих проектах команда має бути різностоння і складатись з спеціалістів різних напрямків. Це ж як в армії, не можуть всі бути тільки піхотою або операторами дронів.

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

Мінімум +50% девопсової зарплати до поточної зарплати розробника і можна про щось говорити :)

є ж профіль кандидата — Cloud Engineer =)

Мінімум +50% девопсової зарплати до поточної зарплати розробника і можна про щось говорити :)

Ви вважаєте, що за те щоб написати скрипт, що збілдить ваш код та розгорне ресурси щоб захостити десь вам чесно є за що доплачувати овер зарплати программіста?

Так, і я так вважаю

Звісно, оскільки потрібно враховувати, що:

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

В результаті девопси ганяють чаї або беруть другий фултайм/парт-тайм, а розробник вигорає. Тому все вірно — мінімум 50% від їхньої зарплати і можна говорити про котрісь базові девопсові речі, інакше важко повірити, що людина з рівнем айк"ю вище кімнатної температури на таке погодиться, особливо в аутсорсі.

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

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

На практиці NoOps-підхід не означає, що розробники візьмуть на себе всі функції, які зазвичай виконують DevOps/SRE. Це означає, що команда DevOps розробить певний фундамент, задокументує та надасть його розробникам ПЗ.

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

а) Це ідеологічно не являється відповідальністю розробника по замовчуванню

э таке питання дійсно, а що являється відповідальністю розробника?

Я просто не зрозумів як ви продаєте себе якщо у вашу ставку не входить навіть автоматизована поставка/інсталяція кастомеру вашого, по ідеї, робочого коду і ви за це ще доп гроші хочете. Це в Soft-servе є попит на такі послуги?:) Я розумію що у вас є девопси скоріш за все, але я сильно сумніваюсь, що якщо до тебе прийдуть і скажуть — напиши мені bash скрипт що запаблішить код кудись і збере все до купи, ви зможете аргументовано пояснити що це не ваша робота(навіть на галєрі типу Soft-serve).

ну девопса наймають бо він дійсно зробить це швидше

Девопс взагалі займається купою речей в сучасному світі, так як за останні 20 років технології розрослись та ускладнились. Окрім девопсів ще взагалі є купу ролей з суфіксом *ops у великих компаніях.

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

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

э таке питання дійсно, а що являється відповідальністю розробника?

Те, що прописано в договорі. Якщо у вакансії шукають «Developer with DevOps experience» — будь ласка. Може хтось і клюне на позицію, де замовник чи менджемент вирішив зекономити гроші на окремому інженері, люди всякі бувають.

Я просто не зрозумів як ви продаєте себе якщо у вашу ставку не входить навіть автоматизована поставка/інсталяція кастомеру вашого, по ідеї, робочого коду
...
Я розумію що у вас є девопси скоріш за все, але я сильно сумніваюсь, що якщо до тебе прийдуть і скажуть — напиши мені bash скрипт що запаблішить код кудись і збере все до купи, ви зможете аргументовано пояснити що це не ваша робота(навіть на галєрі типу Soft-serve).

Ваш коментар наче з якогось 2005-го. Я переважно працював з великими замовниками і один раз в Інтеліасі девопси просто комітали свої хелм чарти в репозиторій мікро-сервісу, а розробник максимум що робив, це копіював .gitlab-ci.yml в новий мікросервіс з існуючого та міняв назви змінних, все.

Загалом такий скрипт буде або писати DevOps (Development + Operations) або у великих компаніях є так звані Release Engineers (Build Engineers) котрі відповідають за написання таких скриптів чи на баші, чи на будь чому іншому в контексті дженкінс пайплайнів чи будь чого іншого, що буде збирати код в котрісь пакети під різні дистрибутиви лінукса (олдскул), чи просто білдити, тестити та деплоїти в клауд чи on-prem.

Розробник, звісно, кооперує і надає девопсу (чи комусь іншому) всю необхідну для нього інформацію.

Окрім девопсів ще взагалі є купу ролей з суфіксом *ops у великих компаніях.

Я думаю що для нашого кейса це зовсім не суттєво, не думаю що девопс у великій компанії відмовится робити пайплайни якщо його попросят щоб коміти в бранчі тригерили CI/CD, або додати SAST/DAST щоб сканив артефакти, поки таку роль не відкрили у компанії.

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

Працюють абсолютно нормально і це норма для індустрії особливо якщо ви хочите розвиватись і промоутитись по sde грейдам, хоча звичано робота це більш натуральна для девопса. І першочергово ми розмовляли взагалі про розгортання кода, а не iac, а це переважно білд інструментарій специфічний для сбірки і дуже часто platform specific і прив’язаний до конкретного SDK(саме тому його куди більш натурально знати саме девелоперу, а ніж девопсу). btw недавно як раз читав в твіті одного distinguished engineer з технологічних фангів стосовно того, що якщо ви не проводите 50% свого часу в yml, то ви не робите чогось cloud native взагалі. Можна напевно сказати, що це стосується в першу чергу девелоперів саме, адже очевидно що навряд це можна сприймати як рекоммендацію якщо ви в cloud, беріть девопсів і девелоперів навпіл.

Загалом такий скрипт буде або писати DevOps (Development + Operations) або у великих компаніях є так звані Release Engineers (Build Engineers) котрі відповідають за написання таких скриптів чи на баші, чи на будь чому іншому в контексті дженкінс пайплайнів чи будь чого іншого, що буде збирати код в котрісь пакети під різні дистрибутиви лінукса (олдскул), чи просто білдити, тестити та деплоїти в клауд чи on-prem.

Release engineers це така збірна солянка в яку кидають частіше навіть мануальщиків і менеджерів, і ніж автоматизаторами. А от девелопери сидять і пишуть скрипти, готують різні xml специфікації, якщо треба — беруть бібліотеки що гарно це інкапсулюють навколо якось більш просто api і готовлять сбірку свого коду. Те ще ви нічого крім кубера не бачили де все на готових helm чатрах і не впевнений, що робили колись dockerfile хоч якись без девопсів, скоріше за все вказує на вашу обмежену проф пригодність — інакше я не уявляю як ви дебажите свій код на контейнерах, щось там діагностуєте коли до вас приходить баг репорт де необхідно провести інтеграційне тестування.

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

Я, наприклад, працював на Cisco і дуже добре знаю, хто такі Release Engineers і що вони там робили, деякі навіть сиділи біля мене ;)

Те ще ви нічого крім кубера не бачили де все на готових helm чатрах і не впевнений, що робили колись dockerfile хоч якись без девопсів, скоріше за все вказує на вашу обмежену проф пригодність

Можете зайти в мій профіль, тицьнути на Лінкедін та ГітХаб та глянути, що я бачив та робив. Розробник пише докерфайл та докер-компоуз, решта залежить від процесів на проекті чи в компанії і вони, звісно та беззаперечно можуть відрізнятись.

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

Я, наприклад, працював на Cisco і дуже добре знаю, хто такі Release Engineers і що вони там робили, деякі навіть сиділи біля мене ;)

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

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

Ваша постановка питання виглядає для мене трохи наївною, якщо у вас дійсно я серйозний досвід комерційнох розробки — що ви можете прийти і просто попросити надбавку к зарплаті(без пропорційного збільшення відпрацюваних людино-годин), якщо вам дадуть готовий фреймворк для розгортання вашого коду і попросять автоматизувати його розгортання і супутньої інфраструктури\моніторингу.

Авжеж, бо це те саме як я буду писати умовний Rest API на python, в той час — як це завдання для розробника.
Ну і моє улюблене

за те щоб написати скрипт

цей вислів надає мені думку, що ви більше за деплоймент WordPress не стикались.
Доплата має бути за те, що у тебе є знання — яких немає у 90% розробників.

Привіт, дякую за статтю
На мою думку noOps може існувати у вигляді платформ, накшталт aws lambda, elastic beanstalk. Тільки проаналізувавши ці опції, що насправді дійсно мінімізують витрати на власних девопсів — такі платформи мають більшу ціну у використанні. Також вони менш гнучкі.
Тобто, по суті, ми тепер беремо в оренду не тільки «сервер» а ще і девопсів що ними займаються, зменшивши витрати на своїх власних.
Має свою нішу та погано маштабується якщо є такі задачі у продукту — тяжка кастомізація при автоматизованій інфраструктурі.
При впровадженні AI і дорослішанні моделей я думаю ніша буде більшою, і може з часом почне покривати потреби не тільки малих продуктів а і чогось більш складного.

я думав, чи додавати AWS lambda до списку, але все ж таки вирішив не робити цього.
Причиною для того стало те, що самої AWS Lambda, як сервіс, — не достатньо, додається досить багато обвʼязки для її повноцінною роботи(vpc, policy, api gateway, etc). Є, звісно, інструменти, які спрощують розгортання-менеджмент(той самий serverless framework), але тим не менш, потрібне досить грунтовне розуміння AWS в цілому. Власне, тому мені як приклад дуже подобається Heroku, в першу чергу своєю простотою і можливостями out of the box. Хоча, звісно, це дуже дискусійне питання.

Підписатись на коментарі