Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn

Ji bo derxistina projeyek nû di hilberînê de hevsengiyek baldar di navbera leza bicîhkirinê û pêbaweriya çareseriyê de hewce dike. Slack dubarekirinên bilez, çerxên nerînên kurt, û bersiva bilez li ser daxwazên bikarhêner nirx dike. Wekî din, pargîdanî bi sedan bernamenûs hene ku hewil didin ku bi qasî ku gengaz bibin hilber.

Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn

Nivîskarên materyalê, wergera ku em îro diweşînin, dibêjin ku pargîdaniyek ku hewl dide ku bi nirxên weha ve girêdayî be û di heman demê de mezin bibe, divê bi domdarî pergala bicîhkirina projeya xwe baştir bike. Pêdivî ye ku pargîdanî di zelalbûn û pêbaweriya pêvajoyên xebatê de veberhênanê bike, vê yekê bike da ku pê ewle bibe ku ev pêvajo bi pîvana projeyê re têkildar in. Li vir em ê li ser karûbarên ku di Slack de pêş ketine, û li ser hin biryarên ku rê dane pargîdanî ku pergala bicîhkirina projeyê ya ku îro heye bikar bîne biaxivin.

Pêvajoyên bicihkirina projeyê îro çawa dixebitin

Pêdivî ye ku her PR (daxwaza vekişînê) li Slack were şopandin û divê hemî ceribandinan bi serfirazî derbas bike. Tenê piştî ku van mercan pêk bînin bernameçêker dikare koda xwe bike nav şaxê masterê projeyê. Lêbelê, ev kod tenê di demjimêrên karsaziyê, dema Amerîkaya Bakur de tête danîn. Di encamê de, ji ber ku karmendên me li cîhên kar in, em bi tevahî amade ne ku her pirsgirêkek neçaverêkirî çareser bikin.

Her roj em nêzî 12 sewqên plankirî pêk tînin. Di her sazkirinê de, bernameçêkerê ku wekî pêşengê bicîhkirinê hatî destnîşan kirin berpirsiyar e ku avakirina nû bikeve hilberînê. Ev pêvajoyek pir-gavek e ku piştrast dike ku meclîs bi hêsanî tê hilberandin. Bi saya vê nêzîkbûnê, em dikarin xeletiyan berî ku ew bandorê li hemî bikarhênerên me bikin, tespît bikin. Ger gelek xeletî hebin, sazkirina meclîsê dikare paşde vegere. Ger piştî berdanê pirsgirêkek taybetî were kifş kirin, çareseriyek bi hêsanî ji bo wê were berdan.

Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn
Navbera pergala Checkpoint, ku di Slack de ji bo bicîhkirina projeyan tê bikar anîn

Pêvajoya şandina berdanek nû ji hilberînê re dikare wekî çar gavan were fikirîn.

1. Çêkirina şaxek berdanê

Her berdan bi şaxek berdana nû, xalek di dîroka meya Git de dest pê dike. Ev rê dide we ku hûn etîketan li ser berdanê veqetînin û cîhek peyda dike ku hûn dikarin rastkirinên zindî ji bo xeletiyên ku di pêvajoya amadekirina serbestberdanê de ji bo hilberînê têne dîtin de peyda bikin.

±2. Dabeşkirina di hawîrdora qonaxê de

Pêngava paşîn ev e ku meclîsê li ser pêşkêşkerên qonaxkirinê bicîh bikin û ji bo performansa giştî ya projeyê ceribandinek otomatîkî bimeşînin (testa dûmanê). Hawirdora sehneyê hawîrdorek hilberînê ye ku seyrûsefera derve nagire. Di vê hawîrdorê de, em ceribandina desta ya zêde dikin. Ev pêbaweriyek zêde dide me ku projeya hatî guherandin rast dixebite. Ji bo peydakirina vê astê pêbaweriyê tenê ceribandinên otomatîkî ne bes in.

º3. Dabeşkirina li hawîrdorên kûçik û kanaran

Dabeşkirina hilberînê bi hawîrdorek dogfood-ê dest pê dike, ku ji hêla komek mêvandarên ku ji cîhên xebata meya hundurîn a Slack re xizmet dikin têne temsîl kirin. Ji ber ku em bikarhênerên Slack-ê pir çalak in, girtina vê nêzîkatiyê alîkariya me kir ku di destpêka sazkirinê de gelek xeletiyan bigirin. Piştî ku me piştrast kir ku fonksiyona bingehîn a pergalê neşikestî ye, meclîs li hawîrdora kanariyê tê bicîh kirin. Ew pergalên ku bi qasî 2% seyrûsefera hilberînê pêk tîne temsîl dike.

4. Hilberîna gav bi gav

Ger nîşanên çavdêriyê yên ji bo serbestberdana nû stabîl bibin, û heke piştî bicîhkirina projeyê di hawîrdora canary de me tu gilî negirtibe, em hêdî hêdî veguherîna serverên hilberînê li berdana nû berdewam dikin. Pêvajoya belavkirinê di qonaxên jêrîn de tê dabeş kirin: 10%, 25%, 50%, 75% û 100%. Wekî encamek, em dikarin hêdî hêdî seyrûsefera hilberînê veguhezînin serbestberdana nû ya pergalê. Di heman demê de, dema me heye ku em rewşê lêkolîn bikin ger ku anomalî werin dîtin.

▍Heke di dema bicihkirinê de tiştek xelet derkeve dê çi bibe?

Çêkirina guherandinên kodê her gav xeternak e. Lê em bi vê yekê re bi saya hebûna "rêberên bicîhkirinê" yên baş-perwerdekirî yên ku pêvajoya anîna nûvekek nû di hilberandinê de birêve dibin, nîşaneyên çavdêriyê dişopînin û xebata bernamenûsan ku kodê derdixin hevrêz dikin.

Di bûyera ku tiştek bi rastî xelet çêdibe, em hewl didin ku pirsgirêkê di zûtirîn dem de kifş bikin. Em pirsgirêkê lêkolîn dikin, PR-ya ku dibe sedema xeletiyan dibînin, wê paşde vedigerînin, bi baldarî analîz dikin, û avahiyek nû diafirînin. Rast e, carinan pirsgirêk ji nedîtî ve diçe heya ku proje têkeve hilberînê. Di rewşek weha de, ya herî girîng ew e ku karûbarê vegere. Ji ber vê yekê, berî ku em dest bi lêkolîna pirsgirêkê bikin, em tavilê vedigerin avakirina xebata berê.

Avakirina Blokên Pergalek Dabeşkirinê

Werin em li teknolojiyên ku di bin pergala bicîhkirina projeya me de ne binêrin.

▍Bicihkirinên bilez

Xebata ku li jor hatî diyar kirin dibe ku, di paşverû de, hinekî eşkere xuya bike. Lê pergala me ya bicihkirinê yekser bi vî rengî nebû.

Gava ku pargîdanî pir piçûktir bû, tevahiya serîlêdana me dikare li ser 10 mînakên Amazon EC2 bixebite. Bicihkirina projeyê di vê rewşê de tê vê wateyê ku rsync bikar bîne da ku zû hemî serveran hevdeng bike. Berê, koda nû tenê gavek ji hilberînê dûr bû, ku ji hêla hawîrdorek stasyonê ve hatî temsîl kirin. Meclîs di hawîrdorek weha de hatin çêkirin û ceribandin û dûv re rasterast derbasî hilberînê bûn. Fêmkirina pergalek weha pir hêsan bû; ew hişt ku her bernamenûs koda ku nivîsandiye di her kêliyê de bicîh bike.

Lê her ku jimara xerîdarên me zêde bû, pîvana binesaziya ku ji bo piştgirîkirina projeyê hewce bû jî zêde bû. Zû zû, ji ber mezinbûna domdar a pergalê, modela meya bicîhkirinê, li ser bingeha xistina koda nû ya serveran, nema karê xwe dikir. Ango, lê zêdekirina her serverek nû tê vê wateyê ku wextê ku ji bo temamkirina bicîhkirinê hewce dike zêde dike. Tewra stratejiyên li ser bingeha karanîna paralel a rsync-ê jî hin sînor hene.

Me dawî li çareserkirina vê pirsgirêkê anî û derbasî pergalek birêkûpêkkirina bi tevahî paralel, ku ji pergala kevn cuda hatî sêwirandin, kir. Ango, naha me kodek bi karanîna skrîptek hevdengkirinê ji serveran re neşand. Naha her serverek serbixwe meclîsa nû dakêşand, dizanibû ku pêdivî ye ku bi çavdêriya guheztina mifteya Konsulê wiya bike. Pêşkêşker koda paralel barkirin. Vê yekê hişt ku em di nav jîngehek mezinbûna pergalê ya domdar de bilezek bilind a bicîhkirinê biparêzin.

Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn
1. Pêşkêşkerên hilberînê mifteya Konsulê dişopînin. 2. Miftê diguhere, ev ji pêşkêşkeran re dibêje ku ew hewce ne ku dest bi dakêşana koda nû bikin. 3. Server pelên tarball bi koda serîlêdanê dakêşin

▍Atomic Deployments

Çareseriyek din a ku alîkariya me kir ku em bigihîjin pergalek birêkûpêk a pir-ast, bicîhkirina atomê bû.

Beriya ku bi cîhkirina atomî bikar bînin, her veqetandin dikare bibe hejmareke mezin ji peyamên xeletiyê. Rastî ev e ku pêvajoya kopîkirina pelên nû li serverên hilberînê ne atomî bû. Vê yekê di pencereyek kin de encam da ku koda ku jê re fonksiyonên nû digotin berî ku fonksiyon bixwe peyda bibin peyda bû. Dema ku kodek weha hate gazî kirin, ew di encamê de xeletiyên hundurîn hatin vegerandin. Vê yekê di daxwazên API-ê yên têkçûyî û rûpelên malperê yên şikestî de xwe nîşan da.

Tîma ku li ser vê pirsgirêkê xebitî ew bi danasîna têgeha pelrêça "germ" û "sar" çareser kir. Koda di pelrêça germ de berpirsiyarê hilberandina seyrûsefera hilberînê ye. Û di pelrêçikên "sar" de, kod, dema ku pergal dimeşîne, tenê ji bo karanîna tê amadekirin. Di dema bicîhkirinê de, koda nû li pelrêçek sar a nekarkirî tê kopî kirin. Dûv re, gava ku li ser serverê pêvajoyên çalak tune ne, veguherînek pelrêça tavilê tête kirin.

Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn
1. Vekirina koda serîlêdanê di pelrêçek "sar" de. 2. Veguheztina pergalê li pelrêçek "sar", ku dibe "germ" (operasyona atomî)

Encam: guheztina li ser pêbaweriyê

Di sala 2018-an de, proje di astek wusa de mezin bû ku bicîhkirina pir bilez dest pê kir ku zirarê bide aramiya hilberê. Pergalek me ya pir pêşkeftî hebû ku me gelek dem û hewldan tê de razandin. Tiştê ku hewce bû ku em bikin ev bû ku pêvajoyên xwe yên bicihkirinê ji nû ve ava bikin û baştir bikin. Em bûne pargîdaniyek pir mezin, ku pêşkeftinên wê li çaraliyê cîhanê hatine bikar anîn da ku danûstandinên bênavber organîze bikin û pirsgirêkên girîng çareser bikin. Ji ber vê yekê, pêbawerî bû navenda bala me.

Me hewce kir ku pêvajoya bicîhkirina berdanên nû yên Slack ewledartir bikin. Vê hewcedariyê rê da me ku em pergala xweya belavkirinê baştir bikin. Bi rastî, me li jor li ser vê pergala pêşkeftî nîqaş kir. Di kûrahiya pergalê de, em berdewam dikin ku teknolojiyên belavkirina bilez û atomî bikar bînin. Awayê belavkirinê hatiye guhertin. Pergala meya nû hatiye dîzaynkirin ku hêdî hêdî koda nû li astên cihêreng, di hawîrdorên cihêreng de bicîh bike. Em naha ji berê bêtir amûrên piştgirî û amûrên şopandina pergalê bikar tînin. Ev ji me re şansê dide ku em xeletiyan bigirin û rast bikin berî ku ew şansek bigihîjin bikarhênerê dawî.

Lê em ê li vir nesekinin. Em bi berdewamî vê pergalê baştir dikin, amûrên alîkar ên pêşkeftî û amûrên otomasyona xebatê bikar tînin.

Xwendevanên delal! Pêvajoya belavkirina projeyên nû li cîhê ku hûn dixebitin çawa dixebite?

Metodolojiya bicihkirina projeyê di Slack de tê bikar anîn

Source: www.habr.com

Add a comment