Giunsa paghimo ang usa ka hingpit nga pag-uswag sa balay gamit ang DevOps - kasinatian sa VTB

Ang mga gawi sa DevOps nagtrabaho. Kami mismo kombinsido niini sa dihang among gipakubsan ang oras sa pag-instalar sa pagpagawas sa 10 ka beses. Sa sistema sa FIS Profile, nga among gigamit sa VTB, ang pag-instalar karon nagkinahanglan og 90 minutos kaysa 10. Ang pagpagawas sa panahon sa pagtukod mikunhod gikan sa duha ka semana ngadto sa duha ka adlaw. Ang gidaghanon sa nagpadayon nga mga depekto sa pagpatuman mikunhod ngadto sa hapit usa ka minimum. Aron makalayo gikan sa "manual labor" ug mawagtang ang pagsalig sa vendor, kinahanglan kaming magtrabaho uban ang mga saklay ug mangita sa wala damha nga mga solusyon. Ubos sa pagputol mao ang usa ka detalyado nga istorya kung giunsa namo pagtukod ang usa ka hingpit nga internal nga kalamboan.

Giunsa paghimo ang usa ka hingpit nga pag-uswag sa balay gamit ang DevOps - kasinatian sa VTB
 

Prologue: Ang DevOps usa ka pilosopiya

Sa miaging tuig, nakahimo kami og daghang trabaho aron maorganisar ang internal nga pag-uswag ug pagpatuman sa mga gawi sa DevOps sa VTB:

  • Nagtukod kami og internal nga mga proseso sa pagpalambo alang sa 12 ka sistema;
  • Naglunsad kami og 15 ka mga pipeline, upat niini ang gidala ngadto sa produksyon;
  • Automated 1445 nga mga senaryo sa pagsulay;
  • Malampuson namon nga gipatuman ang daghang mga pagpagawas nga giandam sa mga in-house nga team.

Usa sa labing lisud nga pag-organisar sa inhouse nga pag-uswag ug pagpatuman sa mga gawi sa DevSecOps nahimo nga FIS Profile system - usa ka tigproseso sa produkto sa tingi sa usa ka dili relasyonal nga DBMS. Bisan pa, nakahimo kami sa pagtukod sa pag-uswag, paglansad sa pipeline, pag-install sa indibidwal nga mga non-release nga pakete sa produkto, ug nahibal-an kung giunsa ang pag-assemble sa mga pagpagawas. Ang buluhaton dili sayon, apan makapaikag ug walay klaro nga mga pagdili sa pagpatuman: ania ang sistema - kinahanglan nimo nga magtukod og in-house development. Ang bugtong kondisyon mao ang paggamit sa CD sa dili pa ang usa ka produktibo nga palibot.

Sa sinugdan, ang algorithm sa pagpatuman ingon yano ug klaro:

  • Gipalambo namo ang inisyal nga kahanas sa pagpalambo ug nakab-ot ang madawat nga lebel sa kalidad gikan sa code team nga walay mga depekto;
  • Nag-integrate kami sa kasamtangan nga mga proseso kutob sa mahimo;
  • Aron mabalhin ang code tali sa klaro nga mga yugto, among giputol ang usa ka pipeline ug iduso ang usa sa mga tumoy niini sa pagpadayon.

Niini nga panahon, ang grupo sa pagpauswag sa gikinahanglan nga gidak-on kinahanglan nga magpalambo sa mga kahanas ug magdugang sa bahin sa kontribusyon niini sa mga pagpagawas sa usa ka madawat nga lebel. Ug mao kana, mahimo natong ikonsiderar ang buluhaton nga nahuman.

Mopatim-aw nga kini usa ka bug-os nga kusog sa enerhiya nga agianan padulong sa gikinahanglan nga resulta: ania ang DevOps, ania ang mga sukatan sa performance sa team, ania ang natipon nga kahanas... Apan sa praktis, nakadawat kami og laing kumpirmasyon nga ang DevOps kabahin gihapon sa pilosopiya , ug dili "gilakip sa proseso sa gitlab, ansible, nexus ug labi pa sa lista."

Sa pag-analisar pag-usab sa plano sa aksyon, nahibal-an namon nga nagtukod kami usa ka klase nga tigbaligya sa gawas sa among kaugalingon. Busa, ang proseso sa reengineering gidugang sa algorithm nga gihulagway sa ibabaw, ingon man ang pag-uswag sa kahanas sa tibuuk nga ruta sa pag-uswag aron makab-ot ang usa ka nanguna nga papel sa kini nga proseso. Dili ang labing kadali nga kapilian, apan kini ang dalan sa husto nga pag-uswag sa ideolohiya.
 

Asa magsugod ang inhouse development? 

Dili kini ang labing mahigalaon nga sistema nga magamit. Sa arkitektura, kini usa ka dako nga non-relational nga DBMS, nga gilangkuban sa daghang bulag nga mga butang nga mahimo (mga script, mga pamaagi, mga batch, ug uban pa), nga gitawag kung gikinahanglan, ug nagtrabaho sa prinsipyo sa usa ka itom nga kahon: nakadawat kini usa ka hangyo ug mga isyu. usa ka tubag. Ang ubang mga kalisdanan nga angay matikdan naglakip sa:

  • Exotic nga pinulongan (MUMPS);
  • Interface sa console;
  • Kakulang sa integrasyon sa popular nga mga himan sa automation ug mga frameworks;
  • Ang gidaghanon sa datos sa napulo ka terabytes;
  • Pagkarga sa kapin sa 2 milyon nga operasyon matag oras;
  • Kamahinungdanon - Negosyo-Kritikal.

Sa samang higayon, walay source code repository sa among kiliran. Sa tanan. Adunay dokumentasyon, apan ang tanan nga yawe nga kahibalo ug katakus anaa sa kiliran sa usa ka eksternal nga organisasyon.
Gisugdan namon ang pag-master sa pag-uswag sa sistema hapit gikan sa wala, nga gikonsiderar ang mga bahin niini ug ubos nga pag-apod-apod. Nagsugod sa Oktubre 2018:

  • Nagtuon sa dokumentasyon ug mga sukaranan sa paghimo sa code;
  • Among gitun-an ang mubo nga kurso sa kalamboan nga nadawat gikan sa vendor;
  • Nahanas sa pasiunang mga kahanas sa pag-uswag;
  • Naghimo kami og usa ka manwal sa pagbansay alang sa bag-ong mga miyembro sa team;
  • Nagkasabot mi nga iapil ang team sa “combat” mode;
  • Nasulbad ang isyu sa pagkontrol sa kalidad sa code;
  • Nag-organisar kami og baruganan alang sa kalamboan.

Gigugol namo ang tulo ka bulan sa pagpalambo sa kahanas ug pagpaunlod sa among kaugalingon sa sistema, ug gikan sa sinugdanan sa 2019, ang inhouse development nagsugod sa paglihok niini ngadto sa usa ka masanag nga kaugmaon, usahay adunay kalisud, apan masaligon ug may katuyoan.

Paglalin sa repository ug mga autotest

Ang una nga buluhaton sa DevOps mao ang repositoryo. Kami dali nga nagkauyon sa paghatag og access, apan gikinahanglan ang paglalin gikan sa kasamtangan nga SVN nga adunay usa ka punoan nga sanga ngadto sa among target nga Git uban ang pagbalhin ngadto sa usa ka modelo sa daghang mga sanga ug pagpalambo sa Git Flow. Naa pud mi 2 teams nga naay kaugalingong infrastructure, plus part sa vendor's team sa abroad. Kinahanglan kong magpuyo uban sa duha ka Gits ug pagsiguro sa pag-synchronize. Sa ingon nga kahimtang, kini ang labing gamay sa duha nga mga daotan.

Ang paglalin sa repository balik-balik nga gi-postpone; nahuman ra kini kaniadtong Abril, sa tabang sa mga kauban gikan sa linya sa unahan. Uban sa Git Flow, nakahukom kami nga ipadayon ang mga butang nga yano alang sa pagsugod ug husayon ​​ang klasiko nga laraw nga adunay hotfix, pagpalambo ug pagpagawas. Nakahukom sila nga biyaan ang master (aka prod-like). Sa ubos among ipasabut kung ngano nga kini nga kapilian nahimo nga labing maayo alang kanamo. Usa ka eksternal nga tipiganan nga iya sa vendor, nga kasagaran sa duha ka mga team, gigamit isip usa ka trabahante. Gi-synchronize kini sa internal nga repository sumala sa usa ka iskedyul. Karon sa Git ug Gitlab posible nga ma-automate ang mga proseso.

Ang isyu sa mga autotest dali nga nasulbad - gihatagan kami usa ka andam nga balangkas. Giisip ang mga peculiarities sa sistema, ang pagtawag sa usa ka bulag nga operasyon usa ka masabtan nga bahin sa proseso sa negosyo ug sa samang higayon nagsilbi nga usa ka pagsulay sa yunit. Ang nahabilin mao ang pag-andam sa datos sa pagsulay ug pagtakda sa gitinguha nga han-ay sa pagtawag sa mga script ug pagtimbang-timbang sa mga resulta. Ingon nga ang lista sa mga senaryo, naporma pinasukad sa mga istatistika sa operasyon, ang kritikal nga mga proseso ug ang naa na nga pamaagi sa pagbag-o, napuno, ang mga awtomatikong pagsulay nagsugod sa pagpakita. Karon makasugod na kami sa pagtukod sa pipeline.

Giunsa kini: ang modelo sa wala pa ang automation

Ang kasamtangan nga modelo sa proseso sa pagpatuman usa ka bulag nga istorya. Ang matag pagbag-o mano-mano nga gibalhin isip usa ka bulag nga incremental nga pakete sa pag-install. Sunod miabut ang manwal nga pagrehistro sa Jira ug manwal nga pag-instalar sa mga palibot. Alang sa indibidwal nga mga pakete, ang tanan tan-awon nga klaro, apan sa pag-andam sa pagpagawas, ang mga butang mas komplikado.

Ang asembliya gihimo sa lebel sa mga indibidwal nga paghatod, nga independente nga mga butang. Ang bisan unsang pagbag-o usa ka bag-ong pagpadala. Lakip sa ubang mga butang, 60-70 nga mga teknikal nga bersyon ang gidugang sa 10-15 nga mga pakete sa panguna nga komposisyon sa pagpagawas - mga bersyon nga nakuha kung gidugang o wala iapil ang usa ka butang gikan sa pagpagawas ug nagpakita sa mga pagbag-o sa mga baligya sa gawas nga pagpagawas.

Ang mga butang sa sulod sa mga paghatud nagsapaw sa usag usa, labi na sa executable code, nga wala’y katunga nga talagsaon. Adunay daghang mga dependency sa na-install na nga code ug sa usa kansang pag-instalar bag-o lang giplano. 

Aron makuha ang gikinahanglan nga bersyon sa code, gikinahanglan nga higpit nga sundon ang han-ay sa pag-instalar, diin ang mga butang pisikal nga gisulat pag-usab sa daghang mga higayon, mga 10-12 ka beses.

Pagkahuman sa pag-instalar sa usa ka hugpong sa mga pakete, kinahanglan nako nga mano-mano nga sundon ang mga panudlo aron masugdan ang mga setting. Ang pagpagawas gitigum ug gi-install sa vendor. Ang komposisyon sa pagpagawas gipatin-aw hapit sa wala pa ang panahon sa pagpatuman, nga naglakip sa paghimo sa "decoupling" nga mga pakete. Ingon usa ka sangputanan, usa ka hinungdanon nga bahin sa mga suplay ang mibalhin gikan sa pagpagawas hangtod sa pagpagawas nga adunay kaugalingon nga ikog sa "decouplings".

Karon klaro nga sa kini nga pamaagi - pag-assemble sa puzzle sa pagpagawas sa lebel sa pakete - ang usa ka master branch walay praktikal nga kahulogan. Ang pag-instalar sa produksyon gikuha gikan sa usa ug tunga ngadto sa duha ka oras nga manual labor. Maayo nga labing menos sa lebel sa installer ang han-ay sa pagproseso sa butang gipiho: ang mga natad ug mga istruktura gisulod sa wala pa ang datos alang kanila ug mga pamaagi. Bisan pa, kini nagtrabaho lamang sulod sa usa ka bulag nga pakete.

Ang lohikal nga resulta niini nga pamaagi mao ang obligado nga mga depekto sa pag-instalar sa porma sa hiwi nga mga bersyon sa mga butang, wala kinahanglana nga code, nawala nga mga instruksyon ug wala maisip alang sa mutual nga mga impluwensya sa mga butang, nga hilanat nga giwagtang human sa pagpagawas. 

Una nga mga pag-update: paghimo sa asembliya ug paghatud

Nagsugod ang pag-automate pinaagi sa pagpadala sa code pinaagi sa usa ka tubo sa kini nga ruta:

  • Kuhaa ang nahuman nga pagpadala gikan sa pagtipig;
  • I-install kini sa usa ka gipahinungod nga palibot;
  • Pagdalag mga autotest;
  • Pagtimbang-timbang sa resulta sa pag-instalar;
  • Tawga ang mosunod nga pipeline sa kilid sa testing command.

Ang sunod nga pipeline kinahanglang magparehistro sa buluhaton sa Jira ug maghulat sa mga sugo nga ipang-apod-apod ngadto sa pinili nga mga testing loops, nga nagdepende sa panahon sa pagpatuman sa buluhaton. Trigger - usa ka sulat bahin sa pagkaandam alang sa pagpadala sa usa ka gihatag nga adres. Kini, siyempre, usa ka dayag nga saklay, apan kinahanglan kong magsugod sa usa ka dapit. Sa Mayo 2019, ang pagbalhin sa code nagsugod sa mga pagsusi sa among mga palibot. Nagsugod na ang proseso, ang nahabilin mao ang pagdala niini sa desente nga porma:

  • Ang matag pagbag-o gihimo sa usa ka bulag nga sanga, nga katumbas sa pakete sa pag-install ug gisagol sa target master branch;
  • Ang pipeline launch trigger mao ang dagway sa bag-ong commit sa master branch pinaagi sa merge request, nga gisirhan sa mga maintainers gikan sa inhouse team;
  • Ang mga repositoryo gi-synchronize kausa matag lima ka minuto;
  • Ang asembliya sa instalasyon nga pakete gisugdan - gamit ang assembler nga nadawat gikan sa vendor.

Human niini, aduna nay mga lakang sa pagsusi ug pagbalhin sa code, sa paglansad sa tubo ug pag-assemble sa among kilid.

Kini nga opsyon gilusad niadtong Hulyo. Ang mga kalisud sa transisyon miresulta sa pipila ka pagkadiskontento sa vendor ug sa atubangan nga linya, apan sa sunod nga bulan nakahimo kami sa pagtangtang sa tanan nga bagis nga mga kilid ug nagtukod og usa ka proseso taliwala sa mga team. Naa na miy assembly by commit ug delivery.
Niadtong Agosto, nakahimo kami sa pagkompleto sa unang pag-instalar sa usa ka bulag nga pakete sa produksyon gamit ang among pipeline, ug sukad sa Septembre, nga walay eksepsiyon, ang tanan nga pag-instalar sa indibidwal nga non-release nga mga pakete gihimo pinaagi sa among CD tool. Dugang pa, nakahimo kami nga makab-ot ang usa ka bahin sa mga buluhaton sa balay sa 40% sa komposisyon sa pagpagawas nga adunay usa ka gamay nga team kaysa sa vendor - kini usa ka tino nga kalampusan. Ang labing seryoso nga buluhaton nagpabilin - sa pag-assemble ug pag-instalar sa pagpagawas.

Ang katapusan nga solusyon: cumulative installation packages 

Nasabtan namo pag-ayo nga ang pag-script sa mga instruksyon sa vendor usa ka kaayo nga automation; kinahanglan namon nga hunahunaon pag-usab ang proseso mismo. Ang solusyon mao ang dayag - sa pagkolekta sa usa ka cumulative suplay gikan sa release sanga uban sa tanan nga mga butang sa gikinahanglan nga mga bersyon.

Nagsugod kami sa pruweba sa konsepto: among gipundok sa kamot ang pakete sa pagpagawas sumala sa sulud sa miaging pagpatuman ug gi-install kini sa among mga palibot. Ang tanan nagtrabaho, ang konsepto nahimo nga mabuhi. Sunod, nasulbad namo ang isyu sa pag-script sa mga setting sa initialization ug ilakip kini sa commit. Nag-andam kami usa ka bag-ong pakete ug gisulayan kini sa mga palibot sa pagsulay isip bahin sa pag-update sa contour. Malampuson ang pag-instalar, bisan pa nga adunay daghang mga komento gikan sa team sa pagpatuman. Apan ang panguna nga butang mao nga gihatagan kami sa pag-adto sa produksiyon sa pagpagawas sa Nobyembre kauban ang among asembliya.

Sa kapin na sa usa ka bulan nga nahabilin, ang gipili nga mga suplay tin-aw nga nagpaila nga hapit na ang oras. Nakahukom sila sa paghimo sa pagtukod gikan sa sanga sa pagpagawas, apan nganong kini kinahanglan nga ibulag? Wala kami usa ka Prod-like, ug ang mga naglungtad nga mga sanga dili maayo - adunay daghang dili kinahanglan nga code. Kinahanglan gyud namo nga putlon ang mga prod-like, ug kini kapin sa tulo ka libo nga mga pasalig. Ang pagpundok pinaagi sa kamot dili usa ka kapilian. Nag-sketch kami og script nga nagdagan sa log sa pag-install sa produkto ug nagkolekta sa mga commit sa branch. Sa ikatulo nga higayon nga kini nagtrabaho sa husto, ug pagkahuman sa "pagtapos sa usa ka file" ang sanga andam na. 

Gisulat namon ang among kaugalingon nga tigtukod alang sa pakete sa pag-install ug nahuman kini sa usa ka semana. Unya kinahanglan namong usbon ang installer gikan sa core functionality sa system, tungod kay open-source kini. Human sa sunodsunod nga mga pagsusi ug mga kausaban, ang resulta giisip nga malampuson. Sa kasamtangan, ang komposisyon sa pagpagawas naporma, alang sa husto nga pag-instalar diin gikinahanglan ang pag-align sa test circuit sa produksyon, ug usa ka linain nga script ang gisulat alang niini.

Siyempre, adunay daghang mga komento bahin sa una nga pag-install, apan sa kinatibuk-an ang code nagtrabaho. Ug pagkahuman sa ikatulo nga pag-instalar ang tanan nagsugod nga maayo tan-awon. Ang pagkontrol sa komposisyon ug pagkontrol sa bersyon sa mga butang gilain nga gibantayan sa manual mode, nga sa kini nga yugto makatarunganon.

Ang usa ka dugang nga hagit mao ang daghang gidaghanon sa mga dili pagpagawas nga kinahanglan nga tagdon. Apan sa sanga nga sama sa Prod ug Rebase, nahimong transparent ang buluhaton.

Sa unang higayon, dali ug walay mga sayop

Giduol namo ang pagpagawas nga adunay usa ka malaumon nga kinaiya ug labaw pa sa usa ka dosena nga malampuson nga mga pag-install sa lainlaing mga sirkito. Apan sa literal usa ka adlaw sa wala pa ang deadline, kini nahimo nga ang vendor wala makompleto ang trabaho aron maandam ang pagpagawas alang sa pag-instalar sa gidawat nga paagi. Kung sa usa ka hinungdan ang among pagtukod dili molihok, ang pagpagawas mabalda. Dugang pa, pinaagi sa atong mga paningkamot, nga mao ang ilabi na unpleasant. Kami walay paagi sa pag-atras. Busa, naghunahuna kami pinaagi sa alternatibong mga kapilian, nag-andam sa mga plano sa aksyon ug nagsugod sa pag-instalar.

Katingad-an, ang tibuuk nga pagpagawas, nga gilangkuban sa labaw sa 800 nga mga butang, nagsugod sa husto, sa una nga higayon ug sa 10 minuto lang. Gigugol namo ang usa ka oras sa pagsusi sa mga troso nga nangita og mga sayop, apan wala'y nakit-an.

Sa tibuok sunod nga adlaw adunay kahilom sa pagpagawas sa chat: walay mga problema sa pagpatuman, hiwi nga mga bersyon o "dili angay" nga code. Awkward man gani. Sa ulahi, pipila ka mga komentaryo ang mitumaw, apan kon itandi sa ubang mga sistema ug sa miaging kasinatian, ang ilang gidaghanon ug prayoridad mas ubos.

Ang usa ka dugang nga epekto gikan sa kumulatibo nga epekto mao ang pagdugang sa kalidad sa asembliya ug pagsulay. Tungod sa daghang mga pag-install sa tibuuk nga pagpagawas, ang mga depekto sa pagtukod ug mga sayup sa pag-deploy nahibal-an sa tukma sa panahon nga paagi. Ang pagsulay sa bug-os nga mga pag-configure sa pagpagawas nagpaposible sa dugang nga pag-ila sa mga depekto sa us aka impluwensya sa mga butang nga wala makita sa panahon sa mga incremental nga pag-install. Kini siguradong usa ka kalampusan, labi na gihatagan ang among 57% nga kontribusyon sa pagpagawas.

Mga sangputanan ug konklusyon

Wala pay usa ka tuig nakahimo kami sa:

  • Paghimo usa ka hingpit nga internal nga pag-uswag gamit ang usa ka exotic nga sistema;
  • Pagwagtang sa kritikal nga pagsalig sa vendor;
  • Ilunsad ang CI/CD alang sa dili mahigalaon nga kabilin;
  • Ipataas ang mga proseso sa pagpatuman ngadto sa bag-ong teknikal nga lebel;
  • Mahinungdanon nga pagkunhod sa oras sa pag-deploy;
  • Mahinungdanon nga pagkunhod sa gidaghanon sa mga sayup sa pagpatuman;
  • Masaligon nga ipahayag ang imong kaugalingon ingon usa ka nanguna nga eksperto sa pag-uswag.

Siyempre, kadaghanan sa gihulagway nga morag walay pulos, apan kini ang mga bahin sa sistema ug ang mga limitasyon sa proseso nga anaa niini. Sa pagkakaron, ang mga pagbag-o nakaapekto sa mga produkto ug serbisyo sa IS Profile (mga master account, plastic card, savings account, escrow, cash loans), apan posibleng ang pamaagi mahimong magamit sa bisan unsang IS diin ang tahas sa pagpatuman sa mga gawi sa DevOps gitakda. Ang cumulative nga modelo mahimong luwas nga makopya alang sa sunod nga mga pagpatuman (lakip ang mga dili gipagawas) gikan sa daghang mga paghatud.

Source: www.habr.com

Idugang sa usa ka comment