Kif tibni żvilupp intern sħiħ billi tuża DevOps - esperjenza VTB

Il-prattiki DevOps jaħdmu. Konna konvinti minn dan aħna stess meta naqqasna l-ħin tal-installazzjoni tar-rilaxx b'10 darbiet. Fis-sistema tal-Profil FIS, li nużaw fil-VTB, l-installazzjoni issa tieħu 90 minuti aktar milli 10. Il-ħin tal-bini tar-rilaxx naqas minn ġimgħatejn għal jumejn. In-numru ta' difetti persistenti fl-implimentazzjoni niżel għal kważi minimu. Biex nitbiegħdu minn "xogħol manwali" u neliminaw id-dipendenza fuq il-bejjiegħ, kellna naħdmu bil-krozzi u nsibu soluzzjonijiet mhux mistennija. Taħt il-qatgħa hemm storja dettaljata dwar kif bnejna żvilupp intern sħiħ.

Kif tibni żvilupp intern sħiħ billi tuża DevOps - esperjenza VTB
 

Prologu: DevOps hija filosofija

Matul is-sena li għaddiet, għamilna ħafna xogħol biex norganizzaw l-iżvilupp intern u l-implimentazzjoni tal-prattiki DevOps fil-VTB:

  • Bnejna proċessi ta’ żvilupp intern għal 12-il sistema;
  • Nedejna 15-il pipeline, li erbgħa minnhom tressqu għall-produzzjoni;
  • 1445 xenarju tat-test awtomatizzat;
  • Implimentajna b'suċċess għadd ta' ħarġiet ippreparati minn timijiet interni.

Waħda mill-aktar diffiċli biex tiġi organizzata l-iżvilupp intern u l-implimentazzjoni tal-prattiki DevSecOps irriżulta li kienet is-sistema tal-Profil FIS - proċessur tal-prodott bl-imnut fuq DBMS mhux relazzjonali. Madankollu, stajna nibnu l-iżvilupp, inniedu l-pipeline, ninstallaw pakketti individwali mingħajr rilaxx fuq il-prodott, u tgħallimna kif niġbru r-rilaxxi. Il-kompitu ma kienx faċli, iżda interessanti u mingħajr restrizzjonijiet ovvji fl-implimentazzjoni: hawn is-sistema - għandek bżonn tibni żvilupp intern. L-unika kundizzjoni hija li tuża s-CD qabel ambjent produttiv.

Għall-ewwel, l-algoritmu ta' implimentazzjoni deher sempliċi u ċar:

  • Aħna niżviluppaw għarfien espert tal-iżvilupp inizjali u niksbu livell aċċettabbli ta 'kwalità mit-tim tal-kodiċi mingħajr difetti grossi;
  • Aħna nintegraw fi proċessi eżistenti kemm jista' jkun;
  • Biex tittrasferixxi l-kodiċi bejn l-istadji ovvji, aħna naqtgħu pipeline u nimbottaw wieħed mit-truf tiegħu fil-kontinwazzjoni.

Matul dan iż-żmien, it-tim ta 'żvilupp tad-daqs meħtieġ għandu jiżviluppa ħiliet u jżid is-sehem tal-kontribuzzjoni tiegħu għar-rilaxxi għal livell aċċettabbli. U dan hu, nistgħu nikkunsidraw il-kompitu lest.

Jidher li din hija triq kompletament effiċjenti fl-enerġija għar-riżultat meħtieġ: hawn DevOps, hawn huma l-metriċi tal-prestazzjoni tat-tim, hawn l-għarfien espert akkumulat... Iżda fil-prattika, irċevejna konferma oħra li DevOps għadu dwar il-filosofija , u mhux "mehmuża mal-proċess gitlab, ansible, nexus u aktar 'l isfel fil-lista."

Wara li għal darb'oħra analizzajna l-pjan ta 'azzjoni, indunajna li konna nibnu tip ta' bejjiegħ esternalna ġewwa fina nfusna. Għalhekk, l-inġinerija mill-ġdid tal-proċess ġiet miżjuda mal-algoritmu deskritt hawn fuq, kif ukoll l-iżvilupp tal-kompetenza tul ir-rotta kollha tal-iżvilupp biex jinkiseb rwol ewlieni f'dan il-proċess. Mhux l-eħfef għażla, iżda din hija t-triq ta 'żvilupp ideoloġikament korrett.
 

Fejn jibda l-iżvilupp intern? 

Ma kinitx l-aktar sistema faċli biex taħdem magħha. Arkitettonalment, kien DBMS wieħed kbir mhux relazzjonali, kien jikkonsisti f'ħafna oġġetti eżekutibbli separati (skripts, proċeduri, lottijiet, eċċ.), Li ssejħu kif meħtieġ, u ħadem fuq il-prinċipju ta 'kaxxa sewda: jirċievi talba u kwistjonijiet. risposta. Diffikultajiet oħra ta’ min jinnota jinkludu:

  • Lingwa eżotika (MUMPS);
  • Interfaċċja tal-konsola;
  • Nuqqas ta 'integrazzjoni ma' għodod u oqfsa ta 'awtomazzjoni popolari;
  • Volum tad-dejta f'għexieren ta' terabytes;
  • Tagħbija ta 'aktar minn 2 miljun operazzjoni fis-siegħa;
  • Sinifikat - Kritika tan-Negozju.

Fl-istess ħin, ma kien hemm l-ebda repożitorju tal-kodiċi tas-sors min-naħa tagħna. Fuq kollox. Kien hemm dokumentazzjoni, iżda l-għarfien u l-kompetenzi ewlenin kollha kienu fuq in-naħa ta 'organizzazzjoni esterna.
Bdejna nikkontrollaw l-iżvilupp tas-sistema kważi mill-bidu, b'kont meħud tal-karatteristiċi tagħha u d-distribuzzjoni baxxa. Bdiet f'Ottubru 2018:

  • Studja d-dokumentazzjoni u l-baŜi tal-ġenerazzjoni tal-kodiċi;
  • Studjajna l-kors qasir dwar l-iżvilupp li waslet mingħand il-bejjiegħ;
  • Ħiliet ta' żvilupp inizjali mhaddma;
  • Aħna kkumpilajna manwal tat-taħriġ għal membri ġodda tat-tim;
  • Qbilna li ninkludu t-tim fil-modalità "ġlieda kontra";
  • Solvuta l-kwistjoni bil-kontroll tal-kwalità tal-kodiċi;
  • organizzajna stand għall-iżvilupp.

Għamilna tliet xhur niżviluppaw il-kompetenza u ngħaddu lilna nfusna fis-sistema, u mill-bidu tal-2019, l-iżvilupp intern beda l-moviment tiegħu lejn futur sabiħ, xi drabi b'diffikultà, iżda b'kunfidenza u skop.

Migrazzjoni tar-repożitorju u awtotests

L-ewwel kompitu DevOps huwa r-repożitorju. Aħna malajr qbilna li nipprovdu aċċess, iżda kien meħtieġ li jemigraw mill-SVN attwali b'fergħa ta 'trunk waħda għal Git fil-mira tagħna bit-tranżizzjoni għal mudell ta' diversi fergħat u żvilupp ta 'Git Flow. Għandna wkoll 2 timijiet bl-infrastruttura tagħhom stess, flimkien ma 'parti mit-tim tal-bejjiegħ barra l-pajjiż. Kelli ngħix b'żewġ Gits u niżgura s-sinkronizzazzjoni. F'sitwazzjoni bħal din, kien l-iżgħar minn żewġ ħażen.

Il-migrazzjoni tar-repożitorju ġiet posposta ripetutament; tlestiet biss f'April, bl-għajnuna ta 'kollegi mill-ewwel linja. Bil-Git Flow, iddeċidejna li nżommu l-affarijiet sempliċi għall-bidu u kkonċentraw fuq l-iskema klassika b'hotfix, niżviluppaw u rrilaxxaw. Huma ddeċidew li jabbandunaw kaptan (magħruf ukoll bħala prod). Hawn taħt se nispjegaw għaliex din l-għażla rriżulta li kienet l-aħjar għalina. Repożitorju estern li jappartjeni lill-bejjiegħ, komuni għal żewġ timijiet, intuża bħala ħaddiem. Huwa sinkronizzat mar-repożitorju intern skont skeda. Issa b'Git u Gitlab kien possibbli li jiġu awtomatizzati l-proċessi.

Il-kwistjoni tal-awtotests ġiet solvuta b'mod sorprendenti faċilment - ġejna pprovduti b'qafas lest. B'kont meħud tal-partikolaritajiet tas-sistema, is-sejħa ta 'operazzjoni separata kienet parti li tinftiehem mill-proċess tan-negozju u fl-istess ħin serva bħala test unitarju. Kulma baqa’ kien li tipprepara d-dejta tat-test u tissettja l-ordni mixtieqa tas-sejħa tal-iskripts u l-evalwazzjoni tar-riżultati. Hekk kif il-lista ta 'xenarji, iffurmata fuq il-bażi tal-istatistika tal-operat, il-kritika tal-proċessi u l-metodoloġija ta' rigressjoni eżistenti, mimlija, bdew jidhru testijiet awtomatiċi. Issa nistgħu nibdew nibnu l-pipeline.

Kif kien: il-mudell qabel l-awtomazzjoni

Il-mudell eżistenti tal-proċess ta' implimentazzjoni huwa storja separata. Kull modifika ġiet trasferita manwalment bħala pakkett ta 'installazzjoni inkrementali separat. Wara ġiet ir-reġistrazzjoni manwali fil-Jira u l-installazzjoni manwali fuq l-ambjenti. Għal pakketti individwali, kollox deher ċar, iżda bil-preparazzjoni tar-rilaxx, l-affarijiet kienu aktar ikkumplikati.

L-assemblaġġ sar fil-livell ta 'kunsinni individwali, li kienu oġġetti indipendenti. Kwalunkwe bidla hija kunsinna ġdida. Fost affarijiet oħra, 60-70-il verżjoni teknika ġew miżjuda mal-pakketti 10-15 tal-kompożizzjoni tar-rilaxx prinċipali - verżjonijiet miksuba meta żżid jew teskludi xi ħaġa mir-rilaxx u tirrifletti bidliet fil-bejgħ barra r-rilaxxi.

Oġġetti fi ħdan il-kunsinni kienu jikkoinċidu ma 'xulxin, speċjalment fil-kodiċi eżekutibbli, li kien inqas minn nofs uniku. Kien hemm ħafna dipendenzi kemm fuq il-kodiċi diġà installat kif ukoll fuq dak li l-installazzjoni tiegħu kienet għadha kif ġiet ippjanata. 

Biex tikseb il-verżjoni meħtieġa tal-kodiċi, kien meħtieġ li tiġi segwita b'mod strett l-ordni ta 'installazzjoni, li matulha l-oġġetti ġew miktuba mill-ġdid fiżikament ħafna drabi, xi 10-12-il darba.

Wara l-installazzjoni ta 'lott ta' pakketti, kelli manwalment insegwi l-istruzzjonijiet biex inizjalizza s-settings. Ir-rilaxx ġie mmuntat u installat mill-bejjiegħ. Il-kompożizzjoni tar-rilaxx ġiet iċċarata kważi qabel il-mument tal-implimentazzjoni, li kien jinvolvi l-ħolqien ta 'pakketti ta' "diżakkoppjar". Bħala riżultat, parti sinifikanti tal-provvisti mxiet minn rilaxx għal rilaxx bid-denb tagħha stess ta '"diżakkoppjar".

Issa huwa ċar li b'dan l-approċċ - l-assemblaġġ tal-puzzle tar-rilaxx fil-livell tal-pakkett - fergħa kaptan waħda ma kellha l-ebda tifsira prattika. L-installazzjoni fuq il-produzzjoni ħadet minn siegħa u nofs sa sagħtejn ta 'xogħol manwali. Tajjeb li mill-inqas fil-livell tal-installatur ġiet speċifikata l-ordni tal-ipproċessar tal-oġġett: oqsma u strutturi ġew imdaħħla qabel id-dejta għalihom u l-proċeduri. Madankollu, dan ħadem biss f'pakkett separat.

Ir-riżultat loġiku ta 'dan l-approċċ kien id-difetti ta' installazzjoni obbligatorji fil-forma ta 'verżjonijiet mgħawweġ ta' oġġetti, kodiċi bla bżonn, struzzjonijiet nieqsa u influwenzi reċiproċi ta 'oġġetti, li ġew eliminati b'deni wara r-rilaxx. 

L-ewwel aġġornamenti: jimpenjaw l-assemblaġġ u l-kunsinna

L-awtomazzjoni bdiet billi tittrasmetti kodiċi permezz ta’ pajp tul din ir-rotta:

  • Aqbad il-kunsinna lesta mill-ħażna;
  • Installaha fuq ambjent iddedikat;
  • Mexxi awtotests;
  • Evalwa r-riżultat tal-installazzjoni;
  • Sejħa l-pipeline li ġej fuq in-naħa tal-kmand tal-ittestjar.

Il-pipeline li jmiss għandu jirreġistra l-kompitu f'Jira u jistenna li l-kmandi jitqassmu lil linji tal-ittestjar magħżula, li jiddependu fuq iż-żmien tal-implimentazzjoni tal-kompitu. Trigger - ittra dwar ir-rieda għall-kunsinna f'indirizz partikolari. Dan, ovvjament, kien crutch ovvju, imma kelli nibda x'imkien. F'Mejju 2019, it-trasferiment tal-kodiċi beda b'kontrolli fuq l-ambjenti tagħna. Il-proċess beda, dak kollu li jibqa 'huwa li jinġieb f'forma deċenti:

  • Kull modifika titwettaq f'fergħa separata, li tikkorrispondi għall-pakkett ta 'installazzjoni u tgħaqqad fil-fergħa kaptan fil-mira;
  • Il-grillu tat-tnedija tal-pipeline huwa d-dehra ta 'impenn ġdid fil-fergħa prinċipali permezz ta' talba ta 'għaqda, li tingħalaq minn manutenzjoni mit-tim intern;
  • Ir-repożitorji huma sinkronizzati darba kull ħames minuti;
  • Jinbeda l-assemblaġġ tal-pakkett tal-installazzjoni - bl-użu tal-assemblatur riċevut mill-bejjiegħ.

Wara dan, diġà kien hemm passi eżistenti biex tivverifika u tittrasferixxi l-kodiċi, biex tniedi l-pajp u tiġbor fuq in-naħa tagħna.

Din l-għażla tnediet f'Lulju. Id-diffikultajiet tat-tranżizzjoni rriżultaw f'xi nuqqas ta 'sodisfazzjon fost il-bejjiegħ u l-linja ta' quddiem, iżda matul ix-xahar li ġej irnexxielna nneħħu t-truf mhux maħduma kollha u nistabbilixxu proċess fost it-timijiet. Issa għandna assemblaġġ b'impenn u konsenja.
F'Awwissu, irnexxielna nlestu l-ewwel installazzjoni ta 'pakkett separat fuq il-produzzjoni bl-użu tal-pipeline tagħna, u minn Settembru, mingħajr eċċezzjoni, l-installazzjonijiet kollha ta' pakketti individwali mhux rilaxx saru permezz tal-għodda CD tagħna. Barra minn hekk, irnexxielna niksbu sehem ta 'ħidmiet interni f'40% tal-kompożizzjoni tar-rilaxx b'tim iżgħar mill-bejjiegħ - dan huwa suċċess definit. L-iktar kompitu serju baqa ' - li tiġbor u tinstalla r-rilaxx.

Is-soluzzjoni finali: pakketti ta 'installazzjoni kumulattivi 

Aħna fhimna perfettament li l-kitba tal-istruzzjonijiet tal-bejjiegħ kienet awtomazzjoni hekk hekk; kellna naħsbu mill-ġdid il-proċess innifsu. Is-soluzzjoni kienet ovvja - biex tiġbor provvista kumulattiva mill-fergħa tar-rilaxx bl-oġġetti kollha tal-verżjonijiet meħtieġa.

Bdejna bil-prova tal-kunċett: immuntajna bl-idejn il-pakkett tar-rilaxx skont il-kontenut tal-implimentazzjoni tal-passat u installawh fl-ambjenti tagħna. Kollox ħadem, il-kunċett irriżulta li kien vijabbli. Sussegwentement, solvejna l-kwistjoni tal-iskript tas-settings tal-inizjalizzazzjoni u nklużhom fil-kommit. Ħejjejna pakkett ġdid u ttestjajna f'ambjenti ta 'ttestjar bħala parti mill-aġġornament tal-kontorn. L-installazzjoni kienet ta’ suċċess, għalkemm b’firxa wiesgħa ta’ kummenti mit-tim ta’ implimentazzjoni. Iżda l-ħaġa prinċipali hija li ngħatajna l-approvazzjoni biex nidħlu fil-produzzjoni fir-rilaxx ta 'Novembru mal-assemblaġġ tagħna.

Meta kien fadal ftit aktar minn xahar, il-provvisti magħżula bl-idejn taw x’jifhem b’mod ċar li ż-żmien kien qed jispiċċa. Huma ddeċidew li jagħmlu l-bini mill-fergħa rilaxx, imma għaliex għandha tkun separata? M'għandniex Prod-like, u l-fergħat eżistenti mhumiex tajbin - hemm ħafna kodiċi bla bżonn. Għandna bżonn urġenti li naqtgħu prod-likes, u dan huwa aktar minn tlett elef impenn. L-immuntar bl-idejn mhu għażla xejn. Aħna fassajna skript li jgħaddi mill-ġurnal tal-installazzjoni tal-prodott u jiġbor impenji għall-fergħa. It-tielet darba ħadmet b'mod korrett, u wara li "temm b'fajl" il-fergħa kienet lesta. 

Aħna ktibna l-bennej tagħna stess għall-pakkett ta 'installazzjoni u lestejna f'ġimgħa. Imbagħad kellna nimmodifikaw l-installatur mill-funzjonalità ewlenija tas-sistema, peress li hija open-source. Wara serje ta 'kontrolli u modifiki, ir-riżultat kien ikkunsidrat ta' suċċess. Sadanittant, il-kompożizzjoni tar-rilaxx ħadet forma, għall-installazzjoni korretta tagħha kien meħtieġ li jiġi allinjat iċ-ċirkwit tat-test ma 'dak tal-produzzjoni, u nkiteb script separat għal dan.

Naturalment, kien hemm ħafna kummenti dwar l-ewwel installazzjoni, iżda b'mod ġenerali l-kodiċi ħadem. U wara madwar it-tielet installazzjoni kollox beda jidher tajjeb. Il-kontroll tal-kompożizzjoni u l-kontroll tal-verżjoni tal-oġġetti ġew immonitorjati separatament f'mod manwali, li f'dan l-istadju kien pjuttost iġġustifikat.

Sfida addizzjonali kienet in-numru kbir ta' non-rilaxxi li kellhom jiġu kkunsidrati. Iżda bil-fergħa bħal Prod u Rebase, il-kompitu sar trasparenti.

L-ewwel darba, malajr u mingħajr żbalji

Avvicinajna r-rilaxx b'attitudni ottimista u aktar minn tużżana installazzjonijiet ta 'suċċess fuq ċirkwiti differenti. Iżda litteralment jum qabel l-iskadenza, irriżulta li l-bejjiegħ ma kienx lesti x-xogħol biex jipprepara r-rilaxx għall-installazzjoni bil-mod aċċettat. Jekk għal xi raġuni l-bini tagħna ma taħdimx, ir-rilaxx se jiġi mfixkel. Barra minn hekk, permezz tal-isforzi tagħna, li huwa speċjalment spjaċevoli. Ma kellna l-ebda mod kif nirtiraw. Għalhekk, ħsibna f'għażliet alternattivi, ħejjejna pjanijiet ta 'azzjoni u bdejna l-installazzjoni.

B'mod sorprendenti, ir-rilaxx kollu, li jikkonsisti f'aktar minn 800 oġġett, beda b'mod korrett, l-ewwel darba u f'10 minuti biss. Għamilna siegħa niċċekkjaw ir-zkuk infittxu żbalji, iżda ma sibna l-ebda.

L-għada kollu kien hemm silenzju fiċ-chat tar-rilaxx: l-ebda problemi ta 'implimentazzjoni, verżjonijiet mgħawweġ jew kodiċi "mhux xieraq". Kien anke b'xi mod skomdi. Aktar tard, ħarġu xi kummenti, iżda meta mqabbla ma 'sistemi oħra u esperjenza preċedenti, in-numru u l-prijorità tagħhom kienu notevolment aktar baxxi.

Effett addizzjonali mill-effett kumulattiv kien żieda fil-kwalità tal-assemblaġġ u l-ittestjar. Minħabba installazzjonijiet multipli tar-rilaxx sħiħ, difetti fil-bini u żbalji fl-iskjerament ġew identifikati fil-ħin. L-ittestjar f'konfigurazzjonijiet ta 'rilaxx sħiħ għamilha possibbli li jiġu identifikati addizzjonalment difetti fl-influwenza reċiproka ta' oġġetti li ma dehrux waqt installazzjonijiet inkrementali. Żgur li kien suċċess, speċjalment meta wieħed iqis il-kontribut tagħna ta’ 57% għar-rilaxx.

Riżultati u konklużjonijiet

F'inqas minn sena irnexxielna:

  • Ibni żvilupp intern sħiħ billi tuża sistema eżotika;
  • Elimina d-dipendenza kritika tal-bejjiegħ;
  • Tnedija CI/CD għal wirt mhux faċli ħafna;
  • Jgħollu l-proċessi ta' implimentazzjoni għal livell tekniku ġdid;
  • Naqqas b'mod sinifikanti l-ħin tal-iskjerament;
  • Naqqas b'mod sinifikanti n-numru ta 'żbalji ta' implimentazzjoni;
  • Iddikjara ruħek b'mod kunfidenti bħala espert ewlieni tal-iżvilupp.

Naturalment, ħafna minn dak deskritt jidher qisu ħażin għal kollox, iżda dawn huma l-karatteristiċi tas-sistema u l-limitazzjonijiet tal-proċess li jeżistu fiha. Bħalissa, il-bidliet affettwaw il-prodotti u s-servizzi tal-IS Profile (kontijiet prinċipali, kards tal-plastik, kontijiet ta 'tfaddil, escrow, self ta' flus), iżda potenzjalment l-approċċ jista 'jiġi applikat għal kwalunkwe IS li għalih huwa stabbilit il-kompitu tal-implimentazzjoni tal-prattiki DevOps. Il-mudell kumulattiv jista 'jiġi replikat b'mod sikur għal implimentazzjonijiet sussegwenti (inklużi dawk mhux rilaxx) minn ħafna kunsinni.

Sors: www.habr.com

Żid kumment