Какво е DevOps (и какво не е)?

Какво е DevOps (и какво не е)?

avatar Ekaterina Temelkova 6 минути
Какво е DevOps (и какво не е)?

Приятели, във връзка с практическия курс "DevOps Basics - октомври 2017", който стартира след броени дни, сме ви приготвили интересно четиво, в което отговаряме на двата въпроса - какво е и какво не е DevOps. 

Какво е DevOps?

DevOps (съкратено съчетание от "Development" и "Operations" - двата основни типа дейности при производството и поддръжката на даден продукт или система) е гъвкава методология и практика, която има за цел да унифицира софтуерната разработка и софтуерните операции. Основната характеристика на DevOps се изразява в подкрепа на процеса на автоматизация и съблюдаване на всяка една стъпка в процеса на софтуерна разработка - от интеграция, тестване и пускане на пазара до инфраструктурен мениджмънт. 


Какво не е DevOps?

DevOps не е "NoOps".
Както вече споменах по-горе една от основните цели на DevOps е автоматизацията. Процесът на автоматизация обаче е част от development процеса т.е. неговото разгръщане води до намаляване на IT Operations-a т.е. привидно в DevOps "Dev" бавно, но сигурно измества "Ops". Това е вярно отчасти и отчасти не е. Какво значи това? Ако метафорично кажем, че процеса на разработка на един софтуерен продукт е едно цяло, съставено от двете допълващите се части "Development" и "Operations", то в случая DevOps се разглежда като зло творение на "Development" частта, чрез което дивелъпърите да изземат функциите на IT операторите. Истината е, че IT операторите все по-често се "облягат" на DevOps заради неговите преимущества като гъвкава методология. Това се налага, тъй като принципите, процесите и практиките, около които е изграден класическият метод на работа при IT операции не е в ритъм с това, което е необходимо за успех. От една страна бизнесът (като цяло) и разработчиците имат нужда от повече гъвкавост, тъй като бизнес климатът става все по-динамичен, от другата обаче са хората, работещи в сферата на IT операциите (като системни или мрежови администратори), чиято работа се основава на по-закостенели принципи, което забавя целия процес по поддръжка на дадена система и т.н. Получава се разминаване в темпа на работа на двете основни части. За да се избегне това, IT операторите осъзнават, че няма как част от процесите да не бъдат автоматизирани, като това означава, че или операторите трябва да започнат сами да разработват необходимата автоматизация, или разработчиците да започнат да пишат код за "операциите", или и двете.

Не става въпрос (просто) за инструменти
Когато говорим за внедряване на DevOps не става въпрос просто за внедряване на набор от инструменти. Едно от погрешните схващания за DevOps се състои в това, че разчитащите на тази методология "претупват" теорията и пристъпват към практическо внедряване на даден набор инструменти, но без да вземат в предвид принципите около които тази методология е построена, което всъщност води до реализиране на един своеобразен анти-модел на DevOps. Например: един процес на автоматизация е просто упражняване на сила, но необмислената автоматизация може да нанесе толкова щети, колкото обмислената може да донесе ползи.

Не е (просто) култура
Много хора твърдят, че DevOps "e просто култура" и думата (DevOps) не може да се приложи стриктно към даден принцип или практика, но това е погрешно схващане. Гъвкавите методологии не са помогнали на хиляди Dev магазини, спирайки своето развитие на "култура", която да ви увещава да прегръщате колегите си на работа и DevOps не прави изключение.

Не става въпрос (просто) за "Devs" и "Ops"
Както вече споменах по-горе, когато говорим за DevOps не е изключено да прочетете или чуете коментари от типа на "Какво ще стане със системните или мрежови администратори?" или "Защо ни изхвърляте?". Истината е, че макар процесът при DevOps да води до смесване на задълженията в известна степен, той определено не води до изключване на дадени типове специалисти. Дори обратно - всички участници по създаването и поддръжката на даден продукт или система трябва да си сътрудничат от самото начало - както разработчици и оператори от различни видове, така и дори хора, които са ангажирани с бизнес модела, маркетинг или директни продажби.

Има различни видове работа и страни в разработването. Просто защото някой не е получил специална покана (например "Не забравяйте за дизайнерите на икони!") това не означава, че те не са включени. По принцип гъвкавите методологии акцентират върху колаборацията "biz + dev", докато при DevOps акцента пада върху (логично) "dev + ops", но крайният резултат от прилагането на DevOps e, че всички си сътрудничат. В този смисъл DevOps е голяма стъпка напред що се касае до това дадена дисциплина да се включи в общата култура на гъвкавите методологии, като включва всички различни дейности в една дадена организация, а не води до тяхното разделяне или изхвърляне от производствения процес.

Не е (просто) име на професия
Има случаи, в които съществуващ ops team получава нарицателното "The DevOps Team" (не просто "DevOps отбор" а "DevOps отборЪТ" т.е. отнасят се към тази група хора, като към отделно звено, със отделни задачи и отделна специализация). В други случаи някой може да промени името на специалността си на "DevOps Engineer". Не. Всичко това е погрешно. Смисъла на DevOps е в принципите и произтичащата от тях реорганизация на производствения процес при даден продукт или система. Тоест, ако вие не възприемете и приложите принципите на DevOps, които изискват промяна на едно общо системно ниво, а не само вътре в малка група някъде в тази система, вие няма да получите удовлетворителни резултати.
Разбира се, това съвсем не означава, че няма хора, които в по-голяма или по-малка степен са специализирали в прилагането на DevOps. В този ред на мисли не е съвсем неоправдано поставянето на подобни "титли", що се касае до това да се разграничи спецификата на DevOps мисленето, преимуществата на автоматизацията, високата степен на колаборация между всички звена и прочее DevOps характерни неща от останалите гъвкави методологии.

DevOps не е "всичко"
Стигаме и до другата крайност. Понякога хората, които са "по-навътре" в DevOps правят грандиозни заключения, че DevOps се отнася към всичко и навсякъде. Тъй като DevOps добавя в общата структура в процеса на разработка на даден продукт или система доста разчупено и гъвкаво мислене, и има възможности за такъв тип колаборация в дадена организация, но все пак да преструктурирате една цяла организация или бизнес процес не е DevOps сам по себе си. Да, DevOps може да е колаборативна и гъвкава корпоративна култура, но DevOps се фокусира най-вече върху това как звено "Операции" се включва в целия производствен процес. Има хора, които излизат от фокуса на DevOps и го превръщат в супер разводнена версия на Lean, Agile или просто "нека всички бъдем приятели и се обичаме". Това е вредно, тъй като свалянето на детайлите надолу в йерархията на трудовия процес, накрая ще свършите отделяйки огромни сили и ресурси за оперативна интеграция, докато в същото време огромна част от кадровия ресурс с който разполагате ще се пренасочи към други задачи, а не към конкретния възникнал проблем.
Дори след това ще има редица нерешени проблеми около доставката на софтуера или поддръжката на услуги и най-вече около това да ги превърнете в бързи, надеждни и защитени или казано с една дума - "конкурентни" продукти. 
Така че ако някой иска да приложи познанията си по DevOps на по-широко равнище на организация в своята фирма - това е добре, но трябва да се има в предвид, че DevOps е предназначен и включва най-вече хора, които се занимават с техническата практика, търсейки начин да подобрят ефективността на своята работа, а не начин да свършат нечия друга работа. В този ред на мисли гъвкавите методологии основно се отнасят до гъвкава софтуерна разработка, като в същото време има и методологии които са по-всеобхватни и акцентират върху прилагането на гъвкавост към по-големи организации и повече направления на един трудов процес на софтуерна разработка.

В завършек можем да обобщим, че DevOps най-добре може да се опише като "Гъвкави софтуерна доставка и операции".

Ако темата за DevOps ви се струва интересна, побързайте и се включете в предстоящото обучение "DevOps Basics - октомври 2017", който стартира след броени дни от ТУК.

Автор: Георги Кацаров