Маштабаванне і аптымізацыя CI/CD

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

Сёння мы збіраемся абмеркаваць, што гэта за праблема, і вывучыць, як менавіта мы можам маштабаваць і аптымізаваць CI/CD. Такім чынам, прытрымлівайцеся!

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

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

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

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

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

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

Бесперапынная пастаўка

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

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

Праверце гэта:  Як наладзіць Webmin на серверы Ubuntu

Бесперапыннае разгортванне

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

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

Маштабаванне CI/CD

Калі колькасць мікрасэрвісаў павялічваецца, маштабаванне CI/CD становіцца амаль непазбежным. Павелічэнне колькасці мікрасэрвісаў прыводзіць да таго, што розныя канвееры падлучаны да аднаго рэпазітара git, што павялічвае нагрузку на сервер CI і зніжае прадукцыйнасць.

Каб маштабаваць CI/CD, неабходна стварыць стандартызаваны і аўтаматызаваны канвеер распрацоўкі для ўсіх каманд і, адтуль, забяспечыць якасць індывідуальных паставак распрацоўшчыкаў і камандных паставак. Гэта таксама палягчае кіраванне трубаправодам.

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

Затым ідзе працэс CD для стварэння вобразаў і іх пастаяннага разгортвання ў асяроддзях і, нарэшце, вызначэнне працэсу стварэння вобразаў і іх разгортвання ў вытворчым асяроддзі.

Крокі для маштабавання CI/CD

Першы крок – узгадненне канвеера з архітэктарамі з прыцягненнем кіраўнікоў груп. Гэта вынікае з адлюстравання галін Git на асяроддзі (develop -> development і master -> [homologation and production]). Затым адбываецца запуск CI Job пры кожным запыте Pull Request і CD Job пры кожнай змене адлюстраваных галін.

Паток заданняў можа быць створаны як для CI, так і для CD, за якімі трэба сачыць.

Праграма CI Job Flow складаецца з 7 этапаў:

  • Праверце зыходную і мэтавую галіны запытаў на выцягванне;
  • Правярае, ці няма ў зліцці канфліктаў, якія патрабуюць ручнога вырашэння;
  • Запуск модульных тэстаў;
  • Стварыце пакет для праверкі цэласнасці і магчымасці кампіляцыі кода;
  • Праверка якасці трыгернага кода;
  • Павялічыць і зафіксаваць версію праекта ў зыходнай галінцы;
  • Апавяшчаць Git-сховішча Pull Request аб поспеху або няўдачы з дапамогай Webhook або выкліку Rest API (Git-рэпазітар).

Паток заданняў на CD ідзе па наступным шляху:

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

Праводзяцца наступныя мерапрыемствы:

Крок 1: Вобраз Docker ствараецца для згенераванага артэфакта, прымяняючы версію артэфакта да выявы Docker.

Крок 2: Выява загружаецца ў рэестр Docker.

Крок 3: Разгортванне праз разгортванне выявы праз Kubernetes.

Для прыкладных праектаў, якія знаходзяцца ў асяроддзі зацвярджэння/вытворчасці, выканайце крокі 1 і 2 вышэй, а затым наступнае:

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

Аптымізацыя CI/CD

CI/CD паляпшае цыкл распрацоўкі прыкладанняў і вырашае праблемы, выкліканыя інтэграцыяй новага кода і павелічэннем частаты дастаўкі.

Ніжэй паказана, як вы можаце дадаткова аптымізаваць выкарыстанне CI/CD:

Аддайце прыярытэт выпраўленню пашкоджанай зборкі

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

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

Невялікія частыя разгортванні

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

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

Аўтаматызуйце тэсты кантролю якасці для зніжэння рызыкі

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

Давярайце аўтаматычным тэстам

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

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

Праверце гэта:  Як бяспечна ачысціць свой iPhone дэзінфікуюць сурвэткамі

Заўсёды ўлічвайце бяспеку

Улічвайце бяспеку інструмента CI/CD, калі ён інтэгруецца ў існуючыя канфігурацыі або асяроддзя. CI/CD патрабуе, каб усе інструменты тэсціравання бяспекі выклікаліся праграмна, а іх вынікі збіраліся ў адным месцы. Шукайце інструменты, якія маюць API для аўтаматызаванага аўдыту шыфравання.

Перавагі маштабавання і аптымізацыі CI/CD

Акрамя павышэння эфектыўнасці каманд распрацоўшчыкаў, маштабаванне і аптымізацыя CI/CD маюць і іншыя перавагі, некаторыя з якіх:

Зніжэнне накладных выдаткаў

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

Дастаўка з меншай колькасцю памылак і меншым рызыкай

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

Хутчэй рэагаваць на рынкавыя ўмовы

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

Упэўненасць

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

Заключнае слова

CI/CD паскарае вашу інтэграцыю і дастаўку. Аднак важна маштабаваць і аптымізаваць яго, каб працэс не стаў контрпрадуктыўным з-за павелічэння складанасці.

Вы таксама можаце паглядзець на некаторыя з лепшых інструментаў CI.