Methodoleg defnyddio prosiect a ddefnyddir yn Slack

Mae dod â rhyddhau prosiect newydd i mewn i gynhyrchu yn gofyn am gydbwysedd gofalus rhwng cyflymder defnyddio a dibynadwyedd datrysiad. Mae Slack yn gwerthfawrogi iteriadau cyflym, cylchoedd adborth byr, ac ymateb prydlon i geisiadau defnyddwyr. Yn ogystal, mae gan y cwmni gannoedd o raglenwyr sy'n ymdrechu i fod mor gynhyrchiol â phosibl.

Methodoleg defnyddio prosiect a ddefnyddir yn Slack

Mae awduron y deunydd, yr ydym yn ei gyhoeddi heddiw, yn dweud bod yn rhaid i gwmni sy'n ymdrechu i gadw at werthoedd o'r fath ac ar yr un pryd yn tyfu wella ei system defnyddio prosiectau yn gyson. Mae angen i'r cwmni fuddsoddi mewn tryloywder a dibynadwyedd prosesau gwaith, gan wneud hyn i sicrhau bod y prosesau hyn yn cyfateb i raddfa'r prosiect. Yma byddwn yn siarad am y llifoedd gwaith sydd wedi datblygu yn Slack, ac am rai o'r penderfyniadau a arweiniodd at y cwmni i ddefnyddio'r system lleoli prosiectau sy'n bodoli heddiw.

Sut mae prosesau defnyddio prosiectau yn gweithio heddiw

Rhaid i bob PR (cais tynnu) yn Slack fod yn destun adolygiad cod a rhaid iddo basio pob prawf yn llwyddiannus. Dim ond ar ôl i'r amodau hyn gael eu bodloni y gall y rhaglennydd uno ei god i brif gangen y prosiect. Fodd bynnag, dim ond yn ystod oriau busnes, amser Gogledd America, y defnyddir y cod hwn. O ganlyniad, oherwydd y ffaith bod ein gweithwyr yn eu gweithleoedd, rydym yn gwbl barod i ddatrys unrhyw broblemau annisgwyl.

Bob dydd rydym yn cynnal tua 12 o leoliadau wedi'u cynllunio. Yn ystod pob defnydd, y rhaglennydd a ddynodwyd fel yr arweinydd lleoli sy'n gyfrifol am sicrhau bod yr adeilad newydd yn cael ei gynhyrchu. Mae hon yn broses aml-gam sy'n sicrhau bod y cynulliad yn cael ei gynhyrchu'n esmwyth. Diolch i'r dull hwn, gallwn ganfod gwallau cyn iddynt effeithio ar ein holl ddefnyddwyr. Os oes gormod o wallau, gellir rholio'r defnydd o'r cynulliad yn ôl. Os darganfyddir mater penodol ar ôl rhyddhau, mae'n hawdd rhyddhau atgyweiriad ar ei gyfer.

Methodoleg defnyddio prosiect a ddefnyddir yn Slack
Rhyngwyneb y system Checkpoint, a ddefnyddir yn Slack i ddefnyddio prosiectau

Gellir meddwl bod y broses o gyflwyno datganiad newydd i gynhyrchu yn cynnwys pedwar cam.

▍1. Creu cangen rhyddhau

Mae pob datganiad yn dechrau gyda changen rhyddhau newydd, pwynt yn ein hanes Git. Mae hyn yn caniatáu ichi aseinio tagiau i'r datganiad ac yn darparu man lle gallwch chi wneud atgyweiriadau byw ar gyfer bygiau a geir yn y broses o baratoi'r datganiad ar gyfer rhyddhau i gynhyrchu.

▍2. Defnydd mewn amgylchedd llwyfannu

Y cam nesaf yw defnyddio'r gwasanaeth ar weinyddion llwyfannu a rhedeg prawf awtomatig ar gyfer perfformiad cyffredinol y prosiect (prawf mwg). Mae'r amgylchedd llwyfannu yn amgylchedd cynhyrchu nad yw'n derbyn traffig allanol. Yn yr amgylchedd hwn, rydym yn cynnal profion llaw ychwanegol. Mae hyn yn rhoi hyder ychwanegol inni fod y prosiect wedi'i addasu yn gweithio'n gywir. Nid yw profion awtomataidd yn unig yn ddigon i ddarparu'r lefel hon o hyder.

▍3. Defnydd mewn amgylcheddau bwyd ci a chaneri

Mae lleoli i gynhyrchu yn dechrau gydag amgylchedd ci, a gynrychiolir gan set o westeion sy'n gwasanaethu ein gweithleoedd Slack mewnol. Gan ein bod ni'n ddefnyddwyr Slack gweithgar iawn, fe wnaeth cymryd y dull hwn ein helpu i ddal llawer o fygiau yn gynnar yn y defnydd. Ar ôl i ni wneud yn siŵr nad yw ymarferoldeb sylfaenol y system yn cael ei dorri, mae'r cynulliad yn cael ei ddefnyddio yn yr amgylchedd caneri. Mae'n cynrychioli systemau sy'n cyfrif am tua 2% o draffig cynhyrchu.

▍4. Rhyddhad graddol i gynhyrchu

Os bydd y dangosyddion monitro ar gyfer y datganiad newydd yn troi allan i fod yn sefydlog, ac os ar ôl defnyddio'r prosiect yn yr amgylchedd caneri nad ydym wedi derbyn unrhyw gwynion, rydym yn parhau i drosglwyddo'r gweinyddwyr cynhyrchu yn raddol i'r datganiad newydd. Rhennir y broses leoli yn y camau canlynol: 10%, 25%, 50%, 75% a 100%. O ganlyniad, gallwn drosglwyddo traffig cynhyrchu yn araf i ryddhad newydd y system. Ar yr un pryd, mae gennym amser i ymchwilio i'r sefyllfa os canfyddir unrhyw anghysondebau.

▍Beth os aiff rhywbeth o'i le yn ystod y defnydd?

Mae gwneud addasiadau i god bob amser yn risg. Ond rydym yn ymdopi â hyn diolch i bresenoldeb “arweinwyr lleoli” sydd wedi'u hyfforddi'n dda sy'n rheoli'r broses o ddod â datganiad newydd i'r cynhyrchiad, yn monitro dangosyddion monitro ac yn cydlynu gwaith rhaglenwyr yn rhyddhau cod.

Os bydd rhywbeth gwirioneddol yn mynd o'i le, rydym yn ceisio canfod y broblem cyn gynted â phosibl. Rydym yn ymchwilio i'r broblem, yn dod o hyd i'r cysylltiadau cyhoeddus sy'n achosi'r gwallau, yn ei rolio'n ôl, yn ei ddadansoddi'n drylwyr, ac yn creu adeilad newydd. Yn wir, weithiau mae'r broblem yn mynd heb i neb sylwi nes i'r prosiect ddechrau cynhyrchu. Mewn sefyllfa o'r fath, y peth pwysicaf yw adfer y gwasanaeth. Felly, cyn i ni ddechrau ymchwilio i'r broblem, rydym yn symud yn ôl ar unwaith i'r gwaith adeiladu blaenorol.

Blociau Adeiladu System Defnyddio

Edrychwn ar y technolegau sydd wrth wraidd ein system defnyddio prosiectau.

▍ Gosodiadau cyflym

Gall y llif gwaith a ddisgrifir uchod ymddangos, o edrych yn ôl, braidd yn amlwg. Ond ni ddaeth ein system lleoli fel hyn ar unwaith.

Pan oedd y cwmni'n llawer llai, gallai ein cais cyfan redeg ar 10 achos Amazon EC2. Roedd defnyddio'r prosiect yn y sefyllfa hon yn golygu defnyddio rsync i gysoni'r holl weinyddion yn gyflym. Yn flaenorol, dim ond un cam i ffwrdd o gynhyrchu oedd cod newydd, a gynrychiolir gan amgylchedd llwyfannu. Crëwyd a phrofwyd gwasanaethau mewn amgylchedd o'r fath, ac yna aethant yn syth i gynhyrchu. Roedd yn hawdd iawn deall system o'r fath; roedd yn caniatáu i unrhyw raglennydd ddefnyddio'r cod yr oedd wedi'i ysgrifennu ar unrhyw adeg.

Ond wrth i nifer ein cleientiaid gynyddu, felly hefyd yr oedd maint y seilwaith sydd ei angen i gefnogi'r prosiect. Yn fuan, o ystyried twf cyson y system, nid oedd ein model lleoli, yn seiliedig ar wthio cod newydd i'r gweinyddwyr, yn gwneud ei waith mwyach. Sef, roedd ychwanegu pob gweinydd newydd yn golygu cynyddu'r amser sydd ei angen i gwblhau'r defnydd. Mae gan hyd yn oed strategaethau sy'n seiliedig ar ddefnydd cyfochrog o rsync gyfyngiadau penodol.

Yn y pen draw, gwnaethom ddatrys y broblem hon trwy symud i system leoli gwbl gyfochrog, a ddyluniwyd yn wahanol i'r hen system. Sef, nawr ni wnaethom anfon cod at y gweinyddwyr gan ddefnyddio sgript cydamseru. Nawr mae pob gweinydd wedi lawrlwytho'r cynulliad newydd yn annibynnol, gan wybod bod angen iddo wneud hynny trwy fonitro newid allwedd y Conswl. Llwythodd y gweinyddion y cod yn gyfochrog. Caniataodd hyn i ni gynnal cyflymder defnyddio uchel hyd yn oed mewn amgylchedd o dwf cyson yn y system.

Methodoleg defnyddio prosiect a ddefnyddir yn Slack
1. Mae gweinyddwyr cynhyrchu yn monitro'r allwedd Conswl. 2. Mae'r newidiadau allweddol, mae hyn yn dweud wrth y gweinyddwyr bod angen iddynt ddechrau llwytho i lawr cod newydd. 3. Mae gweinyddwyr yn lawrlwytho ffeiliau tarball gyda chod cais

▍ Defnyddiau atomig

Ateb arall a'n helpodd i gyrraedd system lleoli aml-haen oedd lleoli atomig.

Cyn defnyddio gosodiadau atomig, gallai pob gosodiad arwain at nifer fawr o negeseuon gwall. Y ffaith yw nad oedd y broses o gopïo ffeiliau newydd i weinyddion cynhyrchu yn atomig. Arweiniodd hyn at gyfnod byr o amser lle'r oedd y cod a oedd yn galw swyddogaethau newydd ar gael cyn i'r swyddogaethau eu hunain fod ar gael. Pan alwyd cod o'r fath, arweiniodd at wallau mewnol yn cael eu dychwelyd. Amlygodd hyn ei hun mewn ceisiadau API a fethodd a thudalennau gwe wedi torri.

Fe wnaeth y tîm a weithiodd ar y broblem hon ei datrys trwy gyflwyno’r cysyniad o gyfeiriaduron “poeth” ac “oer”. Mae'r cod yn y cyfeiriadur poeth yn gyfrifol am brosesu traffig cynhyrchu. Ac mewn cyfeiriaduron “oer”, mae'r cod, tra bod y system yn rhedeg, dim ond yn cael ei baratoi i'w ddefnyddio. Yn ystod y defnydd, mae cod newydd yn cael ei gopïo i gyfeiriadur oer heb ei ddefnyddio. Yna, pan nad oes prosesau gweithredol ar y gweinydd, perfformir switsh cyfeiriadur ar unwaith.

Methodoleg defnyddio prosiect a ddefnyddir yn Slack
1. Dadbacio cod y cais i gyfeiriadur “oer”. 2. Newid y system i gyfeiriadur “oer”, sy'n dod yn “boeth” (gweithrediad atomig)

Canlyniadau: newid pwyslais i ddibynadwyedd

Yn 2018, tyfodd y prosiect i'r fath raddfa fel bod defnydd cyflym iawn wedi dechrau niweidio sefydlogrwydd y cynnyrch. Roedd gennym system leoli ddatblygedig iawn y gwnaethom fuddsoddi llawer o amser ac ymdrech ynddi. Y cyfan oedd angen i ni ei wneud oedd ailadeiladu a gwella ein prosesau lleoli. Rydym wedi tyfu i fod yn gwmni gweddol fawr, y mae ei ddatblygiadau wedi cael eu defnyddio ledled y byd i drefnu cyfathrebiadau di-dor ac i ddatrys problemau pwysig. Felly, daeth dibynadwyedd yn ganolbwynt i'n sylw.

Roedd angen i ni wneud y broses o ddefnyddio datganiadau Slack newydd yn fwy diogel. Arweiniodd yr angen hwn at wella ein system lleoli. Fel mater o ffaith, buom yn trafod y system well hon uchod. Yn nyfnder y system, rydym yn parhau i ddefnyddio technolegau defnyddio cyflym ac atomig. Mae'r ffordd y caiff y defnydd ei wneud wedi newid. Mae ein system newydd wedi'i chynllunio i ddefnyddio cod newydd yn raddol ar wahanol lefelau, mewn gwahanol amgylcheddau. Rydym bellach yn defnyddio offer cymorth mwy datblygedig ac offer monitro systemau nag o'r blaen. Mae hyn yn rhoi'r gallu i ni ddal a thrwsio gwallau ymhell cyn iddynt gael cyfle i gyrraedd y defnyddiwr terfynol.

Ond nid ydym yn mynd i stopio yno. Rydym yn gwella'r system hon yn gyson, gan ddefnyddio offer ategol mwy datblygedig ac offer awtomeiddio gwaith.

Annwyl ddarllenwyr! Sut mae'r broses o ddefnyddio datganiadau prosiect newydd yn gweithio lle rydych chi'n gweithio?

Methodoleg defnyddio prosiect a ddefnyddir yn Slack

Ffynhonnell: hab.com

Ychwanegu sylw