Бо истифода аз таҷрибаи DevOps - VTB чӣ гуна рушди мукаммали хонагӣ сохтан мумкин аст

Таҷрибаҳои DevOps кор мекунанд. Мо худамон ба ин боварй хосил кардем, ки мухлати васлкунии релизхоро 10 баробар кам кардем. Дар системаи FIS Profile, ки мо онро дар VTB истифода мебарем, ҳоло насбкунӣ на 90 дақиқа, балки 10 дақиқаро мегирад. Вақти сохтани релиз аз ду ҳафта то ду рӯз кам шуд. Микдори нуксонхои доимии ичрои кор кариб ба хадди минимум кам шуд. Барои дур шудан аз «мехнати дастй» ва рафъи вобастагй аз фурушанда ба мо лозим омад, ки бо асобачахо кор кунем ва роххои халли гайричашмдоштро пайдо кунем. Дар зер як ҳикояи муфассал дар бораи он, ки мо рушди мукаммали дохилиро чӣ гуна сохтаем.

Бо истифода аз таҷрибаи DevOps - VTB чӣ гуна рушди мукаммали хонагӣ сохтан мумкин аст
 

Пролог: DevOps як фалсафа аст

Дар давоми як соли охир мо барои ташкили таҳияи дохилӣ ва татбиқи таҷрибаҳои DevOps дар ВТБ корҳои зиёдеро анҷом додем:

  • Мо барои 12 система равандҳои рушди дохилиро сохтем;
  • 15 трубопровод ба кор андохта шуд, ки чортоаш ба истехсолот оварда шуд;
  • 1445 сенарияи санҷиши автоматӣ;
  • Мо як катор нашрияхоеро, ки коллективхои дохилихочагй тайёр кардаанд, бомуваффакият ичро кардем.

Яке аз мушкилтаринҳо барои ташкили таҳия ва татбиқи таҷрибаҳои DevSecOps дар дохили хонагӣ системаи профили FIS - протсессори маҳсулоти чакана дар МДМ-и ғайрирасмӣ мебошад. Бо вуҷуди ин, мо тавонистем таҳияро созем, қубурро ба кор андозем, бастаҳои инфиродии ғайрирасмӣ дар маҳсулот насб кунем ва чӣ гуна ҷамъ кардани релизҳоро омӯзем. Вазифа осон набуд, аммо ҷолиб ва бидуни маҳдудиятҳои ошкор дар татбиқ: ин система аст - шумо бояд рушди дохили хонаро бунёд кунед. Ягона шарт ин аст, ки CD пеш аз муҳити истеҳсолӣ истифода шавад.

Дар аввал, алгоритми татбиқ оддӣ ва равшан менамуд:

  • Мо таҷрибаи ибтидоии рушдро таҳия мекунем ва аз дастаи кодҳо бе камбудиҳои ҷиддӣ ба сатҳи қобили қабули сифат ноил мешавем;
  • Мо то ҳадди имкон ба равандҳои мавҷуда ворид мешавем;
  • Барои интиқоли код байни марҳилаҳои аён, мо қубурро бурида, яке аз нӯги онро ба идома медиҳем.

Дар ин муддат, дастаи таҳияи андозаи зарурӣ бояд малакаҳоро инкишоф диҳад ва ҳиссаи саҳми худро дар нашрияҳо ба сатҳи қобили қабул афзоиш диҳад. Ва ин аст, мо метавонем вазифаро анҷом диҳем.

Чунин ба назар мерасад, ки ин як роҳи комилан каммасраф барои натиҷаи зарурӣ аст: ин аст DevOps, ин аст ченакҳои кори даста, инҷо таҷрибаи ҷамъшуда... Аммо дар амал мо тасдиқи дигаре гирифтем, ки DevOps ҳанӯз ҳам дар бораи фалсафа аст. , ва на "ба раванди gitlab пайваст, ansible, nexus ва минбаъд дар рӯйхат."

Бори дигар нақшаи чорабиниҳоро таҳлил карда, мо фаҳмидем, ки мо дар дохили худ як навъ фурӯшандаи аутсорсинг бунёд карда истодаем. Аз ин рӯ, реинженеринги равандҳо ба алгоритми дар боло тавсифшуда ва инчунин рушди таҷриба дар тамоми масири рушд барои ноил шудан ба нақши пешбаранда дар ин раванд илова карда шуд. Варианти осонтарин нест, балки ин рохи инкишофи аз чихати идеявй дуруст аст.
 

Рушди хонагӣ аз куҷо оғоз мешавад? 

Ин системаи дӯстонатарин барои кор бо он набуд. Аз ҷиҳати меъморӣ он як МБМ-и калони ғайрирасмӣ буд, ки аз бисёр объектҳои алоҳидаи иҷрошаванда (скриптҳо, расмиятҳо, партияҳо ва ғайра) иборат буд, ки ҳангоми зарурат даъват карда мешуданд ва аз рӯи принсипи қуттии сиёҳ кор мекарданд: дархост ва масъалаҳоро қабул мекунад. ҷавоб. Дигар мушкилоте, ки бояд қайд карда шаванд, инҳоянд:

  • Забони экзотикӣ (MUMPS);
  • Интерфейси консол;
  • Набудани ҳамгироӣ бо асбобҳо ва чаҳорчӯбаҳои автоматикунонии маъмул;
  • Ҳаҷми маълумот дар даҳҳо терабайт;
  • Сарбории зиёда аз 2 миллион амалиёт дар як соат;
  • Аҳамият - Бизнес-Интиқодӣ.

Дар айни замон, дар тарафи мо ягон анбори коди манбаъ вуҷуд надошт. Умуман. Ҳуҷҷатгузорӣ вуҷуд дошт, аммо тамоми дониш ва салоҳиятҳои асосӣ дар паҳлӯи ташкилоти беруна буданд.
Мо бо назардошти хусусиятхо ва таксимоти пасти он ба азхудкунии коркарди система кариб аз сифр шуруъ кардем. Дар моҳи октябри соли 2018 оғоз ёфт:

  • Ҳуҷҷатҳо ва асосҳои тавлиди кодро омӯхт;
  • Мо курси кӯтоҳмуддати рушдро, ки аз фурӯшанда гирифта буд, омӯхтем;
  • Малакаҳои ибтидоии рушдро азхуд кардаанд;
  • Мо барои аъзоёни нави даста дастури таълимӣ тартиб додем;
  • Мо розӣ шудем, ки дастаро ба реҷаи "ҷанг" дохил кунем;
  • Масъаларо бо назорати сифати код ҳал кард;
  • Мо стенди тараккиёт ташкил кардем.

Мо се моҳро барои таҳияи таҷриба ва ғарқ шудан ба система сарф кардем ва аз аввали соли 2019 рушди дохилӣ ҳаракати худро ба сӯи ояндаи дурахшон оғоз кард, баъзан бо душворӣ, вале бо итминон ва ҳадафмандона.

Муҳоҷирати анборҳо ва санҷишҳои автоматӣ

Вазифаи аввалини DevOps анбор аст. Мо ба зудӣ дар бораи таъмини дастрасӣ розӣ шудем, аммо лозим буд, ки аз SVN-и ҷорӣ бо як шохаи магистралӣ ба Git-и ҳадафамон бо гузариш ба модели якчанд филиалҳо ва рушди Git Flow гузаред. Мо инчунин 2 даста дорем, ки инфрасохтори худро доранд, инчунин як қисми дастаи фурӯшанда дар хориҷа. Ман бояд бо ду Гит зиндагӣ кунам ва ҳамоҳангсозиро таъмин кунам. Дар чунин вазъият, он камтар аз ду бадӣ буд.

Муҳоҷирати анбор борҳо мавқуф гузошта шуда буд, он танҳо дар моҳи апрел бо кӯмаки ҳамкасбони фронт ба анҷом расид. Бо Git Flow, мо тасмим гирифтем, ки ҳама чизро барои оғоз оддӣ нигоҳ дорем ва дар нақшаи классикӣ бо ислоҳ, таҳия ва озодкунӣ қарор гирифтем. Онҳо тасмим гирифтанд, ки устодро (бо продюсер) тарк кунанд. Дар зер мо мефаҳмонем, ки чаро ин вариант барои мо оптималӣ шуд. Як анбори беруна, ки ба фурӯшанда тааллуқ дорад, барои ду даста маъмул аст, ҳамчун коргар истифода мешуд. Он мувофиқи ҷадвал бо анбори дохилӣ ҳамоҳанг карда мешавад. Акнун бо Git ва Gitlab равандҳоро автоматӣ кардан мумкин буд.

Масъалаи автотестҳо ба таври ҳайратангез ҳал карда шуд - ба мо чаҳорчӯбаи тайёр дода шуд. Бо дарназардошти вижагиҳои система, даъвати амалиёти ҷудогона қисми фаҳмотар аз раванди бизнес буд ва дар айни замон ҳамчун санҷиши воҳид хизмат мекард. Танҳо омода кардани маълумоти санҷишӣ ва муқаррар кардани тартиби дилхоҳи занги скриптҳо ва арзёбии натиҷаҳо боқӣ монд. Вақте ки рӯйхати сенарияҳо, ки дар асоси омори амалиёт, танқидии равандҳо ва методологияи мавҷудаи регрессия ташаккул ёфтаанд, пур карда шуданд, санҷишҳои автоматӣ пайдо шуданд. Акнун мо метавонем ба сохтмони қубур шурӯъ кунем.

Ин чӣ гуна буд: модели пеш аз автоматизатсия

Модели мавҷудаи раванди татбиқ як ҳикояи алоҳида аст. Ҳар як тағирот ба таври дастӣ ҳамчун бастаи насби афзояндаи алоҳида интиқол дода шуд. Баъдан бақайдгирии дастӣ дар Jira ва насби дастӣ дар муҳитҳо омад. Барои бастаҳои инфиродӣ ҳама чиз равшан ба назар мерасид, аммо бо омода кардани нашр, корҳо мураккабтар буданд.

Монтаж дар сатхи тахвили индивидуалй, ки объектхои мустакил буданд, гузаронида шуд. Ҳама гуна тағирот интиқоли нав аст. Дар байни чизҳои дигар, 60-70 версияи техникӣ ба 10-15 бастаҳои таркиби асосии релиз илова карда шуданд - версияҳое, ки ҳангоми илова кардан ё хориҷ кардани чизе аз релиз ба даст омадаанд ва тағиротро дар фурӯш берун аз релизҳо инъикос мекунанд.

Объектҳо дар доираи таҳвилҳо бо ҳамдигар, махсусан дар коди иҷрошаванда, ки камтар аз нисфи беназир буд, ба ҳам мепайвандад. Вобастагии зиёде ҳам аз коди аллакай насбшуда ва ҳам ба оне, ки насби он нав ба нақша гирифта шуда буд, вуҷуд дошт. 

Барои ба даст овардани версияи зарурии код, тартиби насбкуниро ба таври қатъӣ риоя кардан лозим буд, ки дар давоми он объектҳо аз ҷиҳати ҷисмонӣ чандин маротиба, тақрибан 10-12 маротиба аз нав навишта мешаванд.

Пас аз насб кардани маҷмӯи бастаҳо, ба ман лозим омад, ки дастурҳоро барои оғоз кардани танзимот дастӣ иҷро кунам. Нашр аз ҷониби фурӯшанда ҷамъ ва насб карда шуд. Таркиби релиз тақрибан пеш аз лаҳзаи татбиқ мушаххас карда шуд, ки боиси эҷоди бастаҳои "ҷудошавӣ" гардид. Дар натиҷа, як қисми зиёди маводҳо бо думи худ аз "ҷудокунӣ" аз озод ба озод гузаштанд.

Ҳоло маълум аст, ки бо ин равиш - ҷамъ кардани муаммои релиз дар сатҳи баста - як шохаи ягонаи усто маънои амалӣ надошт. Монтаж дар истехсолот аз якуним то ду соат мехнати дастиро талаб мекард. Хуб аст, ки ҳадди аққал дар сатҳи насбкунанда тартиби коркарди объект муайян карда шудааст: майдонҳо ва сохторҳо пеш аз маълумот барои онҳо ва расмиёти онҳо ворид карда шуданд. Аммо, ин танҳо дар як бастаи алоҳида кор мекард.

Натиҷаи мантиқии ин равиш камбудиҳои ҳатмии насб дар шакли версияҳои каҷшудаи объектҳо, кодҳои нолозим, дастурҳои гумшуда ва таъсири мутақобилаи объектҳо буд, ки пас аз озод шудан ба таври шадид бартараф карда шуданд. 

Навсозиҳои аввал: ӯҳдадорӣ васлкунӣ ва таҳвил

Автоматизатсия тавассути интиқоли код тавассути қубур дар ин масир оғоз ёфт:

  • Маҳсулоти тайёрро аз анбор гиред;
  • Онро дар муҳити махсус насб кунед;
  • Гузаронидани санҷишҳои автоматӣ;
  • Натиҷаи насбро арзёбӣ кунед;
  • Ба лӯлаи зерин дар паҳлӯи фармони санҷиш занг занед.

Қубури навбатӣ бояд вазифаро дар Jira сабти ном кунад ва интизор шавад, ки фармонҳо ба ҳалқаҳои интихобшудаи санҷиш тақсим карда шаванд, ки аз вақти иҷрои вазифа вобастаанд. Триггер - мактуб дар бораи омодагӣ ба интиқол ба суроғаи додашуда. Ин, албатта, як асобароғи ошкор буд, аммо ман бояд аз ҷое оғоз кунам. Дар моҳи майи соли 2019 интиқоли код бо санҷиши муҳити мо оғоз ёфт. Раванд оғоз шуд, танҳо он аст, ки он ба шакли мувофиқ оварда шавад:

  • Ҳар як тағирот дар як шохаи алоҳида анҷом дода мешавад, ки ба бастаи насб мувофиқат мекунад ва ба шохаи асосии ҳадаф муттаҳид мешавад;
  • Триггери оғози лӯла ин пайдо шудани ӯҳдадории нав дар филиали асосӣ тавассути дархости якҷоякунӣ мебошад, ки аз ҷониби нигоҳдорон аз дастаи дохилӣ баста мешавад;
  • Анборҳо дар ҳар панҷ дақиқа як маротиба ҳамоҳанг карда мешаванд;
  • Ҷамъоварии бастаи насбкунӣ оғоз мешавад - бо истифода аз ассемблер, ки аз фурӯшанда гирифта шудааст.

Пас аз ин, аллакай барои тафтиш ва интиқол додани код, ба кор андохтани қубур ва ҷамъоварӣ аз ҷониби мо чораҳои мавҷуда мавҷуданд.

Ин вариант дар моҳи июл оғоз ёфт. Мушкилоти давраи гузариш боиси норозигии фурўшанда ва сафи пеш гардид, вале дар давоми як моњи оянда мо тавонистем, ки њамаи канорњои ноњамворро аз байн барем ва дар байни дастањо раванд ба роњ монем. Ҳоло мо аз рӯи ӯҳдадорӣ ва таҳвил васлкунӣ дорем.
Моҳи август мо тавонистем насби якуми бастаи алоҳидаро дар истеҳсолот бо истифода аз қубури худ ба анҷом расонем ва аз моҳи сентябр, бидуни истисно, ҳама насби бастаҳои алоҳидаи ҷудонашаванда тавассути асбоби CD-и мо анҷом дода шуд. Илова бар ин, мо тавонистем ҳиссаи вазифаҳои дохилиро дар 40% таркиби нашр бо як гурӯҳи хурдтар аз фурӯшанда ба даст орем - ин муваффақияти муайян аст. Вазифаи аз ҳама ҷиддӣ боқӣ монд - ҷамъоварӣ ва насб кардани релиз.

Ҳалли ниҳоӣ: бастаҳои насби ҷамъшуда 

Мо ба таври комил фаҳмидем, ки скрипт кардани дастурҳои фурӯшанда як автоматизатсия аст; мо бояд худи равандро аз нав дида бароем. Ҳалли равшан буд - ҷамъоварии захираи маҷмӯӣ аз филиали релиз бо ҳама объектҳои версияҳои зарурӣ.

Мо бо исботи консепсия оғоз кардем: мо бастаи релизро мувофиқи мундариҷаи татбиқи гузашта дастӣ ҷамъ кардем ва онро дар муҳитҳои худ насб кардем. Ҳама чиз кор кард, консепсия қобили ҳаёт буд. Баъдан, мо масъалаи скрипти танзимоти оғозёбиро ҳал кардем ва онҳоро ба ӯҳдадорӣ дохил кардем. Мо бастаи нав омода кардем ва онро дар муҳитҳои озмоишӣ ҳамчун як қисми навсозии контур санҷидем. Насбкунӣ бомуваффақият анҷом ёфт, гарчанде ки доираи васеи шарҳҳои гурӯҳи татбиқкунанда дошт. Аммо чизи асосй дар он аст, ки ба мо ичозат дода шуд, ки дар мохи ноябри соли чорй бо ассамблеяи худ ба истехсолот дохил шавем.

Бо гузашти ҳамагӣ як моҳ, маводҳои дастӣ интихобшуда ба таври возеҳ ишора карданд, ки вақт тамом шуда истодааст. Онҳо тасмим гирифтанд, ки биноро аз шохаи озодкунӣ созанд, аммо чаро он бояд ҷудо карда шавад? Мо ба Prod монанд надорем ва шохаҳои мавҷуда хуб нестанд - бисёр кодҳои нолозим вуҷуд доранд. Ба мо лозим аст, ки фавран прод-лективхоро кам кунем ва ин зиёда аз се хазор ухдадориро ташкил медихад. Бо дастй монтаж кардан аслан имконнопазир аст. Мо як скриптро таҳия кардем, ки тавассути сабти насби маҳсулот мегузарад ва ӯҳдадориҳоро ба филиал ҷамъ мекунад. Дафъаи сейум дуруст кор кард ва баъди «файл тамом кардан» филиал тайёр шуд. 

Мо барои бастаи васлкунӣ бинокори худамонро навиштем ва онро дар як ҳафта анҷом додем. Сипас, мо маҷбур шудем, ки насбкунандаро аз функсияҳои асосии система тағир диҳем, зеро он манбаи кушода аст. Пас аз як қатор санҷишҳо ва тағирот, натиҷа муваффақ дониста шуд. Дар айни замон, таркиби релиз шакл гирифт, ки барои дуруст насб кардани он схемаи санҷиширо бо схемаи истеҳсолӣ мувофиқ кардан лозим буд ва барои ин скрипти алоҳида навишта шудааст.

Табиист, ки дар бораи насби аввал шарҳҳои зиёде буданд, аммо дар маҷмӯъ код кор кард. Ва тақрибан пас аз насби сеюм ҳама чиз хуб ба назар мерасид. Назорати таркиб ва идоракунии версияи объектҳо дар ҳолати дастӣ алоҳида назорат карда мешуд, ки дар ин марҳила комилан асоснок буд.

Мушкилоти иловагӣ шумораи зиёди релизҳо буд, ки бояд ба назар гирифта шаванд. Аммо бо шохаи ба монанди Prod ва Rebase, вазифа шаффоф шуд.

Бори аввал, зуд ва бе хато

Мо ба нашр бо муносибати некбинона ва зиёда аз даҳҳо насби муваффақ дар схемаҳои гуногун наздик шудем. Аммо айнан як рӯз пеш аз мӯҳлат маълум шуд, ки фурӯшанда кори омода кардани релизро барои насбкунӣ ба таври қабулшуда анҷом надодааст. Агар бо ягон сабаб сохти мо кор накунад, баровардан халалдор мешавад. Гузашта аз ин, тавассути кӯшишҳои мо, ки махсусан ногувор аст. Мо имкони акибнишиниро надоштем. Аз ин рӯ, мо вариантҳои алтернативӣ фикр карда, нақшаҳои чорабиниҳоро омода кардем ва ба насбкунӣ шурӯъ кардем.

Тааҷҷубовар аст, ки тамоми нашрия, ки аз зиёда аз 800 объект иборат аст, бори аввал ва ҳамагӣ 10 дақиқа дуруст оғоз ёфт. Мо як соат барои тафтиш кардани гузоришҳо сарф кардем, ки хатогиҳоро ҷустуҷӯ кунем, аммо ягон чизро наёфтем.

Рӯзи дигар дар сӯҳбати релиз хомӯшӣ ҳукмфармо буд: ҳеҷ мушкиле дар татбиқ, версияҳои каҷ ё рамзи "номуносиб". Ин ҳатто як навъ ногувор буд. Баъдтар, баъзе шарҳҳо пайдо шуданд, аммо дар муқоиса бо дигар системаҳо ва таҷрибаи қаблӣ, шумора ва афзалияти онҳо ба таври назаррас камтар буд.

Таъсири иловагӣ аз таъсири ҷамъшуда баланд бардоштани сифати васлкунӣ ва озмоиш буд. Бо сабаби насби сершумори версияи пурра, камбудиҳои сохтмон ва хатогиҳои ҷойгиркунӣ сари вақт муайян карда шуданд. Санҷиш дар конфигуратсияҳои пурраи релиз имкон дод, ки нуқсонҳои таъсири мутақобилаи объектҳое, ки ҳангоми насби афзоянда пайдо нашудаанд, ба таври иловагӣ муайян карда шаванд. Ин бешубҳа муваффақият буд, хусусан бо назардошти саҳми 57% мо дар нашр.

Натиҷаҳо ва хулосаҳо

Дар давоми камтар аз як сол мо тавонистем:

  • Бо истифода аз системаи экзотикӣ рушди мукаммали дохилиро созед;
  • Бартараф кардани вобастагии муҳими фурӯшанда;
  • CI/CD-ро барои мероси хеле номатлуб оғоз кунед;
  • Процессхои амалй ба дарачаи нави техникй баланд бардошта шавад;
  • Ба таври назаррас кам кардани вақти ҷойгиркунӣ;
  • Шумораи хатогихои амалй хеле кам карда шавад;
  • Бо итминон худро ҳамчун мутахассиси пешбари рушд эълон кунед.

Албатта, бисёре аз чизҳое, ки тавсиф шудаанд, ба таври возеҳ ба назар мерасанд, аммо инҳо хусусиятҳои система ва маҳдудиятҳои равандест, ки дар он мавҷуданд. Дар айни замон, тағирот ба маҳсулот ва хидматҳои профили IS (ҳисобҳои асосӣ, кортҳои пластикӣ, суратҳисобҳои амонатӣ, эскроу, қарзҳои нақдӣ) таъсир расониданд, аммо эҳтимолан ин равишро ба ҳама гуна ИС, ки вазифаи татбиқи таҷрибаҳои DevOps гузошта шудааст, татбиқ кардан мумкин аст. Модели маҷмӯӣ метавонад барои татбиқи минбаъда (аз ҷумла барориши ғайрирасмӣ) аз бисёр таҳвилҳо бехатар такрор карда шавад.

Манбаъ: will.com

Илова Эзоҳ