Sut i adeiladu datblygiad mewnol llawn gan ddefnyddio DevOps - profiad VTB

Mae arferion DevOps yn gweithio. Roeddem yn argyhoeddedig o hyn ein hunain pan wnaethom leihau'r amser gosod rhyddhau 10 gwaith. Yn y system Proffil FIS, a ddefnyddiwn yn VTB, mae gosod bellach yn cymryd 90 munud yn hytrach na 10. Mae'r amser adeiladu rhyddhau wedi gostwng o bythefnos i ddau ddiwrnod. Mae nifer y diffygion gweithredu parhaus wedi gostwng i'r lleiafswm bron. Er mwyn dianc rhag “llafur llaw” a dileu dibyniaeth ar y gwerthwr, roedd yn rhaid i ni weithio gyda baglau a dod o hyd i atebion annisgwyl. O dan y toriad mae stori fanwl am sut y gwnaethom adeiladu datblygiad mewnol llawn.

Sut i adeiladu datblygiad mewnol llawn gan ddefnyddio DevOps - profiad VTB
 

Prologue: Athroniaeth yw DevOps

Dros y flwyddyn ddiwethaf, rydym wedi gwneud llawer o waith i drefnu datblygiad mewnol a gweithrediad arferion DevOps yn VTB:

  • Fe wnaethom adeiladu prosesau datblygu mewnol ar gyfer 12 system;
  • Lansiwyd 15 piblinell gennym, a dechreuwyd cynhyrchu pedair ohonynt;
  • 1445 o senarios prawf awtomataidd;
  • Llwyddwyd i roi nifer o ddatganiadau a baratowyd gan dimau mewnol ar waith.

Un o'r rhai anoddaf i'w threfnu o ran datblygu a gweithredu arferion DevSecOps yn fewnol oedd y system Proffil FIS - prosesydd cynnyrch manwerthu ar DBMS nad yw'n perthyn. Serch hynny, roeddem yn gallu adeiladu'r datblygiad, lansio'r biblinell, gosod pecynnau unigol nad ydynt yn rhyddhau ar y cynnyrch, a dysgu sut i gydosod datganiadau. Nid oedd y dasg yn hawdd, ond yn ddiddorol a heb gyfyngiadau amlwg wrth weithredu: dyma'r system - mae angen i chi adeiladu datblygiad mewnol. Yr unig amod yw defnyddio'r CD cyn amgylchedd cynhyrchiol.

Ar y dechrau, roedd yr algorithm gweithredu yn ymddangos yn syml ac yn glir:

  • Rydym yn datblygu arbenigedd datblygiad cychwynnol ac yn cyflawni lefel dderbyniol o ansawdd gan y tîm cod heb ddiffygion difrifol;
  • Rydym yn integreiddio cymaint â phosibl i brosesau presennol;
  • Er mwyn trosglwyddo cod rhwng camau amlwg, rydym yn torri piblinell ac yn gwthio un o'i ddau ben i mewn i'r parhad.

Yn ystod y cyfnod hwn, rhaid i'r tîm datblygu o'r maint gofynnol ddatblygu sgiliau a chynyddu'r gyfran o'i gyfraniad at ryddhau i lefel dderbyniol. A dyna ni, gallwn ystyried y dasg a gwblhawyd.

Mae'n ymddangos bod hwn yn llwybr cwbl ynni-effeithlon i'r canlyniad gofynnol: dyma DevOps, dyma fetrigau perfformiad y tîm, dyma'r arbenigedd cronedig ... Ond yn ymarferol, cawsom gadarnhad arall bod DevOps yn dal i ymwneud ag athroniaeth , ac nid “ynghlwm wrth y broses gitlab, asible, nexus ac ymhellach i lawr y rhestr.”

Ar ôl dadansoddi'r cynllun gweithredu unwaith eto, sylweddolom ein bod yn adeiladu math o werthwr allanol o fewn ein hunain. Felly, ychwanegwyd ail-beiriannu prosesau at yr algorithm a ddisgrifir uchod, yn ogystal â datblygu arbenigedd ar hyd y llwybr datblygu cyfan i gyflawni rôl arweiniol yn y broses hon. Nid yr opsiwn hawsaf, ond dyma'r llwybr datblygiad ideolegol gywir.
 

Ble mae datblygiad mewnol yn dechrau? 

Nid hon oedd y system fwyaf cyfeillgar i weithio gyda hi. Yn bensaernïol, roedd yn un DBMS mawr nad oedd yn perthyn, yn cynnwys llawer o wrthrychau gweithredadwy ar wahân (sgriptiau, gweithdrefnau, sypiau, ac ati), a alwyd yn ôl yr angen, ac yn gweithio ar egwyddor blwch du: mae'n derbyn cais a materion ymateb. Mae anawsterau eraill sy'n werth eu nodi yn cynnwys:

  • Iaith egsotig (MUMPS);
  • Rhyngwyneb consol;
  • Diffyg integreiddio ag offer a fframweithiau awtomeiddio poblogaidd;
  • Cyfaint data mewn degau o terabytes;
  • Llwyth o dros 2 filiwn o lawdriniaethau yr awr;
  • Arwyddocâd - Busnes-Hirnodol.

Ar yr un pryd, nid oedd ystorfa cod ffynhonnell ar ein hochr ni. O gwbl. Roedd dogfennaeth, ond roedd yr holl wybodaeth a chymhwysedd allweddol ar ochr sefydliad allanol.
Dechreuon ni feistroli datblygiad y system bron o'r dechrau, gan ystyried ei nodweddion a'i ddosbarthiad isel. Dechreuodd ym mis Hydref 2018:

  • Astudiodd ddogfennaeth a hanfodion cynhyrchu cod;
  • Astudiwyd y cwrs byr ar ddatblygiad a dderbyniwyd gan y gwerthwr;
  • Meistroli sgiliau datblygiad cychwynnol;
  • Lluniwyd llawlyfr hyfforddi ar gyfer aelodau newydd o'r tîm;
  • Fe wnaethom gytuno i gynnwys y tîm yn y modd “ymladd”;
  • Wedi datrys y mater gyda rheoli ansawdd cod;
  • Fe wnaethom drefnu stondin ar gyfer datblygu.

Treuliasom dri mis yn datblygu arbenigedd ac yn ymgolli yn y system, ac o ddechrau 2019, dechreuodd datblygiad mewnol ei symudiad tuag at ddyfodol disglair, weithiau gydag anhawster, ond yn hyderus ac yn bwrpasol.

Mudo ystorfa ac awtobrofion

Tasg gyntaf DevOps yw'r ystorfa. Fe wnaethom gytuno’n gyflym ar ddarparu mynediad, ond bu’n rhaid symud o’r SVN presennol gydag un brif gangen i’n targed Git gyda’r newid i fodel o sawl cangen a datblygu Git Flow. Mae gennym hefyd 2 dîm gyda'u seilwaith eu hunain, ynghyd â rhan o dîm y gwerthwr dramor. Roedd yn rhaid i mi fyw gyda dau Gits a sicrhau cydamseriad. Mewn sefyllfa o'r fath, yr oedd y lleiaf o ddau ddrwg.

Cafodd mudo’r ystorfa ei ohirio dro ar ôl tro; dim ond ym mis Ebrill y cafodd ei gwblhau, gyda chymorth cydweithwyr o’r rheng flaen. Gyda Git Flow, fe benderfynon ni gadw pethau'n syml i ddechrau a setlo ar y cynllun clasurol gyda hotfix, datblygu a rhyddhau. Penderfynon nhw roi'r gorau i feistr (aka prod-like). Isod byddwn yn esbonio pam mai'r opsiwn hwn oedd y gorau i ni. Defnyddiwyd ystorfa allanol yn perthyn i'r gwerthwr, sy'n gyffredin i ddau dîm, fel gweithiwr. Roedd yn cydamseru â'r ystorfa fewnol yn unol ag amserlen. Nawr gyda Git a Gitlab roedd yn bosibl awtomeiddio prosesau.

Cafodd y mater o awtobrofion ei ddatrys yn rhyfeddol o hawdd - cawsom fframwaith parod. Gan ystyried hynodion y system, roedd galw gweithrediad ar wahân yn rhan ddealladwy o'r broses fusnes ac ar yr un pryd yn gwasanaethu fel prawf uned. Y cyfan oedd ar ôl oedd paratoi data'r prawf a gosod y drefn a ddymunir o alw'r sgriptiau a gwerthuso'r canlyniadau. Wrth i'r rhestr o senarios, a ffurfiwyd ar sail ystadegau gweithrediad, pwysigrwydd prosesau a'r fethodoleg atchweliad bresennol, lenwi, dechreuodd profion awtomatig ymddangos. Nawr gallem ddechrau adeiladu'r biblinell.

Sut yr oedd: y model cyn awtomeiddio

Mae model presennol y broses weithredu yn stori ar wahân. Trosglwyddwyd pob addasiad â llaw fel pecyn gosod cynyddrannol ar wahân. Nesaf daeth cofrestru â llaw yn Jira a gosod â llaw ar amgylcheddau. Ar gyfer pecynnau unigol, roedd popeth yn edrych yn glir, ond gyda pharatoi'r datganiad, roedd pethau'n fwy cymhleth.

Cynhaliwyd y Cynulliad ar lefel danfoniadau unigol, a oedd yn amcanion annibynnol. Mae unrhyw newid yn gyflenwad newydd. Ymhlith pethau eraill, ychwanegwyd fersiynau technegol 60-70 at y 10-15 o becynnau o'r prif gyfansoddiad rhyddhau - fersiynau a gafwyd wrth ychwanegu neu eithrio rhywbeth o'r datganiad ac adlewyrchu newidiadau mewn gwerthiant y tu allan i ddatganiadau.

Roedd gwrthrychau o fewn y danfoniadau yn gorgyffwrdd â'i gilydd, yn enwedig yn y cod gweithredadwy, a oedd yn llai na hanner unigryw. Roedd llawer o ddibyniaethau ar y cod a osodwyd eisoes ac ar yr un yr oedd ei osod newydd ei gynllunio. 

I gael y fersiwn ofynnol o'r cod, roedd angen dilyn y gorchymyn gosod yn llym, pan gafodd gwrthrychau eu hailysgrifennu'n gorfforol lawer gwaith, tua 10-12 gwaith.

Ar ôl gosod swp o becynnau, roedd yn rhaid i mi ddilyn cyfarwyddiadau â llaw i gychwyn y gosodiadau. Cafodd y datganiad ei ymgynnull a'i osod gan y gwerthwr. Eglurwyd cyfansoddiad y datganiad bron cyn yr eiliad gweithredu, a oedd yn golygu creu pecynnau “datgysylltu”. O ganlyniad, symudodd rhan sylweddol o'r cyflenwadau o ryddhau i ryddhau gyda'i gynffon ei hun o “ddatgysylltu”.

Nawr mae'n amlwg, gyda'r dull hwn - cydosod y pos rhyddhau ar lefel pecyn - nad oedd gan gangen feistr sengl unrhyw ystyr ymarferol. Roedd gosod ar gynhyrchu yn cymryd rhwng awr a hanner a dwy awr o lafur llaw. Mae'n dda bod trefn prosesu gwrthrychau wedi'i nodi o leiaf ar lefel y gosodwr: mewnbynnu meysydd a strwythurau cyn y data ar eu cyfer a'r gweithdrefnau. Fodd bynnag, dim ond o fewn pecyn ar wahân yr oedd hyn yn gweithio.

Canlyniad rhesymegol y dull hwn oedd y diffygion gosod gorfodol ar ffurf fersiynau cam o wrthrychau, cod diangen, cyfarwyddiadau coll a dylanwadau cilyddol gwrthrychau heb eu cyfrif, a gafodd eu dileu'n dwymyn ar ôl eu rhyddhau. 

Diweddariadau cyntaf: ymrwymo cydosod a chyflwyno

Dechreuodd awtomeiddio trwy drosglwyddo cod trwy bibell ar hyd y llwybr hwn:

  • Codwch y dosbarthiad gorffenedig o'r storfa;
  • Ei osod ar amgylchedd pwrpasol;
  • Rhedeg profion awtomatig;
  • Gwerthuswch y canlyniad gosod;
  • Ffoniwch y biblinell ganlynol ar ochr y gorchymyn profi.

Dylai'r biblinell nesaf gofrestru'r dasg yn Jira ac aros i orchmynion gael eu dosbarthu i ddolenni profi dethol, sy'n dibynnu ar amseriad gweithredu'r dasg. Sbardun - llythyr am barodrwydd ar gyfer danfon i gyfeiriad penodol. Roedd hyn, wrth gwrs, yn fagwrfa amlwg, ond roedd yn rhaid i mi ddechrau yn rhywle. Ym mis Mai 2019, dechreuodd y broses o drosglwyddo cod gyda gwiriadau ar ein hamgylcheddau. Mae’r broses wedi dechrau, y cyfan sydd ar ôl yw dod ag ef i siâp gweddus:

  • Perfformir pob addasiad mewn cangen ar wahân, sy'n cyfateb i'r pecyn gosod ac yn uno i'r brif gangen darged;
  • Sbardun lansio'r biblinell yw ymddangosiad ymrwymiad newydd yn y brif gangen trwy gais uno, sy'n cael ei gau gan gynhalwyr o'r tîm mewnol;
  • Mae cadwrfeydd yn cael eu cysoni unwaith bob pum munud;
  • Dechreuir cydosod y pecyn gosod - gan ddefnyddio'r cydosodwr a dderbyniwyd gan y gwerthwr.

Ar ôl hyn, roedd camau eisoes yn bodoli i wirio a throsglwyddo'r cod, i lansio'r bibell a chydosod ar ein hochr ni.

Lansiwyd yr opsiwn hwn ym mis Gorffennaf. Arweiniodd anawsterau'r pontio at rywfaint o anfodlonrwydd ymhlith y gwerthwr a'r rheng flaen, ond dros y mis nesaf fe wnaethom lwyddo i gael gwared ar yr holl ymylon garw a sefydlu proses ymhlith y timau. Mae gennym yn awr cynulliad trwy ymrwymo a chyflawni.
Ym mis Awst, fe wnaethom lwyddo i gwblhau'r gosodiad cyntaf o becyn ar wahân ar gynhyrchu gan ddefnyddio ein piblinell, ac ers mis Medi, yn ddieithriad, perfformiwyd yr holl osodiadau o becynnau unigol heb eu rhyddhau trwy ein hofferyn CD. Yn ogystal, rydym yn llwyddo i gyflawni cyfran o dasgau mewnol yn 40% o'r cyfansoddiad rhyddhau gyda thîm llai na'r gwerthwr - mae hwn yn llwyddiant pendant. Y dasg fwyaf difrifol yn parhau - i gydosod a gosod y datganiad.

Yr ateb terfynol: pecynnau gosod cronnol 

Roeddem yn deall yn berffaith dda bod sgriptio cyfarwyddiadau'r gwerthwr yn awtomeiddio felly; roedd yn rhaid i ni ailfeddwl am y broses ei hun. Roedd yr ateb yn amlwg - i gasglu cyflenwad cronnol o'r gangen rhyddhau gyda holl wrthrychau'r fersiynau gofynnol.

Dechreuon ni gyda phrawf o gysyniad: fe wnaethom ni gydosod y pecyn rhyddhau â llaw yn unol â chynnwys y gweithrediad blaenorol a'i osod ar ein hamgylcheddau. Gweithiodd popeth allan, trodd y cysyniad yn ymarferol. Nesaf, fe wnaethom ddatrys y mater o sgriptio'r gosodiadau cychwyn a'u cynnwys yn yr ymrwymiad. Fe wnaethom baratoi pecyn newydd a'i brofi mewn amgylcheddau profi fel rhan o'r diweddariad cyfuchlin. Roedd y gosodiad yn llwyddiannus, er gydag ystod eang o sylwadau gan y tîm gweithredu. Ond y prif beth yw ein bod wedi cael sêl bendith i fynd i gynhyrchu yn y datganiad ym mis Tachwedd gyda'n cynulliad.

Gydag ychydig dros fis ar ôl, roedd y cyflenwadau a ddewiswyd â llaw yn amlwg yn awgrymu bod amser yn rhedeg allan. Penderfynasant adeiladu'r gangen rhyddhau, ond pam y dylid ei gwahanu? Nid oes gennym ni debyg i Prod, ac nid yw'r canghennau presennol yn dda - mae llawer o god diangen. Mae angen inni dorri ar ein hoffterau ar fyrder, ac mae hyn dros dair mil o ymrwymiadau. Nid yw cydosod â llaw yn opsiwn o gwbl. Fe wnaethon ni fraslunio sgript sy'n rhedeg trwy'r log gosod cynnyrch ac yn casglu ymrwymiadau i'r gangen. Y trydydd tro fe weithiodd yn gywir, ac ar ôl "gorffen gyda ffeil" roedd y gangen yn barod. 

Fe wnaethon ni ysgrifennu ein hadeiladwr ein hunain ar gyfer y pecyn gosod a'i gwblhau mewn wythnos. Yna bu'n rhaid i ni addasu'r gosodwr o ymarferoldeb craidd y system, gan ei fod yn ffynhonnell agored. Ar ôl cyfres o wiriadau ac addasiadau, ystyriwyd bod y canlyniad yn llwyddiannus. Yn y cyfamser, cymerodd cyfansoddiad y datganiad siâp, ac ar gyfer gosod cywir roedd angen alinio'r gylched prawf gyda'r un cynhyrchu, ac ysgrifennwyd sgript ar wahân ar gyfer hyn.

Yn naturiol, roedd llawer o sylwadau am y gosodiad cyntaf, ond yn gyffredinol roedd y cod yn gweithio. Ac ar ôl tua'r trydydd gosodiad dechreuodd popeth edrych yn dda. Cafodd rheolaeth cyfansoddiad a rheolaeth fersiwn o wrthrychau eu monitro ar wahân yn y modd â llaw, a oedd yn eithaf cyfiawn ar hyn o bryd.

Her ychwanegol oedd y nifer fawr o achosion heb eu rhyddhau yr oedd yn rhaid eu cymryd i ystyriaeth. Ond gyda'r gangen debyg i Prod a Rebase, daeth y dasg yn dryloyw.

Y tro cyntaf, yn gyflym a heb wallau

Aethom at y datganiad gydag agwedd optimistaidd a mwy na dwsin o osodiadau llwyddiannus ar wahanol gylchedau. Ond yn llythrennol ddiwrnod cyn y dyddiad cau, daeth yn amlwg nad oedd y gwerthwr wedi cwblhau'r gwaith i baratoi'r datganiad i'w osod yn y ffordd dderbyniol. Os na fydd ein hadeiladwaith yn gweithio am ryw reswm, bydd y datganiad yn cael ei amharu. Ar ben hynny, trwy ein hymdrechion, sy'n arbennig o annymunol. Nid oedd gennym unrhyw ffordd i encilio. Felly, gwnaethom ystyried opsiynau amgen, paratoi cynlluniau gweithredu a dechrau gosod.

Yn syndod, dechreuodd y datganiad cyfan, sy'n cynnwys mwy na 800 o wrthrychau, yn gywir, y tro cyntaf ac mewn dim ond 10 munud. Fe wnaethon ni dreulio awr yn gwirio'r logiau yn chwilio am wallau, ond heb ddod o hyd i unrhyw un.

Y diwrnod wedyn bu distawrwydd yn y sgwrs rhyddhau: dim problemau gweithredu, fersiynau cam neu god “amhriodol”. Roedd hyd yn oed yn lletchwith rywsut. Yn ddiweddarach, daeth rhai sylwadau i'r amlwg, ond o gymharu â systemau eraill a phrofiad blaenorol, roedd eu nifer a'u blaenoriaeth yn amlwg yn is.

Effaith ychwanegol o'r effaith gronnol oedd cynnydd yn ansawdd y cydosod a'r profi. Oherwydd gosodiadau lluosog o'r datganiad llawn, nodwyd diffygion adeiladu a gwallau lleoli mewn modd amserol. Roedd profi mewn ffurfweddau rhyddhau llawn yn ei gwneud hi'n bosibl hefyd nodi diffygion yn nylanwad cilyddol gwrthrychau nad oeddent yn ymddangos yn ystod gosodiadau cynyddrannol. Roedd yn bendant yn llwyddiant, yn enwedig o ystyried ein cyfraniad o 57% at y datganiad.

Crynodeb a Chasgliadau

Mewn llai na blwyddyn fe wnaethom lwyddo i:

  • Adeiladu datblygiad mewnol cyflawn gan ddefnyddio system egsotig;
  • Dileu dibyniaeth hanfodol ar werthwyr;
  • Lansio CI/CD am etifeddiaeth anghyfeillgar iawn;
  • Codi prosesau gweithredu i lefel dechnegol newydd;
  • Lleihau amser lleoli yn sylweddol;
  • Lleihau'n sylweddol nifer y gwallau gweithredu;
  • Datganwch eich hun yn hyderus fel arbenigwr datblygu blaenllaw.

Wrth gwrs, mae llawer o'r hyn a ddisgrifir yn edrych fel crap llwyr, ond dyma nodweddion y system a'r cyfyngiadau proses sy'n bodoli ynddi. Ar hyn o bryd, mae'r newidiadau'n effeithio ar gynhyrchion a gwasanaethau Proffil GG (prif gyfrifon, cardiau plastig, cyfrifon cynilo, escrow, benthyciadau arian parod), ond o bosibl gellir cymhwyso'r dull hwn i unrhyw IS y mae'r dasg o weithredu arferion DevOps wedi'i gosod ar ei gyfer. Gellir ailadrodd y model cronnol yn ddiogel ar gyfer gweithrediadau dilynol (gan gynnwys rhai heb eu rhyddhau) o lawer o gyflenwadau.

Ffynhonnell: hab.com

Ychwanegu sylw