Qhov project deployment methodology siv hauv Slack

Nqa ib txoj haujlwm tshiab tso rau hauv kev tsim khoom yuav tsum tau ua tib zoo sib npaug ntawm kev xa mus ceev thiab kev daws teeb meem. Slack muaj nuj nqis nrawm nrawm, lub voj voog tawm tswv yim luv luv, thiab cov lus teb sai rau cov neeg siv thov. Tsis tas li ntawd, lub tuam txhab muaj ntau pua tus programmers uas siv zog ua kom tsim tau raws li qhov ua tau.

Qhov project deployment methodology siv hauv Slack

Cov neeg sau ntawv ntawm cov ntaub ntawv, cov lus txhais uas peb tab tom tshaj tawm hnub no, hais tias ib lub tuam txhab uas siv zog ua raws li cov txiaj ntsig zoo li no thiab tib lub sijhawm loj hlob yuav tsum tau txhim kho nws txoj haujlwm xa mus tas li. Lub tuam txhab yuav tsum tau nqis peev pab rau hauv pob tshab thiab kev ntseeg siab ntawm cov txheej txheem ua haujlwm, ua qhov no kom ntseeg tau tias cov txheej txheem no sib haum rau qhov ntsuas ntawm qhov project. Ntawm no peb yuav tham txog cov kev ua haujlwm uas tau tsim nyob rau hauv Slack, thiab hais txog qee qhov kev txiav txim siab uas coj lub tuam txhab siv qhov project xa tawm uas muaj nyob rau niaj hnub no.

Yuav ua li cas cov txheej txheem xa tawm ua haujlwm niaj hnub no

Txhua PR (rub daim ntawv thov) hauv Slack yuav tsum raug tshuaj xyuas thiab yuav tsum ua tiav tag nrho cov kev xeem. Tsuas yog tom qab cov xwm txheej no tau ntsib tus programmer tuaj yeem koom ua ke nws cov lej rau hauv tus tswv ceg ntawm qhov project. Txawm li cas los xij, cov cai no tsuas yog siv thaum lub sijhawm ua haujlwm, lub sijhawm North American. Raws li qhov tshwm sim, vim tias peb cov neeg ua haujlwm nyob hauv lawv qhov chaw ua haujlwm, peb tau npaj siab los daws cov teeb meem uas tsis tau xav txog.

Txhua hnub peb ua txog 12 qhov kev npaj xa tawm. Thaum txhua qhov kev xa tawm, tus programmer raug xaiv los ua tus xa khoom xa tuaj yog lub luag haujlwm kom tau txais kev tsim kho tshiab rau hauv kev tsim khoom. Qhov no yog cov txheej txheem ntau kauj ruam uas ua kom lub rooj sib txoos coj mus rau hauv kev tsim khoom zoo. Ua tsaug rau txoj hauv kev no, peb tuaj yeem tshawb xyuas qhov yuam kev ua ntej lawv cuam tshuam tag nrho peb cov neeg siv. Yog tias muaj ntau qhov yuam kev, kev xa tawm ntawm lub rooj sib txoos tuaj yeem rov qab tau. Yog tias qhov teeb meem tshwj xeeb raug tshawb pom tom qab tso tawm, kho tau yooj yim tso tawm rau nws.

Qhov project deployment methodology siv hauv Slack
Interface ntawm Checkpoint system, uas yog siv nyob rau hauv Slack rau deploy tej yaam num

Cov txheej txheem ntawm kev xa tawm tshiab rau kev tsim khoom tuaj yeem xav tias muaj plaub kauj ruam.

▍1. Tsim ib ceg tso tawm

Txhua qhov kev tso tawm pib nrog cov ceg tso tawm tshiab, qhov taw qhia hauv peb keeb kwm Git. Qhov no tso cai rau koj los muab cov cim npe rau qhov kev tso tawm thiab muab qhov chaw uas koj tuaj yeem txhim kho nyob rau cov kab uas pom nyob rau hauv tus txheej txheem ntawm kev npaj qhov kev tso tawm rau kev tsim khoom.

▍ 2. Kev xa tawm hauv ib puag ncig kev ua haujlwm

Cov kauj ruam tom ntej yog xa mus rau kev sib dhos ntawm staging servers thiab khiav qhov kev sim tsis siv neeg rau tag nrho cov kev ua tau zoo ntawm qhov project (kev sim haus luam yeeb). Qhov chaw staging yog ib puag ncig tsim khoom uas tsis tau txais cov tsheb khiav tawm sab nraud. Nyob rau hauv ib puag ncig no, peb ua cov kev ntsuas phau ntawv ntxiv. Qhov no ua rau peb muaj kev ntseeg siab ntxiv tias qhov kev hloov kho ua haujlwm raug. Kev xeem tsis siv neeg ib leeg tsis txaus los muab kev ntseeg siab rau qib no.

▍ 3. Kev xa tawm hauv dogfood thiab canary ib puag ncig

Kev xa mus rau kev tsim khoom pib nrog ib puag ncig dogfood, sawv cev los ntawm pawg tswv tsev uas pab peb cov chaw ua haujlwm sab hauv Slack. Txij li thaum peb yog cov neeg siv Slack nquag heev, kev siv txoj hauv kev no tau pab peb ntes ntau cov kab thaum ntxov ntawm kev xa tawm. Tom qab peb tau ua kom paub tseeb tias qhov kev ua haujlwm yooj yim ntawm lub kaw lus tsis tawg, lub rooj sib txoos tau muab tso rau hauv qhov chaw canary. Nws sawv cev rau cov tshuab uas suav txog kwv yees li 2% ntawm kev tsim khoom.

▍ 4. Maj mam tso rau ntau lawm

Yog tias qhov ntsuas ntsuas rau qhov kev tso tawm tshiab tau hloov mus rau qhov ruaj khov, thiab yog tias tom qab siv qhov project hauv ib puag ncig canary peb tsis tau txais kev tsis txaus siab, peb txuas ntxiv maj mam hloov cov servers rau qhov kev tso tawm tshiab. Cov txheej txheem xa tawm tau muab faib ua cov theem hauv qab no: 10%, 25%, 50%, 75% thiab 100%. Yog li ntawd, peb tuaj yeem maj mam hloov cov tsheb khiav mus rau qhov kev tso tawm tshiab ntawm qhov system. Nyob rau tib lub sijhawm, peb muaj sijhawm los soj ntsuam qhov xwm txheej yog tias pom muaj qhov tsis txaus ntseeg.

▍ Yuav ua li cas yog tias muaj ib yam dab tsi tsis ncaj ncees lawm thaum xa tawm?

Kev hloov kho rau code yeej ib txwm muaj kev pheej hmoo. Tab sis peb tiv nrog qhov no ua tsaug rau qhov muaj kev cob qhia zoo "cov thawj coj xa mus" uas tswj cov txheej txheem ntawm kev coj cov kev tso tawm tshiab rau hauv kev tsim khoom, saib xyuas cov ntsuas ntsuas thiab koom tes ua haujlwm ntawm cov neeg tsim tawm cov cai.

Nyob rau hauv qhov kev tshwm sim muaj ib yam dab tsi mus tsis ncaj ncees lawm, peb sim soj ntsuam qhov teeb meem sai li sai tau. Peb tshawb xyuas qhov teeb meem, nrhiav qhov PR uas ua rau muaj qhov yuam kev, yob rov qab, txheeb xyuas kom meej, thiab tsim ib qho tshiab. Muaj tseeb, qee zaum qhov teeb meem mus tsis tau pom txog thaum qhov project nkag mus rau hauv kev tsim khoom. Nyob rau hauv cov xwm txheej zoo li no, qhov tseem ceeb tshaj plaws yog los kho cov kev pabcuam. Yog li ntawd, ua ntej peb pib tshawb xyuas qhov teeb meem, peb tam sim ntawd rov qab mus rau qhov kev tsim ua haujlwm dhau los.

Lub Tsev Blocks ntawm Ib Qhov Kev Tshaj Tawm

Cia peb saib cov technologies uas underlies peb qhov project deployment system.

▍ Kev xa tawm sai

Cov kev ua haujlwm tau piav qhia saum toj no yuav zoo li, hauv kev rov qab, qee qhov pom tseeb. Tab sis peb txoj kev xa tawm tsis tau dhau los ua txoj kev no tam sim ntawd.

Thaum lub tuam txhab me dua, peb daim ntawv thov tag nrho tuaj yeem khiav ntawm 10 Amazon EC2 piv txwv. Kev xa tawm qhov project hauv qhov xwm txheej no txhais tau tias siv rsync kom synchronize tag nrho cov servers sai. Yav dhau los, cov cai tshiab tsuas yog ib kauj ruam deb ntawm kev tsim khoom, sawv cev los ntawm ib puag ncig staging. Cov khoom sib dhos tau tsim thiab sim hauv ib puag ncig zoo li no, thiab tom qab ntawd mus ncaj qha rau kev tsim khoom. Nws yooj yim heev rau kev nkag siab zoo li no; nws tso cai rau txhua tus programmer siv cov cai uas nws tau sau txhua lub sijhawm.

Tab sis raws li tus naj npawb ntawm peb cov neeg siv khoom loj tuaj, yog li qhov ntsuas ntawm cov txheej txheem tsim nyog los txhawb txoj haujlwm. Tsis ntev, muab qhov kev loj hlob tsis tu ncua ntawm lub kaw lus, peb cov qauv xa tawm, raws li kev thawb cov cai tshiab rau cov servers, tsis ua nws txoj haujlwm. Namely, ntxiv txhua tus neeg rau zaub mov tshiab txhais tau tias nce lub sijhawm xav tau los ua kom tiav qhov kev xa tawm. Txawm tias cov tswv yim raws li kev siv tib yam ntawm rsync muaj qee qhov kev txwv.

Peb xaus los daws qhov teeb meem no los ntawm kev txav mus rau ib qho kev xa tawm tag nrho, uas tau tsim txawv ntawm cov txheej txheem qub. Namely, tam sim no peb tsis tau xa cov lej rau cov servers siv cov ntawv synchronization. Tam sim no txhua tus neeg rau zaub mov ntawm nws tus kheej rub tawm lub rooj sib txoos tshiab, paub tias nws yuav tsum ua li ntawd los ntawm kev saib xyuas tus Consul key hloov. Cov servers thauj cov code nyob rau hauv parallel. Qhov no tau tso cai rau peb kom tswj tau qhov kev xa tawm ceev txawm tias nyob hauv ib puag ncig ntawm kev loj hlob tsis tu ncua.

Qhov project deployment methodology siv hauv Slack
1. Ntau lawm servers saib xyuas tus yuam sij Consul. 2. Cov kev hloov pauv tseem ceeb, qhov no qhia cov servers tias lawv yuav tsum pib rub tawm cov lej tshiab. 3. Cov servers rub tawm cov ntaub ntawv tarball nrog daim ntawv thov code

▍ Atomic deployments

Lwm qhov kev daws teeb meem uas pab peb mus txog ntau theem kev xa tawm yog kev xa tawm atomic.

Ua ntej siv atomic deployments, txhua qhov kev xa tawm tuaj yeem ua rau muaj ntau cov lus yuam kev. Qhov tseeb yog tias cov txheej txheem ntawm kev luam cov ntaub ntawv tshiab rau cov servers ntau lawm tsis yog atomic. Qhov no ua rau lub qhov rais luv luv ntawm lub sijhawm uas cov cai uas hu ua cov haujlwm tshiab tau muaj ua ntej cov haujlwm lawv tus kheej muaj. Thaum xws li code raug hu, nws ua rau sab hauv yuam kev raug xa rov qab. Qhov no tshwm sim nws tus kheej hauv kev thov API ua tsis tiav thiab cov nplooj ntawv web tawg.

Pab neeg ua haujlwm ntawm qhov teeb meem no tau daws nws los ntawm kev qhia lub tswv yim ntawm "kub" thiab "txias" phau ntawv qhia. Cov cai nyob rau hauv cov npe kub yog lub luag haujlwm rau kev tsim cov tsheb khiav. Thiab nyob rau hauv "txias", cov cai, thaum lub kaw lus tab tom khiav, tsuas yog npaj rau kev siv. Thaum lub sij hawm xa mus, cov cai tshiab tau theej rau hauv cov ntawv teev npe txias uas tsis siv. Tom qab ntawd, thaum tsis muaj cov txheej txheem ua haujlwm ntawm lub server, qhov hloov pauv hloov pauv tam sim tau ua.

Qhov project deployment methodology siv hauv Slack
1. Unpacking daim ntawv thov code rau hauv phau ntawv "txias". 2. Hloov lub kaw lus mus rau "txias", uas dhau los ua "kub" (atomic operation)

Cov txiaj ntsig: hloov hauv qhov tseem ceeb rau kev ntseeg tau

Nyob rau hauv 2018, qhov project loj hlob mus rau xws li ib tug scale uas sai heev deployment pib ua phem rau stability ntawm cov khoom. Peb muaj cov txheej txheem xa tawm siab heev uas peb tau nqis peev ntau lub sijhawm thiab kev siv zog. Txhua yam peb yuav tsum tau ua yog rov tsim kho thiab txhim kho peb cov txheej txheem xa tawm. Peb tau loj hlob mus rau hauv lub tuam txhab loj loj, uas nws cov kev loj hlob tau siv thoob plaws ntiaj teb los npaj kev sib txuas lus tsis cuam tshuam thiab daws teeb meem tseem ceeb. Yog li ntawd, kev ntseeg tau los ua qhov tseem ceeb ntawm peb txoj kev mloog.

Peb yuav tsum ua kom cov txheej txheem ntawm kev xa tawm Slack tshiab tshaj tawm kom muaj kev nyab xeeb dua. Qhov kev xav tau no tau coj peb los txhim kho peb txoj kev xa mus. Raws li qhov tseeb, peb tau tham txog qhov kev txhim kho no saum toj no. Hauv qhov tob ntawm qhov system, peb txuas ntxiv siv cov thev naus laus zis nrawm thiab atomic xa mus. Txoj kev xa tawm ua tiav tau hloov pauv. Peb cov txheej txheem tshiab yog tsim los maj mam xa cov lej tshiab ntawm qib sib txawv, hauv ib puag ncig sib txawv. Peb tam sim no siv cov cuab yeej txhawb nqa siab dua thiab cov cuab yeej saib xyuas cov cuab yeej ua ntej. Qhov no muab peb lub peev xwm los ntes thiab kho qhov yuam kev ntev ua ntej lawv muaj lub sijhawm mus cuag tus neeg siv kawg.

Tab sis peb tsis mus nres ntawd. Peb tab tom txhim kho qhov system no tas li, siv cov cuab yeej pabcuam siab tshaj thiab ua haujlwm automation cov cuab yeej.

Nyob zoo nyeem! Cov txheej txheem ntawm kev xa tawm qhov project tshiab ua haujlwm li cas koj ua haujlwm?

Qhov project deployment methodology siv hauv Slack

Tau qhov twg los: www.hab.com

Ntxiv ib saib