Metodoloġija tal-iskjerament tal-proġett użata f'Slack

Li ġġib rilaxx ġdid ta 'proġett fil-produzzjoni jeħtieġ bilanċ bir-reqqa bejn il-veloċità tal-iskjerament u l-affidabbiltà tas-soluzzjoni. Slack valuri iterazzjonijiet veloċi, ċikli qosra ta 'feedback, u rispons fil-pront għat-talbiet tal-utenti. Barra minn hekk, il-kumpanija għandha mijiet ta 'programmaturi li jistinkaw biex ikunu produttivi kemm jista' jkun.

Metodoloġija tal-iskjerament tal-proġett użata f'Slack

L-awturi tal-materjal, li t-traduzzjoni tiegħu qed nippubblikaw illum, jgħidu li kumpanija li tistinka biex taderixxi ma 'valuri bħal dawn u fl-istess ħin tikber trid ittejjeb kontinwament is-sistema ta' skjerament tal-proġett tagħha. Il-kumpanija teħtieġ tinvesti fit-trasparenza u l-affidabbiltà tal-proċessi tax-xogħol, u tagħmel dan biex tiżgura li dawn il-proċessi jikkorrispondu mal-iskala tal-proġett. Hawnhekk se nitkellmu dwar il-flussi tax-xogħol li żviluppaw f'Slack, u dwar xi wħud mid-deċiżjonijiet li wasslu lill-kumpanija biex tuża s-sistema ta 'deployment tal-proġett li teżisti llum.

Kif jaħdmu l-proċessi tal-iskjerament tal-proġetti llum

Kull PR (pull request) f'Slack għandu jkun soġġett għal reviżjoni tal-kodiċi u għandu jgħaddi b'suċċess mit-testijiet kollha. Huwa biss wara li jiġu sodisfatti dawn il-kundizzjonijiet li l-programmatur jista 'jgħaqqad il-kodiċi tiegħu fil-fergħa prinċipali tal-proġett. Madankollu, dan il-kodiċi jintuża biss matul il-ħinijiet tan-negozju, ħin tal-Amerika ta' Fuq. Bħala riżultat, minħabba l-fatt li l-impjegati tagħna qegħdin fuq il-postijiet tax-xogħol tagħhom, aħna lesti bis-sħiħ biex insolvu kwalunkwe problema mhux mistennija.

Kuljum inwettqu madwar 12-il skjerament ippjanat. Matul kull skjerament, il-programmatur maħtur bħala l-mexxej tal-iskjerament huwa responsabbli biex idaħħal il-bini l-ġdid fil-produzzjoni. Dan huwa proċess f'diversi stadji li jiżgura li l-assemblaġġ jinġieb fil-produzzjoni bla xkiel. Grazzi għal dan l-approċċ, nistgħu niskopru żbalji qabel ma jaffettwaw lill-utenti kollha tagħna. Jekk ikun hemm wisq żbalji, l-iskjerament tal-assemblaġġ jista 'jiġi mibdul lura. Jekk tiġi skoperta kwistjoni speċifika wara r-rilaxx, tista' faċilment tiġi rilaxxata soluzzjoni għaliha.

Metodoloġija tal-iskjerament tal-proġett użata f'Slack
Interface tas-sistema Checkpoint, li tintuża f'Slack biex tiskjera proġetti

Il-proċess tal-iskjerament ta' rilaxx ġdid għall-produzzjoni jista' jitqies li jikkonsisti f'erba' passi.

▍1. Ħolqien ta 'fergħa ta' rilaxx

Kull rilaxx jibda b'fergħa ġdida ta 'rilaxx, punt fl-istorja Git tagħna. Dan jippermettilek tassenja tags għar-rilaxx u tipprovdi post fejn tista 'tagħmel soluzzjonijiet ħajjin għal bugs misjuba fil-proċess tat-tħejjija tar-rilaxx għar-rilaxx għall-produzzjoni.

▍2. Skjerament f'ambjent ta' staging

Il-pass li jmiss huwa li tuża l-assemblaġġ fuq servers ta 'staging u tmexxi test awtomatiku għall-prestazzjoni ġenerali tal-proġett (test tad-duħħan). L-ambjent tal-waqfien huwa ambjent ta 'produzzjoni li ma jirċievix traffiku estern. F'dan l-ambjent, aħna nagħmlu ttestjar manwali addizzjonali. Dan jagħtina kunfidenza addizzjonali li l-proġett modifikat jaħdem b'mod korrett. It-testijiet awtomatizzati waħedhom mhumiex biżżejjed biex jipprovdu dan il-livell ta' kunfidenza.

▍3. Skjerament f'ambjenti dogfood u kanarji

L-iskjerament għall-produzzjoni jibda b'ambjent dogfood, rappreżentat minn sett ta 'hosts li jservu l-ispazji tax-xogħol interni tagħna ta' Slack. Peress li aħna utenti Slack attivi ħafna, it-teħid ta 'dan l-approċċ għenna naqbdu ħafna bugs kmieni fl-iskjerament. Wara li nkunu żgurajna li l-funzjonalità bażika tas-sistema ma tinkiserx, l-assemblaġġ jiġi skjerat fl-ambjent kanarju. Jirrappreżenta sistemi li jammontaw għal madwar 2% tat-traffiku tal-produzzjoni.

▍4. Rilaxx gradwali għall-produzzjoni

Jekk l-indikaturi ta 'monitoraġġ għar-rilaxx il-ġdid jirriżultaw li huma stabbli, u jekk wara l-iskjerament tal-proġett fl-ambjent tal-kanarji ma rċevejna l-ebda ilment, inkomplu nittrasferixxu gradwalment is-servers tal-produzzjoni għar-rilaxx il-ġdid. Il-proċess ta 'skjerament huwa maqsum fl-istadji li ġejjin: 10%, 25%, 50%, 75% u 100%. Bħala riżultat, nistgħu nittrasferixxu bil-mod it-traffiku tal-produzzjoni għar-rilaxx il-ġdid tas-sistema. Fl-istess ħin, għandna ħin biex ninvestigaw is-sitwazzjoni jekk jinstabu xi anomaliji.

▍X'jiġri jekk xi ħaġa tmur ħażin waqt l-iskjerament?

Li tagħmel modifiki fil-kodiċi huwa dejjem riskju. Iżda aħna nkampaw ma 'dan grazzi għall-preżenza ta' "mexxejja ta 'skjerament" imħarrġa sew li jimmaniġġjaw il-proċess li jġibu rilaxx ġdid fil-produzzjoni, jimmonitorjaw indikaturi ta' monitoraġġ u jikkoordinaw ix-xogħol tal-programmaturi li jirrilaxxaw il-kodiċi.

Fil-każ li xi ħaġa verament tmur ħażin, nippruvaw insibu l-problema kmieni kemm jista 'jkun. Aħna ninvestigaw il-problema, insibu l-PR li qed tikkawża l-iżbalji, nerġgħuha lura, nanalizzawha bir-reqqa, u noħolqu bini ġdid. Veru, xi drabi l-problema ma tibqax innotata sakemm il-proġett jidħol fil-produzzjoni. F'sitwazzjoni bħal din, l-iktar ħaġa importanti hija li r-restawr tas-servizz. Għalhekk, qabel ma nibdew ninvestigaw il-problema, nerġgħu lura immedjatament għall-bini ta 'ħidma preċedenti.

Bini ta' Sistema ta' Skjerament

Ejja nħarsu lejn it-teknoloġiji li huma l-bażi tas-sistema tagħna ta' skjerament tal-proġett.

▍Skjeramenti ta' malajr

Il-fluss tax-xogħol deskritt hawn fuq jista 'jidher, retrospettivament, kemmxejn ovvju. Iżda s-sistema ta' skjerament tagħna ma saretx b'dan il-mod mill-ewwel.

Meta l-kumpanija kienet ħafna iżgħar, l-applikazzjoni kollha tagħna setgħet taħdem fuq 10 istanzi Amazon EC2. L-iskjerament tal-proġett f'din is-sitwazzjoni kien ifisser li tuża rsync biex tissinkronizza malajr is-servers kollha. Preċedentement, kodiċi ġdid kien biss pass 'il bogħod mill-produzzjoni, rappreżentat minn ambjent ta' stadji. L-assemblaġġi ġew maħluqa u ttestjati f'ambjent bħal dan, u mbagħad marru dritti għall-produzzjoni. Kien faċli ħafna li tifhem sistema bħal din; kienet tippermetti lil kull programmatur juża l-kodiċi li kien kiteb fi kwalunkwe ħin.

Iżda hekk kif in-numru tal-klijenti tagħna kiber, hekk żdiedet l-iskala tal-infrastruttura meħtieġa biex tappoġġja l-proġett. Dalwaqt, minħabba t-tkabbir kostanti tas-sistema, il-mudell ta 'skjerament tagħna, ibbażat fuq l-imbuttar ta' kodiċi ġdid għas-servers, ma kienx għadu qed jagħmel xogħolu. Jiġifieri, iż-żieda ta 'kull server ġdid fissret li jiżdied il-ħin meħtieġ biex jitlesta l-iskjerament. Anke strateġiji bbażati fuq użu parallel ta 'rsync għandhom ċerti limitazzjonijiet.

Spiċċajna solvejna din il-problema billi morna għal sistema ta’ skjerament kompletament parallela, li kienet iddisinjata b’mod differenti mis-sistema l-antika. Jiġifieri, issa ma bgħatniex kodiċi lis-servers bl-użu ta 'skript ta' sinkronizzazzjoni. Issa kull server niżżel b'mod indipendenti l-assemblaġġ il-ġdid, billi kien jaf li kellu bżonn jagħmel dan billi jimmonitorja l-bidla ewlenija tal-Konslu. Is-servers għabbew il-kodiċi b'mod parallel. Dan ippermetta li nżommu veloċità għolja ta 'skjerament anke f'ambjent ta' tkabbir kostanti tas-sistema.

Metodoloġija tal-iskjerament tal-proġett użata f'Slack
1. Is-servers tal-produzzjoni jimmonitorjaw iċ-ċavetta tal-Konslu. 2. Il-bidliet ewlenin, dan jgħid lis-servers li għandhom bżonn jibdew iniżżlu kodiċi ġdid. 3. Servers iniżżlu fajls tarball bil-kodiċi tal-applikazzjoni

▍Skjeramenti atomiċi

Soluzzjoni oħra li għenitna nilħqu sistema ta’ skjerament f’diversi livelli kienet l-iskjerament atomiku.

Qabel ma tuża skjeramenti atomiċi, kull skjerament jista 'jirriżulta f'numru kbir ta' messaġġi ta 'żball. Il-fatt hu li l-proċess tal-ikkupjar ta 'fajls ġodda għal servers ta' produzzjoni ma kienx atomiku. Dan irriżulta f'tieqa qasira ta 'żmien fejn il-kodiċi li sejjaħ funzjonijiet ġodda kien disponibbli qabel ma l-funzjonijiet infushom kienu disponibbli. Meta tali kodiċi ġie msejjaħ, irriżulta fi żbalji interni jiġu rritornati. Dan wera ruħu f'talbiet API falluti u paġni web miksura.

It-tim li ħadem fuq din il-problema solviha billi introduċa l-kunċett ta 'direttorji "sħan" u "kesħa". Il-kodiċi fid-direttorju sħun huwa responsabbli għall-ipproċessar tat-traffiku tal-produzzjoni. U fid-direttorji "kesħa", il-kodiċi, waqt li s-sistema tkun qed taħdem, qed jitħejja biss għall-użu. Waqt l-iskjerament, kodiċi ġdid jiġi kkupjat f'direttorju kiesaħ mhux użat. Imbagħad, meta ma jkunx hemm proċessi attivi fuq is-server, isir swiċċ tad-direttorju immedjat.

Metodoloġija tal-iskjerament tal-proġett użata f'Slack
1. Tneħħi l-ippakkjar tal-kodiċi tal-applikazzjoni f'direttorju "kiesaħ". 2. Qlib tas-sistema għal direttorju "kiesaħ", li jsir "sħun" (operazzjoni atomika)

Riżultati: bidla fl-enfasi għall-affidabbiltà

Fl-2018, il-proġett kiber għal tali skala li skjerament rapidu ħafna beda jagħmel ħsara lill-istabbiltà tal-prodott. Kellna sistema ta’ skjerament avvanzata ħafna li fiha investejna ħafna ħin u sforz. Kulma kellna nagħmlu kien li nibnu mill-ġdid u ntejbu l-proċessi tal-iskjerament tagħna. Aħna kibru f'kumpanija pjuttost kbira, li l-iżviluppi tagħha ntużaw madwar id-dinja kollha biex torganizza komunikazzjonijiet mingħajr interruzzjoni u biex issolvi problemi importanti. Għalhekk, l-affidabbiltà saret il-fokus tal-attenzjoni tagħna.

Kellna nagħmlu l-proċess ta’ skjerament ta’ rilaxxi ġodda ta’ Slack aktar sigur. Din il-ħtieġa wasslitna biex intejbu s-sistema ta’ skjerament tagħna. Fil-fatt, iddiskutejna din is-sistema mtejba hawn fuq. Fil-fond tas-sistema, aħna nkomplu nużaw teknoloġiji ta 'skjerament veloċi u atomiku. Il-mod kif isir l-iskjerament inbidel. Is-sistema l-ġdida tagħna hija mfassla biex tiskjera gradwalment kodiċi ġdid f'livelli differenti, f'ambjenti differenti. Issa nużaw għodod ta 'appoġġ u għodod ta' monitoraġġ tas-sistema aktar avvanzati minn qabel. Dan jagħtina l-abbiltà li naqbdu u nirranġaw l-iżbalji ħafna qabel ma jkollhom iċ-ċans li jilħqu l-utent aħħari.

Imma mhux se nieqfu hemm. Qegħdin intejbu kontinwament din is-sistema, billi nużaw għodod awżiljarji aktar avvanzati u għodod ta 'awtomazzjoni tax-xogħol.

Għeżież qarrejja! Kif jaħdem il-proċess ta' skjerament ta' rilaxxi ta' proġetti ġodda fejn taħdem?

Metodoloġija tal-iskjerament tal-proġett użata f'Slack

Sors: www.habr.com

Żid kumment