Ki jan yo bati yon devlopman entèn konplè lè l sèvi avèk DevOps - eksperyans VTB

Pratik DevOps travay. Nou te konvenki sa a tèt nou lè nou redwi tan an enstalasyon lage pa 10 fwa. Nan sistèm Profile FIS, ke nou itilize nan VTB, enstalasyon kounye a pran 90 minit olye ke 10. Tan an konstriksyon lage te diminye soti nan de semèn a de jou. Nimewo a nan domaj aplikasyon ki pèsistan te tonbe nan prèske yon minimòm. Pou wete "travay manyèl" epi elimine depandans sou vandè a, nou te oblije travay ak beki epi jwenn solisyon inatandi. Anba a koupe a se yon istwa detaye sou fason nou bati yon devlopman entèn konplè.

Ki jan yo bati yon devlopman entèn konplè lè l sèvi avèk DevOps - eksperyans VTB
 

Pwològ: DevOps se yon filozofi

Pandan ane ki sot pase a, nou te fè anpil travay pou òganize devlopman entèn ak aplikasyon pratik DevOps nan VTB:

  • Nou bati pwosesis devlopman entèn pou 12 sistèm;
  • Nou te lanse 15 tiyo, kat ladan yo te mennen nan pwodiksyon;
  • Otomatik 1445 senaryo tès;
  • Nou te aplike avèk siksè yon kantite lage ki te prepare pa ekip anndan kay yo.

Youn nan pi difisil yo òganize devlopman ak aplikasyon DevSecOps pratik yo te tounen sistèm nan Profile FIS - yon processeur pwodwi Yo Vann an Detay sou yon DBMS ki pa relasyon. Men, nou te kapab bati devlopman an, lanse tiyo a, enstale pakè endividyèl ki pa lage sou pwodwi a, ak aprann ki jan yo rasanble degaje. Travay la pa t 'fasil, men enteresan epi san restriksyon evidan nan aplikasyon: isit la se sistèm nan - ou bezwen bati yon devlopman nan kay la. Sèl kondisyon se pou itilize CD a devan yon anviwònman pwodiktif.

Okòmansman, algorithm aplikasyon an te sanble senp epi klè:

  • Nou devlope premye ekspètiz devlopman ak reyalize yon nivo akseptab nan bon jan kalite nan ekip kòd la san domaj brit;
  • Nou entegre nan pwosesis ki egziste deja otank posib;
  • Pou transfere kòd ant etap evidan, nou koupe yon tiyo epi pouse youn nan bout li yo nan kontinyasyon an.

Pandan tan sa a, ekip devlopman nan gwosè yo mande yo dwe devlope ladrès ak ogmante pati nan kontribisyon li nan degaje yo nan yon nivo akseptab. Epi sa a, nou ka konsidere travay la fini.

Li ta sanble ke sa a se yon chemen konplètman efikas nan rezilta yo mande yo: isit la se DevOps, isit la se mezi pèfòmans ekip la, isit la se ekspètiz nan akimile ... Men, nan pratik, nou te resevwa yon lòt konfimasyon ke DevOps toujou sou filozofi. , epi yo pa "tache ak pwosesis gitlab la, ansible, lyen ak pi lwen anba lis la."

Gen yon lòt fwa ankò analize plan aksyon an, nou reyalize ke nou te bati yon kalite machann externalisation nan tèt nou. Se poutèt sa, yo te ajoute reenjenyè pwosesis nan algorithm ki dekri pi wo a, ansanm ak devlopman nan ekspètiz sou wout devlopman tout antye pou reyalize yon wòl dirijan nan pwosesis sa a. Pa opsyon ki pi fasil, men sa a se chemen devlopman ideolojikman kòrèk.
 

Ki kote devlopman nan kay la kòmanse? 

Se pa sistèm ki pi zanmitay pou travay avèk yo. Achitekti, li te yon sèl gwo DBMS ki pa relasyon, ki te konpoze de anpil objè ègzekutabl separe (scripts, pwosedi, lo, elatriye), ki te rele jan sa nesesè, ak travay sou prensip la nan yon bwat nwa: li resevwa yon demann ak pwoblèm. yon repons. Lòt difikilte ki vo anyen yo enkli:

  • Lang ekzotik (MUMPS);
  • koòdone konsole;
  • Mank entegrasyon ak zouti ak kad automatisation popilè;
  • Volim done an dè dizèn de terabytes;
  • Chaj plis pase 2 milyon operasyon pou chak èdtan;
  • Siyifikasyon - biznis-kritik.

An menm tan an, pa te gen okenn depo kòd sous sou bò nou an. Nan tout. Te gen dokiman, men tout konesans ak konpetans kle yo te sou bò yon òganizasyon ekstèn.
Nou te kòmanse metrize devlopman sistèm nan prèske soti nan grafouyen, pran an kont karakteristik li yo ak distribisyon ki ba. Kòmanse nan mwa Oktòb 2018:

  • Etidye dokimantasyon ak baz jenerasyon kòd;
  • Nou etidye kou kout sou devlopman yo te resevwa nan men vandè a;
  • Metriz ladrès devlopman inisyal;
  • Nou te konpile yon manyèl fòmasyon pou nouvo manm ekip yo;
  • Nou te dakò mete ekip la nan mòd "konba";
  • Rezoud pwoblèm nan ak kontwòl kalite kòd;
  • Nou te òganize yon kanpe pou devlopman.

Nou te pase twa mwa devlope ekspètiz ak plonje tèt nou nan sistèm nan, epi depi nan konmansman an nan 2019, devlopman entèn yo te kòmanse mouvman li nan direksyon pou yon avni briyan, pafwa ak difikilte, men konfyans ak objektif.

Migrasyon depo ak tès oto

Premye travay DevOps la se repozitwa a. Nou te byen vit dakò sou bay aksè, men li te nesesè yo imigre soti nan SVN aktyèl la ak yon sèl branch kòf nan Git sib nou an ak tranzisyon an nan yon modèl nan plizyè branch ak devlopman nan Git Flow. Nou gen tou 2 ekip ak pwòp enfrastrikti pa yo, plis yon pati nan ekip machann a aletranje. Mwen te oblije viv ak de Gits epi asire senkronizasyon. Nan yon sitiyasyon konsa, li te pi piti a nan de mal.

Migrasyon an nan depo a te repete ranvwaye; li te fini sèlman nan mwa avril, avèk èd nan kòlèg nan liy devan an. Avèk Git Flow, nou te deside kenbe bagay sa yo senp pou yon kòmansman ak rezoud sou konplo a klasik ak repare, devlope ak lage. Yo deside abandone mèt (aka prod-like). Anba a nou pral eksplike poukisa opsyon sa a te tounen pi bon pou nou. Yon depo ekstèn ki fè pati vandè a, komen pou de ekip, te itilize kòm yon travayè. Li senkronize ak depo entèn la dapre yon orè. Koulye a, ak Git ak Gitlab li te posib otomatize pwosesis.

Pwoblèm ototest yo te rezoud etonanman fasil - yo te bay nou yon fondasyon pare. Lè w pran an kont sengularite yo nan sistèm nan, rele yon operasyon separe se te yon pati konpreyansib nan pwosesis biznis la ak an menm tan an te sèvi kòm yon tès inite. Tout sa ki te rete se te prepare done tès yo epi mete lòd la vle pou rele scripts yo ak evalye rezilta yo. Kòm lis la nan senaryo, ki te fòme sou baz estatistik operasyon yo, kritik nan pwosesis ak metodoloji nan regresyon ki deja egziste, ranpli, tès otomatik yo te kòmanse parèt. Koulye a, nou ta ka kòmanse bati tiyo a.

Ki jan li te ye: modèl la anvan automatisation

Modèl ki egziste deja nan pwosesis aplikasyon an se yon istwa separe. Chak modifikasyon te transfere manyèlman kòm yon pake enstalasyon incrémentielle separe. Apre sa, te vini manyèl enskripsyon nan Jira ak enstalasyon manyèl sou anviwònman. Pou pakè endividyèl yo, tout bagay te sanble klè, men ak preparasyon an nan liberasyon an, bagay yo te pi konplike.

Asanble te pote soti nan nivo livrezon endividyèl, ki te objè endepandan. Nenpòt chanjman se yon nouvo livrezon. Pami lòt bagay, 60-70 vèsyon teknik yo te ajoute nan 10-15 pakè yo nan konpozisyon prensipal la lage - vèsyon yo jwenn lè ajoute oswa eskli yon bagay nan lage a ak reflete chanjman nan lavant deyò degaje.

Objè nan livrezon yo sipèpoze youn ak lòt, espesyalman nan kòd la ègzèkutabl, ki te mwens pase mwatye inik. Te gen anpil depandans tou de sou kòd la deja enstale ak sou youn nan ki gen enstalasyon te jis planifye. 

Pou jwenn vèsyon ki nesesè nan kòd la, li te nesesè yo estrikteman swiv lòd enstalasyon an, pandan ki objè yo te fizikman reekri anpil fwa, kèk fwa 10-12.

Apre enstale yon pakèt pakè, mwen te oblije swiv enstriksyon yo manyèlman pou inisyalize paramèt yo. Liberasyon an te rasanble ak enstale pa vandè a. Konpozisyon lage a te klarifye prèske anvan moman aplikasyon an, ki te egzije kreyasyon pakè "dekouplage". Kòm yon rezilta, yon pati enpòtan nan pwovizyon yo te deplase soti nan lage nan lage ak pwòp ke li nan "dekoupling".

Koulye a, li klè ke ak apwòch sa a - rasanble devinèt la lage nan nivo pake a - yon sèl branch mèt pa te gen okenn siyifikasyon pratik. Enstalasyon sou pwodiksyon te pran soti nan yon edmi a de èdtan nan travay manyèl. Li bon ke omwen nan nivo enstalasyon an te espesifye lòd la nan pwosesis objè: jaden ak estrikti yo te antre anvan done yo pou yo ak pwosedi yo. Sepandan, sa a sèlman te travay nan yon pake separe.

Rezilta lojik apwòch sa a se domaj enstalasyon obligatwa nan fòm vèsyon kwochi nan objè, kòd nesesè, enstriksyon ki manke ak enfliyans mityèl objè yo, ki te fyèvman elimine apre yo fin lage. 

Premye mizajou: komèt asanble ak livrezon

Otomatik te kòmanse pa transmèt kòd atravè yon tiyo sou wout sa a:

  • Ranmase livrezon an fini nan depo;
  • Enstale li sou yon anviwònman devwe;
  • Kouri ototès;
  • Evalye rezilta enstalasyon an;
  • Rele tiyo sa a sou bò lòd tès la.

Pwochen tiyo a ta dwe anrejistre travay la nan Jira epi tann pou kòmandman yo dwe distribye nan bouk tès yo chwazi, ki depann de tan an nan aplikasyon an. Deklanche - yon lèt sou preparasyon pou livrezon nan yon adrès yo bay. Sa a, nan kou, se te yon beki evidan, men mwen te oblije kòmanse yon kote. Nan mwa me 2019, transfè kòd la te kòmanse ak chèk sou anviwònman nou yo. Pwosesis la te kòmanse, tout sa ki rete se pote l 'nan fòm desan:

  • Chak modifikasyon fèt nan yon branch separe, ki koresponn ak pake enstalasyon an epi rantre nan branch mèt sib la;
  • Deklanche lanse tiyo a se aparans nan yon nouvo komèt nan branch mèt la atravè yon demann fizyone, ki se fèmen pa mentenans nan ekip la inhouse;
  • Repozitwa yo senkronize yon fwa chak senk minit;
  • Se asanble a nan pake enstalasyon an te kòmanse - lè l sèvi avèk asanblaj la resevwa nan men vandè a.

Apre sa, te deja egziste etap yo tcheke ak transfere kòd la, lanse tiyo a ak rasanble sou bò nou an.

Opsyon sa a te lanse nan mwa Jiyè. Difikilte tranzisyon an te lakòz kèk mekontantman pami vandè a ak liy devan an, men nan mwa kap vini an nou te jere retire tout kwen ki graj yo epi etabli yon pwosesis nan mitan ekip yo. Kounye a nou gen asanble pa komite ak livrezon.
Nan mwa Out, nou te rive konplete premye enstalasyon yon pake separe sou pwodiksyon lè l sèvi avèk tiyo nou an, epi depi septanm, san okenn eksepsyon, tout enstalasyon pakè endividyèl ki pa lage yo te fèt atravè zouti CD nou an. Anplis de sa, nou jere yo reyalize yon pati nan travay andedan kay la nan 40% nan konpozisyon an lage ak yon ekip ki pi piti pase vandè a - sa a se yon siksè definitif. Travay ki pi grav la rete - rasanble ak enstale liberasyon an.

Solisyon final la: pakè enstalasyon kimilatif 

Nou te konprann parfe byen ke scripting enstriksyon vandè a se te yon automatisation konsa konsa; nou te oblije repanse pwosesis la tèt li. Solisyon an te evidan - kolekte yon rezèv kimilatif nan branch lage a ak tout objè yo nan vèsyon yo mande yo.

Nou te kòmanse ak prèv konsèp: nou te rasanble pakè lage a men dapre sa ki nan aplikasyon sot pase a epi enstale li sou anviwònman nou yo. Tout bagay te travay deyò, konsèp la te tounen vin solid. Apre sa, nou rezoud pwoblèm nan nan scripting anviwònman yo inisyalizasyon ak enkli yo nan komèt la. Nou prepare yon nouvo pake epi nou teste li nan anviwònman tès yo kòm yon pati nan aktyalizasyon kontou a. Enstalasyon an te reyisi, byenke avèk yon pakèt kòmantè ekip aplikasyon an. Men, bagay prensipal la se ke yo te bay nou an ale nan pwodiksyon nan lage Novanm nan ak asanble nou an.

Avèk jis plis pase yon mwa ki rete, founiti yo chwazi alamen klèman allusion ke tan t ap fini. Yo deside fè bati a soti nan branch lage a, men poukisa li ta dwe separe? Nou pa gen yon Prod-tankou, ak branch ki deja egziste yo pa bon - gen yon anpil nan kòd ki pa nesesè. Nou bezwen ijan koupe prod-like, e sa a se plis pase twa mil komèt. Asanble alamen se pa yon opsyon ditou. Nou trase yon script ki kouri nan boutèy enstalasyon pwodwi a epi kolekte komèt nan branch lan. Twazyèm fwa li te travay kòrèkteman, epi apre "fini ak yon dosye" branch lan te pare. 

Nou te ekri pwòp pa nou pou pakè enstalasyon an epi nou te fini li nan yon semèn. Lè sa a, nou te oblije modifye enstalatè a soti nan fonksyonalite debaz la nan sistèm nan, paske li se sous louvri. Apre yon seri de chèk ak modifikasyon, rezilta a te konsidere kòm siksè. Nan entre-temps la, konpozisyon an nan lage a te pran fòm, pou enstalasyon ki kòrèk la nan ki li te nesesè yo fè aliman kous la tès ak yon sèl pwodiksyon an, epi yo te ekri yon script separe pou sa a.

Natirèlman, te gen anpil kòmantè sou premye enstalasyon an, men an jeneral kòd la te travay. Apre sa, apre apeprè twazyèm enstalasyon an, tout bagay te kòmanse gade byen. Kontwòl konpozisyon ak kontwòl vèsyon objè yo te kontwole separeman nan mòd manyèl, ki nan etap sa a te byen jistifye.

Yon defi adisyonèl se te gwo kantite ki pa pibliye ki te dwe pran an kont. Men, ak branch ki tankou Prod ak Rebase, travay la te vin transparan.

Premye fwa, byen vit epi san erè

Nou apwoche lage a ak yon atitid optimis ak plis pase yon douzèn enstalasyon siksè sou sikui diferan. Men, literalman yon jou anvan dat limit la, li te tounen soti ke vandè a pa te fini travay la prepare liberasyon an pou enstalasyon nan fason ki aksepte. Si pou kèk rezon konstriksyon nou an pa mache, lage a pral deranje. Anplis, atravè efò nou yo, ki se espesyalman dezagreyab. Nou pa te gen okenn fason pou fè bak. Se poutèt sa, nou te panse ak opsyon altènatif, prepare plan aksyon epi yo te kòmanse enstalasyon.

Surprenante, lage a tout antye, ki gen ladann plis pase 800 objè, te kòmanse kòrèkteman, premye fwa a ak nan jis 10 minit. Nou te pase yon èdtan tcheke mòso bwa yo ap chèche erè, men nou pa jwenn okenn.

Tout jou kap vini an te gen silans nan chat la lage: pa gen pwoblèm aplikasyon, vèsyon kwochi oswa "pa apwopriye" kòd. Li te menm yon jan kanmenm gòch. Apre sa, kèk kòmantè parèt, men konpare ak lòt sistèm ak eksperyans anvan yo, kantite yo ak priyorite yo te notables pi ba.

Yon efè adisyonèl nan efè a kimilatif se te yon ogmantasyon nan bon jan kalite a nan asanble ak tès. Akòz plizyè enstalasyon nan lage konplè a, yo te idantifye defo konstriksyon ak erè deplwaman alè. Tès nan konfigirasyon lage konplè te fè li posib pou idantifye defo nan enfliyans mityèl objè ki pa t parèt pandan enstalasyon incrémentielle. Li te definitivman yon siksè, espesyalman bay 57% kontribisyon nou an nan liberasyon an.

Rezilta ak konklizyon

Nan mwens pase yon ane nou jere:

  • Bati yon devlopman entèn konplè lè l sèvi avèk yon sistèm ekzotik;
  • Elimine depandans vandè kritik;
  • Lanse CI/CD pou yon eritaj ki pa zanmitay;
  • Ogmante pwosesis aplikasyon yo nan yon nouvo nivo teknik;
  • Siyifikativman redwi tan deplwaman;
  • Siyifikativman redwi kantite erè aplikasyon;
  • Konfyans deklare tèt ou kòm yon ekspè devlopman dirijan.

Natirèlman, anpil nan sa ki dekri sanble ak kareman krap, men sa yo se karakteristik yo nan sistèm nan ak limit pwosesis ki egziste nan li. Nan moman sa a, chanjman ki afekte pwodwi ak sèvis IS Profile (kont mèt, kat plastik, kont epay, escrow, prè lajan kach), men potansyèlman apwòch la ka aplike nan nenpòt IS pou travay la pou mete ann aplikasyon pratik DevOps yo. Modèl kimilatif la ka repwodui san danje pou aplikasyon ki vin apre yo (ki gen ladan yo ki pa lage) nan anpil livrezon.

Sous: www.habr.com

Add nouvo kòmantè