Гайд па DevOps для пачаткоўцаў

У чым важнасць DevOps, што ён азначае для ІТ-спецыялістаў, апісанне метадаў, фрэймворкаў і інструментаў.

Гайд па DevOps для пачаткоўцаў

Многае адбылося з таго часу, як тэрмін DevOps замацаваўся ў IT-свеце. З улікам таго, што большая частка экасістэмы мае адкрыты зыходны код, важна перагледзець, чаму гэта пачалося і што гэта значыць для кар'еры ў IT.

Што такое DevOps

Хоць няма адзінага вызначэння, я лічу, што DevOps – гэта тэхналагічная структура, якая забяспечвае ўзаемадзеянне паміж камандамі распрацоўшчыкаў і аперацыйнымі камандамі для хутчэйшага разгортвання кода ў вытворчых асяроддзях з магчымасцю паўтарэння дзеянняў і аўтаматызацыі. Рэшту артыкула мы выдаткуем на распакаванне гэтага сцвярджэння.

Слова "DevOps" з'яўляецца аб'яднаннем слоў "распрацоўка" (development) і "аперацыі" (operations). DevOps дапамагае павялічыць хуткасць дастаўкі прыкладанняў і паслуг. Гэта дазваляе арганізацыям эфектыўна абслугоўваць сваіх кліентаў і станавіцца больш канкурэнтаздольнымі на рынку. Прасцей кажучы, DevOps – гэта ўзгодненасць паміж распрацоўкай і ІТ-аперацыямі з больш эфектыўным узаемадзеяннем і супрацоўніцтвам.

DevOps мяркуе такую ​​культуру, пры якой супрацоўніцтва паміж камандамі распрацоўшчыкаў, аператарамі і бізнес-камандамі лічыцца крытычна важным аспектам. Гаворка ідзе не толькі аб прыладах, паколькі DevOps у арганізацыі ўвесь час прыносіць карысць і кліентам. Інструменты з'яўляюцца адным з яго слупоў, нараўне з людзьмі і працэсамі. DevOps павялічвае магчымасці арганізацый па прадастаўленні высакаякасных рашэнняў у найкарацейшыя тэрміны. Таксама DevOps аўтаматызуе ўсе працэсы, ад зборкі да разгортвання, прыкладанні або прадукта.

Дыскусія аб DevOps сканцэнтравана на ўзаемаадносінах паміж распрацоўшчыкамі, людзьмі, якія пішуць праграмнае забеспячэнне для жыцця, і аператарамі, адказнымі за падтрымку гэтага праграмнага забеспячэння.

Выклікі для каманды распрацоўшчыкаў

Распрацоўнікі, як правіла, з энтузіязмам і жаданнем укараняюць новыя падыходы і тэхналогіі для вырашэння праблем арганізацый. Аднак яны таксама сутыкаюцца з пэўнымі праблемамі:

  • Канкурэнтны рынак стварае вялікі ціск для своечасовай пастаўкі прадукта.
  • Яны павінны клапаціцца аб кіраванні кодам, гатовым да вытворчасці, і ўкараненні новых магчымасцей.
  • Цыкл выпуску можа быць доўгім, таму камандзе распрацоўшчыкаў даводзіцца рабіць некалькі здагадак перад укараненнем прыкладанняў. У такім сцэнары патрабуецца большы запас часу для вырашэння праблем, якія ўзнікаюць падчас разгортвання ў вытворчай або тэставай асяроддзі.

Праблемы, з якімі сутыкаецца аперацыйная група

Аперацыйныя групы гістарычна арыентаваны на стабільнасць і надзейнасць ІТ-сэрвісаў. Менавіта таму аперацыйныя каманды займаюцца пошукам стабільнасці з дапамогай занясення змен у рэсурсы, тэхналогіі ці падыходы. Да іх задач адносяцца:

  • Упраўленне размеркаваннем рэсурсаў па меры росту попыту.
  • Апрацоўка змен у дызайне або наладах, неабходных для прымянення ў вытворчай асяроддзі.
  • Дыягностыка і вырашэнне праблем, звязаных з вытворчасцю, пасля самастойнага разгортвання прыкладанняў.

Як DevOps вырашае праблемы распрацоўкі і аперацый

Замест таго, каб выкочваць вялікую колькасць функцый прыкладання адначасова, кампаніі спрабуюць высветліць, ці змогуць яны разгарнуць невялікую колькасць функцый для сваіх кліентаў з дапамогай серыі ітэрацый рэлізаў. Такі падыход мае шэраг пераваг, такіх як лепшае якасць праграмнага забеспячэння, хутчэйшая зваротная сувязь з кліентамі і г.д. Гэта, у сваю чаргу, забяспечвае высокую ступень задаволенасці кліентаў. Для дасягнення гэтых мэт ад кампаній патрабуецца:

  • Знізіць працэнт адмоў пры выпуску новых рэлізаў
  • Павялічыць частату разгортвання
  • Дасягнуць больш хуткага сярэдняга часу на аднаўленне ў выпадку выхаду новага рэлізу дадатку.
  • Скараціць час на выпраўленні

DevOps выконвае ўсе гэтыя задачы і дапамагае забясьпечыць бесперабойную пастаўку. Арганізацыі выкарыстоўваюць DevOps для дасягнення такіх узроўняў прадукцыйнасці, якія яшчэ некалькі гадоў таму былі неймаверныя. Яны выконваюць дзясяткі, сотні і нават тысячы разгортванняў у дзень, забяспечваючы пры гэтым надзейнасць, стабільнасць і бяспеку сусветнага класа. (Даведайцеся больш пра памеры партый і іх уплыве на дастаўку праграмнага забеспячэння).

DevOps спрабуе вырашыць розныя праблемы, якія ўзнікаюць у выніку прымянення метадалогій мінулага, у тым ліку:

  • Ізаляванасць працы каманд распрацоўшчыкаў і аператараў
  • Тэставанне і разгортванне ў выглядзе асобных фаз, выкананых пасля праектавання і зборкі і патрабавальных больш часу, чым цыклы зборкі.
  • Празмерныя часвыдаткі на тэсціраванне, разгортванне і праектаванне замест фокусу на стварэнні асноўных бізнес-паслуг
  • Ручное разгортванне кода, якое прыводзіць да памылак у вытворчасці.
  • Розніца ў графіках працы груп па распрацоўцы і аперацыям, якая прыводзіць да дадатковых затрымкам

Гайд па DevOps для пачаткоўцаў

Супрацьстаянне DevOps, Agile і традыцыйнага IT

DevOps часта абмяркоўваецца ў сувязі з іншымі ІТ-практыкамі, у прыватнасці, гнуткай і вадаспаднай ІТ-інфраструктурай.

Agile - гэта набор прынцыпаў, каштоўнасцяў і метадаў вытворчасці праграмнага забеспячэння. Так, напрыклад, калі ў вас ёсць ідэя, якую вы хочаце пераўтварыць у праграмнае забеспячэнне, вы можаце выкарыстоўваць прынцыпы і каштоўнасці Agile. Але гэта праграмнае забеспячэнне можа працаваць толькі ў асяроддзі распрацоўкі або тэсціравання. Вам патрэбен просты і бяспечны спосаб хутка і з высокай паўтаральнасцю пераносіць праграмнае забеспячэнне ў вытворчае асяроддзе, а шлях ляжыць праз прылады і метады DevOps. Гнуткая метадалогія распрацоўкі праграмнага забеспячэння сканцэнтравана на працэсах распрацоўкі, а DevOps адказвае за распрацоўку і разгортванне – самым бяспечным і надзейным спосабам.

Параўнанне традыцыйнай вадаспаднай мадэлі з DevOps - добры спосаб зразумець перавагі, якія дае DevOps. У наступным прыкладзе мяркуецца, што прыкладанне будзе запушчана праз чатыры тыдні, распрацоўка завершана на 85%, прыкладанне будзе запушчана, і працэс закупкі сервераў для адпраўкі кода толькі што быў пачаты.

Традыцыйныя працэсы
Працэсы ў DevOps

Пасля размяшчэння замовы на новыя серверы каманда распрацоўшчыкаў працуе над тэсціраваннем. Аператыўная група працуе над шырокай дакументацыяй, неабходнай на прадпрыемствах для разгортвання інфраструктуры.
Пасля размяшчэння замовы на новыя серверы, каманды распрацоўшчыкаў і аператараў сумесна працуюць над працэсамі і дакументазваротам для ўсталёўкі новых сервераў. Гэта дазваляе лепш зразумець патрабаванні да інфраструктуры.

Скажоная інфармацыя аб аднаўленні пасля адмовы, надмернасці, размяшчэнні цэнтраў апрацоўкі дадзеных і патрабаваннях да сховішчаў, бо адсутнічаюць уваходныя дадзеныя ад каманды распрацоўнікаў, якая валодае глыбокімі ведамі ў вобласці ўжывання.
Падрабязная інфармацыя аб пераадоленні адмовы, надмернасці, аварыйным аднаўленні, размяшчэнні цэнтраў даных і патрабаваннях да сховішчаў вядомая і карэктная дзякуючы ўкладу каманды распрацоўшчыкаў.

Аператыўная група не мае ўяўлення аб прагрэсе каманды распрацоўшчыкаў. Таксама яна распрацоўвае план маніторынгу на аснове ўласных уяўленняў.

Аператыўная група поўнасцю дасведчана аб прагрэсе, дасягнутым камандай распрацоўшчыкаў. Яна таксама ўзаемадзейнічае з камандай распрацоўшчыкаў, і яны сумесна распрацоўваюць план маніторынгу, які задавальняе IT і патрэбнасці бізнесу. Яны таксама выкарыстоўваюць інструменты маніторынгу прадукцыйнасці прыкладанняў (APM).

Нагрузачны тэст, які праводзіцца перад запускам прыкладання, прыводзіць да збою прыкладання, што затрымлівае яго запуск.
Нагрузачны тэст, які праводзіцца перад запускам прыкладання, прыводзіць да зніжэння прадукцыйнасці. Каманда распрацоўшчыкаў хутка ліквідуе вузкія месцы, і дадатак запускаецца своечасова.

Жыццёвы цыкл DevOps

DevOps мае на ўвазе прыняцце пэўных агульнапрынятых практык.

Бесперапыннае планаванне

Бесперапыннае планаванне абапіраецца на прынцыпы беражлівасці, для таго каб пачаць з малога, вызначыўшы рэсурсы і вынікі, неабходныя для праверкі каштоўнасці бізнесу або бачання, пастаяннай адаптацыі, вымярэння прагрэсу, вывучэння запатрабаванняў кліентаў, змены кірунку па меры неабходнасці з улікам манеўранасці, а таксама для абнаўлення бізнес-плана.

Сумеснае развіццё

Працэс сумеснай распрацоўкі дазваляе бізнэсу, камандам распрацоўнікаў і камандам тэстыравальнікаў, размеркаваным па розных часавых паясах, бесперапынна пастаўляць якаснае праграмнае забеспячэнне. Сюды ўваходзіць шматплатформавая распрацоўка, падтрымка праграмавання на розных мовах, стварэнне карыстацкіх гісторый, распрацоўка ідэй і кіраванне жыццёвым цыклам. Сумесная распрацоўка ўключае ў сябе працэс і практыку бесперапыннай інтэграцыі, што спрыяе частай інтэграцыі кода і аўтаматычнай зборцы. Пры частым укараненні кода ў дадатак, праблемы інтэграцыі выяўляюцца на ранніх этапах жыццёвага цыклу (калі іх лягчэй выправіць), а агульныя намаганні па інтэграцыі скарачаюцца дзякуючы бесперапыннай зваротнай сувязі, паколькі праект дэманструе бесперапынны і наглядны прагрэс.

Бесперапыннае тэсціраванне

Бесперапыннае тэсціраванне зніжае кошт тэсціравання, дапамагаючы камандам распрацоўшчыкаў балансаваць паміж хуткасцю і якасцю. Яно таксама ўхіляе вузкія месцы ў тэставанні дзякуючы віртуалізацыі паслуг і спрашчае стварэнне віртуалізаваных тэставых асяроддзяў, якія можна лёгка сумесна выкарыстоўваць, разгортваць і абнаўляць па меры змены сістэм. Гэтыя магчымасці скарачаюць выдаткі на ініцыялізацыю і падтрымку тэставых асяроддзяў, а таксама скарачаюць час цыклу тэставання, дазваляючы праводзіць інтэграцыйнае тэставанне на ранніх стадыях жыццёвага цыклу.

Бесперапынныя выпуск і разгортванне

Гэтыя методыкі прыўносяць за сабой адну з асноўных практык: бесперапынныя выпуск і разгортванне. Гэта забяспечваюць бесперапынны канвеер, які аўтаматызуе ключавыя працэсы. Ён скарачае колькасць ручных аперацый, час чакання рэсурсаў і аб'ём пераробак, дазваляючы ажыццяўляць разгортванне па націску кнопкі, што забяспечвае большую колькасць рэлізаў, зніжэнне колькасці памылак і поўную празрыстасць.

Аўтаматызацыя гуляе ключавую ролю ў забеспячэнні стабільнага і надзейнага выпуску праграмнага забеспячэння. Адна з найважнейшых задач заключаецца ў тым, каб узяць на ўзбраенне ручныя працэсы, такія як зборка, рэгрэсія, разгортванне і стварэнне інфраструктуры, і аўтаматызаваць іх. Для гэтага патрабуецца кантроль версіі зыходнага кода; сцэнары тэсціравання і разгортвання; дадзеныя аб інфраструктуры і канфігурацыі прыкладанняў; а таксама бібліятэкі і пакеты, ад якіх залежыць дадатак. Яшчэ адным важным фактарам з'яўляецца магчымасць запытваць стан усіх асяроддзяў.

Бесперапынны маніторынг

Бесперапынны маніторынг забяспечвае фарміраванне справаздач карпаратыўнага ўзроўню, якія дапамагаюць камандам распрацоўшчыкаў зразумець даступнасць і прадукцыйнасць прыкладанняў у вытворчым асяроддзі яшчэ да таго, як яны будуць разгорнутыя ў вытворчасць. Ранняя зваротная сувязь, якая забяспечваецца бесперапынным маніторынгам, мае вырашальнае значэнне для зніжэння кошту памылак і кіраванні праектамі ў правільным кірунку. Гэтая практыка часта ўключае ў сябе інструменты назірання, якія, як правіла, раскрываюць паказчыкі, звязаныя з прадукцыйнасцю прыкладанняў.

Пастаянная зваротная сувязь і аптымізацыя

Бесперапынная зваротная сувязь і аптымізацыя забяспечваюць візуальнае прадстаўленне патоку кліентаў і дакладнае вызначэння праблемных участкаў. Зваротная сувязь можа быць уключана як на перадпродажнай, так і на поствытворчай стадыях для максімізацыі каштоўнасці і забеспячэння паспяховага завяршэння яшчэ большай колькасці транзакцый. Усё гэта забяспечвае неадкладную візуалізацыю першапрычыны праблем кліентаў, якія ўплываюць на іх паводзіны і ўплыў на бізнэс.

Гайд па DevOps для пачаткоўцаў

Перавагі DevOps

DevOps можа спрыяць стварэнню асяроддзя, у якой распрацоўшчыкі і аператары працуюць як адна каманда для дасягнення агульных мэт. Важнай вяхой у гэтым працэсе з'яўляецца ўкараненне бесперапыннай інтэграцыі і бесперапыннай дастаўкі (CI/CD). Гэтыя методыкі дазволяць камандам хутчэй выводзіць праграмнае забеспячэнне на рынак з меншай колькасцю памылак.

Важнымі перавагамі DevOps з'яўляюцца:

  • Прадказальнасць: DevOps прапануе значна больш нізкую частату адмоў пры выпуску новых рэлізаў.
  • Падтрымліваемасць: DevOps забяспечвае лёгкае аднаўленне ў выпадку збояў у новым рэлізе або адключэння прыкладання.
  • Прайграванне: Сістэма кантролю версій зборкі або кода дазваляе аднаўляць больш раннія версіі па меры неабходнасці.
  • Больш за высокую якасць: Рашэнне праблем з інфраструктурай паляпшае якасць распрацоўкі прыкладанняў.
  • Час выхаду на рынак: Аптымізацыя дастаўкі праграмнага забеспячэння скарачае час выхаду на рынак на 50 працэнтаў.
  • Зніжэнне рызыкі: Забеспячэнне бяспекі ў жыццёвым цыкле праграмнага забеспячэння змяншае колькасць дэфектаў на працягу ўсяго жыццёвага цыклу.
  • Эканамічная эфектыўнасць: Імкненне да эканамічнай эфектыўнасці пры распрацоўцы праграмнага забеспячэння падабаецца вышэйшаму кіраўніцтву.
  • Устойлівасць: Праграмная сістэма больш стабільная, бяспечная, а змены можна правяраць.
  • Больш буйная кодавая база разбіваецца на кіраваныя часткі: DevOps заснаваны на гнуткіх метадах распрацоўкі, якія дазваляюць разбіваць вялікую кодавую базу на драбнейшыя і кіраваныя часткі.

Прынцыпы DevOps

Прыняцце DevOps спарадзіла некалькі прынцыпаў, якія эвалюцыянавалі (і працягваюць эвалюцыянаваць). Большасць пастаўшчыкоў рашэнняў распрацавалі свае ўласныя мадыфікацыі розных методык. Усе гэтыя прынцыпы заснаваны на цэласным падыходзе да DevOps, і арганізацыі любога памеру могуць выкарыстоўваць іх.

Распрацоўвайце і тэстуйце ў асяроддзі, падобнай на вытворчую

Сутнасць заключаецца ў тым, каб дазволіць камандам распрацоўшчыкаў і спецыялістаў па кантролі якасці (QA) распрацоўваць і тэсціраваць сістэмы, якія паводзяць сябе як вытворчыя сістэмы, каб яны маглі бачыць, як прыкладанне паводзіць сябе і працуе задоўга да таго, як яно будзе гатова да разгортвання .

Прыкладанне павінна быць падлучана да вытворчых сістэм як мага раней на працягу жыццёвага цыклу для вырашэння трох асноўных патэнцыйных праблем. Па-першае, гэта дазваляе пратэставаць прыкладанне ў асяроддзі, блізкай да рэальнага асяроддзя. Па-другое, гэта дазваляе тэставаць і правяраць працэсы дастаўкі прыкладання загадзя. Па-трэцяе, гэта дазваляе аперацыйнай камандзе праверыць на ранняй стадыі жыццёвага цыклу, як іх асяроддзе будзе паводзіць сябе, калі прыкладанні будуць разгорнутыя, тым самым дазваляючы ім ствараць тонка наладжвальнае, арыентаванае на прыкладанні асяроддзе.

Разгортванне з узнаўляльнымі, надзейнымі працэсамі

Гэты прынцып дазваляе камандам распрацоўшчыкаў і аператараў падтрымліваць гнуткія працэсы распрацоўкі праграмнага забеспячэння на працягу ўсяго жыццёвага цыклу. Аўтаматызацыя мае вырашальнае значэнне для стварэння ітэратыўных, надзейных і ўзнаўляльных працэсаў. Такім чынам, арганізацыя павінна стварыць канвеер дастаўкі, які забяспечвае бесперапыннае аўтаматызаванае разгортванне і тэставанне. Частае разгортванне таксама дазваляе камандам тэставаць працэсы разгортвання, тым самым змяншаючы рызыку збояў разгортвання падчас рэальных рэлізаў.

Маніторынг і праверка якасці працы

Арганізацыі добрыя ў маніторынгу дадаткаў на вытворчасці, таму што ў іх ёсць інструменты, якія фіксуюць паказчыкі і ключавыя паказчыкі эфектыўнасці (KPI) у рэжыме рэальнага часу. Гэты прынцып пераносіць маніторынг на раннія стадыі жыццёвага цыклу, гарантуючы, што аўтаматызаванае тэсціраванне адсочвае функцыянальныя і нефункцыянальныя атрыбуты дадатку на ранніх стадыях працэсу. Кожны раз, калі прыкладанне тэсціруецца і разгортваецца, якасныя паказчыкі павінны быць вывучаны і прааналізаваны. Інструменты маніторынгу забяспечваюць ранняе апавяшчэнне аб праблемах, звязаных з эксплуатацыяй і якасцю, якія могуць узнікнуць у працэсе вытворчасці. Гэтыя паказчыкі павінны быць сабраны ў фармаце, даступным і зразумелым для ўсіх зацікаўленых бакоў.

Удасканаленне цыклаў зваротнай сувязі

Адна з мэт працэсаў DevOps складаецца ў тым, каб даць магчымасць арганізацыям хутчэй рэагаваць і ўносіць змены. Пры пастаўцы праграмнага забеспячэння гэтая мэта патрабуе, каб арганізацыя атрымлівала зваротную сувязь на ранняй стадыі, а затым хутка вучылася на кожным прадпрынятым дзеянні. Гэты прынцып патрабуе ад арганізацый ствараць каналы камунікацыі, якія дазваляюць зацікаўленым бакам атрымліваць доступ і ўзаемадзейнічаць па прынцыпе зваротнай сувязі. Распрацоўка можа ажыццяўляцца шляхам карэкціроўкі сваіх праектных планаў ці прыярытэтаў. Вытворчасць можа дзейнічаць шляхам паляпшэння вытворчага асяроддзя.

DEV

  • Планаванне: Kanboard, Wekan і іншыя альтэрнатывы Trello; GitLab, Tuleap, Redmine і іншыя альтэрнатывы JIRA; Mattermost, Roit.im, IRC і іншыя альтэрнатывы Slack.
  • Напісанне кода: Git, Gerrit, Bugzilla; Jenkins і іншыя прылады з адчыненым зыходным кодам для CI/CD
  • зборка: Apache Maven, Gradle, Apache Ant, Packer
  • тэсты: JUnit, Cucumber, Selenium, Apache JMeter

Ops

  • Выпуск, разгортванне, аперацыі: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Маніторынг: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, і іншыя, пакрытыя ў гэтым кіраўніцтве

(* Інструменты для аперацый былі пранумараваны ў парадку прымянення аперацыйнымі камандамі, але іх інструментарый перакрываецца стадыямі жыццёвага цыкла інструментамі рэлізу і разгортвання. Для зручнасці чытання нумарацыя была прыбрана.)

У заключэнне

DevOps – гэта ўсё больш папулярная метадалогія, мэтай якой з'яўляецца аб'яднанне распрацоўшчыкаў і аператараў у адзінае цэлае. Яна ўнікальная, адрозніваецца ад традыцыйных IT-аперацый і дапаўняе Agile (але не з'яўляецца гэтак жа гнуткай).

Гайд па DevOps для пачаткоўцаў

Даведайцеся падрабязнасці, як атрымаць запатрабаваную прафесію з нуля або Level Up па навыках і зарплаце, прайшоўшы платныя анлайн-курсы SkillFactory:

яшчэ курсы

карыснае

Крыніца: habr.com

Дадаць каментар