Meriv çawa bi karanîna ezmûna DevOps - VTB pêşkeftinek hundurîn a tev-hev ava dike

Pratîkên DevOps dixebitin. Dema ku me dema sazkirina berdanê 10 qat kêm kir, em bixwe jî ji vê yekê bawer bûn. Di pergala Profîla FIS-ê de, ku em li VTB-ê bikar tînin, sazkirinê ji 90-an bêtir 10 hûrdem digire. Dema avakirina berdanê ji du hefteyan daket du rojan. Hejmara kêmasiyên pêkanînê yên domdar hema hema daketiye herî kêm. Ji bo ku em ji "xebata destan" dûr bikevin û girêdayîbûna bi firoşkarê ji holê rakin, me neçar ma ku bi kêzikan bixebitin û çareseriyên nediyar bibînin. Li jêr qutkirî çîrokek hûrgulî heye ku me çawa pêşkeftinek navxweyî ya bêkêmasî ava kir.

Meriv çawa bi karanîna ezmûna DevOps - VTB pêşkeftinek hundurîn a tev-hev ava dike
 

Pêşgotin: DevOps felsefeyek e

Di sala borî de, me gelek kar kiriye ji bo organîzekirina pêşkeftina navxweyî û pêkanîna pratîkên DevOps li VTB:

  • Me ji bo 12 pergalên pêvajoyên pêşveçûna navxweyî ava kir;
  • Me 15 hêlên boriyan dan destpêkirin, çar ji wan hatin hilberandin;
  • 1445 senaryoyên testê yên otomatîkî;
  • Me bi serketî çend weşanên ku ji hêla tîmên hundurîn ve hatine amadekirin bicîh anîn.

Yek ji wan ên herî dijwar ên organîzekirina pêşkeftin û bicîhkirina pratîkên DevSecOps-ê pergala Profîla FIS-ê ye - pêvajoyek hilberek firotanê ya li ser DBMS-ya ne-girêdayî. Digel vê yekê, me karî pêşkeftinê ava bikin, xeta boriyê bidin destpêkirin, pakêtên ne-servekirî yên ferdî li ser hilberê saz bikin, û fêr bûn ka meriv çawa berdanan berhev dike. Kar ne hêsan bû, lê balkêş û bêyî tixûbên berbiçav di pêkanînê de bû: li vir pergal e - hûn hewce ne ku pêşkeftinek hundurîn ava bikin. Tenê şert e ku meriv CD-ê berî hawirdora hilberîner bikar bîne.

Di destpêkê de, algorîtmaya bicîhkirinê hêsan û zelal xuya bû:

  • Em pisporiya pêşkeftina destpêkê pêşdixin û ji tîmê kodê astek qalîteya pejirandî bêyî kêmasiyên mezin bi dest dixin;
  • Em bi qasî ku pêkan dikevin nav pêvajoyên heyî;
  • Ji bo veguheztina kodê di navbera qonaxên diyar de, em boriyek birîn û yek ji dawiya wê di domandinê de dikişînin.

Di vê demê de, tîmê pêşkeftinê ya pîvana pêwîst divê jêhatîbûnê pêş bixe û para beşdariya xwe ji berdanan re di astek pejirandî de zêde bike. Û ew e, em dikarin peywirê qedandî bifikirin.

Wusa dixuye ku ev rêyek bi tevahî enerjî-kêrhatî ye ji bo encama pêwîst: li vir DevOps e, li vir metrîkên performansa tîmê ne, li vir pisporiya berhevkirî ye... Lê di pratîkê de, me piştrastiyek din wergirt ku DevOps hîn jî li ser felsefeyê ye. , û ne "girêdayî pêvajoya gitlab, assible, nexus û li jêr navnîşê ye."

Piştî ku carek din plansaziya çalakiyê analîz kirin, me fêm kir ku em di nav xwe de celebek firoşkarek ji derve ava dikin. Ji ber vê yekê, ji nû ve endezyariya pêvajoyê li algorîtmaya ku li jor hatî destnîşan kirin, û her weha pêşkeftina pisporiyê li seranserê riya pêşkeftinê hate zêdekirin da ku di vê pêvajoyê de rolek pêşeng bi dest bixe. Ne bijareya herî hêsan e, lê ev riya pêşveçûna îdeolojîk a rast e.
 

Pêşkeftina hundurîn li ku dest pê dike? 

Ne pergala herî dostane bû ku pê re bixebite. Ji hêla mîmarî ve, ew yek DBMS-yek mezin a ne-girêdayî bû, ji gelek tiştên veqetandî yên veqetandî (skrîpt, prosedur, kom, hwd.) pêk dihat, ku li gorî hewcedariyê dihatin gazî kirin, û li ser prensîba qutiyek reş xebitî: ew daxwazek û pirsgirêk distîne. bersivek. Zehmetiyên din ên ku hêjayî balê ne ev in:

  • Zimanê biyanî (MUMPS);
  • Navrûya konsolê;
  • Nebûna entegrasyonê bi amûr û çarçoveyên xweseriya populer;
  • Hêjmara daneyan bi dehan terabytes;
  • Barkirina zêdeyî 2 mîlyon operasyonan di saetê de;
  • Girîng - Karsaz-Krîtîk.

Di heman demê de, li kêleka me depoya koda çavkaniyê tune bû. Qet. Belgekirin hebû, lê hemû zanîn û jêhatîbûna sereke li aliyê rêxistineke derve bûn.
Me dest bi serweriya pêşkeftina pergalê hema ji sifrê kir, ku taybetmendiyên wê û belavkirina wê ya kêm li ber çavan girtin. Di Cotmeha 2018 de dest pê kir:

  • Belgekirin û bingehên hilberîna kodê lêkolîn kir;
  • Me qursa kurt a li ser pêşkeftinê ya ku ji firoşkarê wergirtî xwend;
  • Zehfên pêşkeftina destpêkê;
  • Me pirtûkek perwerdehiyê ji bo endamên tîmê nû berhev kir;
  • Me li hev kir ku tîmê têxin nav moda "şer";
  • Pirsgirêk bi kontrola kalîteya kodê çareser kir;
  • Me ji bo pêşveçûnê standek organîze kir.

Me sê meh bi pêşxistina pisporiyê û xwe di nav pergalê de rijand, û ji destpêka sala 2019-an ve, pêşkeftina hundurîn dest bi tevgera xwe ber bi pêşerojek geş, carinan bi dijwarî, lê bi xwebawer û bi armanc dest pê kir.

Koçberiya depoyê û ototests

Karê yekem DevOps depo ye. Me zû li ser peydakirina gihîştinê li hev kir, lê hewce bû ku ji SVN-ya heyî bi yek şaxek qurmê berbi Git-a mebesta xwe ve bi veguheztina modelek çend şaxan û pêşkeftina Git Flow-ê ve koç bikin. Di heman demê de 2 tîmên me yên bi binesaziya xwe, plus beşek ji tîmê firoşkarê li derveyî welat hene. Diviya bû ku ez bi du Gitan re bijîm û hevdemkirinê piştrast bikim. Di rewşeke weha de, ew ji du xeraban kêmtir bû.

Koçberiya depoyê gelek caran hate paşxistin; ew tenê di meha Nîsanê de, bi alîkariya hevkarên ji eniya pêşîn hate qedandin. Bi Git Flow re, me biryar da ku em tiştan ji bo destpêkek sade bihêlin û li ser nexşeya klasîk a bi serrastkirin, pêşvebirin û berdanê bicîh bibin. Wan biryar da ku dev ji masterê (aka prod-like) berdin. Li jêr em ê rave bikin ka çima ev vebijark ji bo me çêtirîn derket. Depoyek derveyî ya ku aîdê firoşkarê ye, ku ji bo du tîman hevpar e, wekî karker hate bikar anîn. Ew li gorî nexşeyek bi depoya navxweyî re hevdem kirin. Naha bi Git û Gitlab re gengaz bû ku pêvajoyan otomatîk bikin.

Pirsgirêka ototestên ecêb bi hêsanî hate çareser kirin - ji me re çarçoveyek amade hate peyda kirin. Bi girtina taybetmendiyên pergalê, gazîkirina operasyonek cihêreng beşek têgihîştî ya pêvajoya karsaziyê bû û di heman demê de wekî ceribandinek yekîneyê xizmet kir. Tiştê ku mabû amadekirina daneyên testê û danîna rêza xwestinê ya bangkirina senaryoyan û nirxandina encaman bû. Dema ku navnîşa senaryoyan, ku li ser bingeha statîstîkên operasyonê, krîtîkbûna pêvajoyan û metodolojiya regresyonê ya heyî, hate dagirtin, ceribandinên otomatîkî dest pê kir. Niha em dikarin dest bi avakirina boriyê bikin.

Çawa bû: modela berî otomasyonê

Modela heyî ya pêvajoya pêkanînê çîrokek cihê ye. Her guheztinek bi destan wekî pakêtek sazkirinê ya zêdebûyî hate veguheztin. Dûv re qeydkirina manual li Jira û sazkirina manual li ser hawîrdoran hat. Ji bo pakêtên kesane, her tişt zelal xuya bû, lê bi amadekirina berdanê re, tişt tevlihevtir bûn.

Civîn di asta teslîmkirina takekesî de, ku tiştên serbixwe bûn, hate kirin. Her guhertinek radestkirina nû ye. Di nav tiştên din de, 60-70 guhertoyên teknîkî li 10-15 pakêtên berhevoka serbestberdana sereke hatin zêdekirin - guhertoyên ku dema ku tiştek ji serbestberdanê zêde dikin an derdixin û guheztinên di firotanên li derveyî serbestberdanê de têne girtin têne wergirtin.

Tiştên di nav radestkirinê de bi hevûdu re hevûdu bûn, nemaze di koda darvekirinê de, ku ji nîvê yekta kêm bû. Hem li ser koda ku jixwe hatî saz kirin hem jî bi ya ku sazkirina wê tenê hatî plansaz kirin gelek girêdayî bûn. 

Ji bo bidestxistina guhertoya pêdivî ya kodê, pêdivî bû ku meriv bi hişkî rêzika sazkirinê bişopîne, ku tê de tişt gelek caran, hin 10-12 caran, bi fîzîkî ji nû ve hatine nivîsandin.

Piştî sazkirina komek pakêtan, min neçar ma ku bi destan rêwerzan bişopînim da ku mîhengan dest pê bikim. Serbest ji hêla firoşkar ve hate berhev kirin û saz kirin. Berhevoka serbestberdanê hema berî kêliya pêkanînê hate zelal kirin, ku tê de çêkirina pakêtên "veqetandî" pêk tê. Wekî encamek, beşek girîng a kelûpelan ji berdanê berbi berdanê ve bi dûvika xwe ya "vekêşanan" ve çû.

Naha diyar e ku bi vê nêzîkatiyê - berhevkirina puzzle berdanê di asta pakêtê de - yek şaxek masterê xwedan wateyek pratîkî nebû. Sazkirina li ser hilberînê ji yek û nîv heya du saetan xebata destan girt. Baş e ku bi kêmî ve di asta sazkerê de rêza hilberandina tiştan hate destnîşan kirin: zevî û avahî berî daneya ji bo wan û proseduran ketine. Lêbelê, ev tenê di nav pakêtek cûda de xebitî.

Encama mentiqî ya vê nêzîkatiyê kêmasiyên sazkirinê yên mecbûrî yên di forma guhertoyên xelet ên tiştan, koda nehewce, rêwerzên wenda û nehesibandin ji bandorên hevdu yên tiştan bû, yên ku piştî berdanê bi germî ji holê hatin rakirin. 

Nûvekirinên yekem: kombûn û radestkirinê bikin

Otomasyon bi veguheztina kodê bi boriyek li ser vê rêyê dest pê kir:

  • Radestkirina qedandî ji hilanînê hilînin;
  • Li ser jîngehek taybetî saz bikin;
  • Testên otomatê bimeşînin;
  • Encama sazkirinê binirxînin;
  • Li kêleka fermana ceribandinê gazî lûleya jêrîn bikin.

Pêdivî ye ku lûleya paşîn peywirê li Jira tomar bike û li bendê bimîne ku ferman li lûpên ceribandinê yên bijartî werin belavkirin, ku bi dema pêkanîna peywirê ve girêdayî ye. Trigger - nameyek li ser amadebûna ji bo radestkirina navnîşek diyarkirî. Ev, bê guman, kelekek eşkere bû, lê neçar ma ku ez ji cîhek dest pê bikim. Di Gulana 2019-an de, veguheztina kodê bi kontrolên li derdorên me dest pê kir. Pêvajo dest pê kiriye, ya ku dimîne ev e ku meriv wê bi rengek maqûl bîne:

  • Her guheztin di şaxek veqetandî de, ku bi pakêta sazkirinê re têkildar e û di şaxê masterê armancê de yek dibe, tête kirin;
  • Destana destpêkirina lûleyê xuyangkirina peywirek nû ye di şaxê masterê de bi daxwaznameyek hevgirtinê, ku ji hêla parêzvanên tîmê hundurîn ve hatî girtin;
  • Depo her pênc deqeyan carekê têne hevdem kirin;
  • Civîna pakêta sazkirinê dest pê kir - bi karanîna berhevkarê ku ji firoşkarê hatî wergirtin.

Piştî vê yekê, jixwe gavên heyî hebûn ji bo kontrolkirin û veguheztina kodê, ji bo destpêkirina boriyê û komkirina li kêleka me.

Ev vebijêrk di Tîrmehê de hate destpêkirin. Zehmetiyên veguheztinê bû sedema hin nerazîbûnan ​​di nav firoşkar û eniya pêşîn de, lê di meha pêş de me karî em hemî keviyên dijwar rakin û pêvajoyek di nav tîman de saz bikin. Niha meclîsa me bi erk û teslîmkirinê heye.
Di Tebaxê de, me karî ku sazkirina yekem a pakêtek veqetandî ya li ser hilberînê bi karanîna lûleya xwe biqedînin, û ji îlonê û vir ve, bêyî îstîsna, hemî sazkirinên paketên ne-serdanî yên takekesî bi navgîniya amûra CD-ya me ve hatin kirin. Digel vê yekê, me bi tîmek piçûktir ji firoşkarê 40% ji peywirên hundurîn bi dest xist - ev serkeftinek diyar e. Karê herî giran ma - komkirin û sazkirina berdanê.

Çareseriya dawîn: pakêtên sazkirinê yên kumulatîf 

Me baş fam kir ku nivîsandina rêwerzên firoşker otomasyonek wusa bû; neçar ma ku em pêvajoyê bixwe ji nû ve bifikirin. Çareserî diyar bû - berhevkirina danûstendinek kumulatîf ji şaxê berdanê digel hemî tiştên guhertoyên pêwîst.

Me bi delîlên konseptê dest pê kir: me pakêta berdanê li gorî naveroka pêkanîna berê bi destan berhev kir û li derdorên xwe saz kir. Her tişt bi ser ket, konsept derket holê ku bikêrhatî ye. Dûv re, me pirsgirêka nivîsandina mîhengên destpêkkirinê û tevlêkirina wan di peywirê de çareser kir. Me pakêtek nû amade kir û wekî beşek ji nûvekirina konturê ew li hawîrdorên ceribandinê ceriband. Sazkirin bi serketî bû, her çend bi gelek şîroveyên tîmê cîbicîkirinê. Lê ya sereke ev e ku me rê da ku em di weşana Mijdarê de bi meclîsa xwe re biçin hilberînê.

Bi tenê mehek maye, kelûpelên ku bi destan hatine bijartin bi eşkere destnîşan dikin ku dem diqede. Wan biryar da ku avahî ji şaxê berdanê çêbikin, lê çima divê ew ji hev veqetin? Prod-ya me tune, û şaxên heyî jî ne baş in - gelek kodên nehewce hene. Em bi lezgînî hewce ne ku prod-likes qut bikin, û ev zêdetirî sê hezar commit e. Komkirina bi destan qet ne vebijarkek e. Me skrîptek xêz kir ku di nav qeyda sazkirina hilberê de derbas dibe û ji şaxê re peymanan berhev dike. Cara sisiyan ew rast xebitî, û piştî ku "bi dosyayê qediya" şax amade bû. 

Me avakerê xwe ji bo pakêta sazkirinê nivîsand û di hefteyekê de qedand. Dûv re me neçar ma ku sazker ji fonksiyona bingehîn a pergalê biguhezînin, ji ber ku ew çavkaniyek vekirî ye. Piştî rêze kontrol û guhertinan, encam serkeftî hate hesibandin. Di vê navberê de, pêkhatina serbestberdanê şikil girt, ji bo sazkirina rast a ku hewce bû ku çerxa ceribandinê bi hilberîna hilberînê re were hevûdu kirin, û ji bo vê yekê skrîptek veqetandî hate nivîsandin.

Bi xwezayî, di derbarê sazkirina yekem de gelek şîrove hebûn, lê bi tevahî kod xebitî. Û piştî sazkirina sêyemîn, her tişt dest pê kir ku baş xuya bike. Kontrola pêkhatî û kontrolkirina guhertoya tiştan di moda destan de ji hev veqetandî hate şopandin, ku di vê qonaxê de pir rastdar bû.

Pirsgirêkek din jî hejmareke mezin a ne-serbestan bû ku divê were hesibandin. Lê digel şaxa Prod-wek û Rebase, peywir zelal bû.

Cara yekem, zû û bê xeletî

Em bi helwestek xweşbîn û ji dehan zêdetir sazkirinên serketî yên li ser çemberên cihêreng nêzî berdanê bûn. Lê bi rastî rojek beriya muhletê, derket holê ku firoşkar kar neqedandiye da ku serbestberdanê ji bo sazkirinê bi awayê pejirandî amade bike. Ger ji ber hin sedeman avakirina me nexebite, dê berdan were asteng kirin. Ji bilî vê, bi hewldanên me, ku bi taybetî ne xweş e. Rêya me ya paşvekişînê tune bû. Ji ber vê yekê, me bi vebijarkên alternatîf fikirîn, planên çalakiyê amade kirin û dest bi sazkirinê kirin.

Ecêb e, tevahiya serbestberdanê, ku ji zêdetirî 800 tiştan pêk tê, yekem car û tenê di 10 hûrdeman de rast dest pê kir. Me saetek li qeydan li xeletiyan kontrol kir, lê ti nedît.

Tevahiya roja din di sohbeta berdanê de bêdengiyek hebû: Pirsgirêkên pêkanînê, guhertoyên xelet an koda "negunca" tune. Ew jî bi rengekî aciz bû. Dûv re, hin şîrove derketin holê, lê li gorî pergalên din û ezmûna berê, hejmar û pêşîniya wan bi rengek berbiçav kêmtir bû.

Bandorek pêvek ji bandora kombûyî zêdebûnek di kalîteya kombûn û ceribandinê de bû. Ji ber gelek sazkirinên serbestberdana tevahî, kêmasiyên çêkirinê û xeletiyên bicîhkirinê di wextê xwe de hatin tespît kirin. Testkirina di mîhengên serbestberdana tevahî de ev gengaz kir ku meriv bi zêdeyî kêmasiyên di bandora hevûdu ya tiştên ku di dema sazkirinên zêde de xuya nebin de nas bike. Ew bê guman serkeftinek bû, nemaze ku ji sedî 57 beşdariya me ya berdanê hate dayîn.

Encam û encam

Di kêmtirî salekê de me karî:

  • Bi karanîna pergalek biyanî pêşkeftinek navxweyî ya bêkêmasî ava bikin;
  • Pêwendiya firoşkarê krîtîk ji holê rakin;
  • Ji bo mîrasek pir nedostan CI/CD-ê bidin destpêkirin;
  • Pêvajoyên pêkanînê berbi astek teknîkî ya nû bilind bikin;
  • Wextê bicîhkirinê bi girîngî kêm bikin;
  • Hejmara xeletiyên pêkanînê bi girîngî kêm bikin;
  • Bi pêbawer xwe wekî pisporek pêşkeftinê ya pêşeng îlan bikin.

Bê guman, pir tiştên ku têne vegotin wekî xeletiyek eşkere xuya dike, lê ev taybetmendiyên pergalê û tixûbên pêvajoyê ne ku di wê de hene. Heya nuha, guheztin bandor li hilber û karûbarên Profîla IS kir (hesabên sereke, kartên plastîk, hesabên teserûfê, escrow, deynên drav), lê bi potansiyel ev nêzîkatî dikare li her IS-ê ku peywira bicihanîna pratîkên DevOps ji bo wê hatî danîn were sepandin. Modela berhevkirî dikare bi ewlehî ji bo pêkanînên paşîn (tevî yên ne-serbestkirî) ji gelek radestkirinê were dubare kirin.

Source: www.habr.com

Add a comment