Metodoloji deplwaman pwojè yo itilize nan Slack

Pote yon nouvo lage pwojè nan pwodiksyon mande pou yon balans atansyon ant vitès deplwaman ak fyab solisyon. Slack valè iterasyon rapid, sik fidbak kout, ak repons rapid a demann itilizatè yo. Anplis de sa, konpayi an gen dè santèn de pwogramasyon ki fè efò yo dwe osi pwodiktif ke posib.

Metodoloji deplwaman pwojè yo itilize nan Slack

Otè yo nan materyèl la, tradiksyon an ke nou ap pibliye jodi a, di ke yon konpayi ki fè efò konfòme yo ak valè sa yo ak an menm tan ap grandi dwe toujou ap amelyore sistèm li yo pou deplwaye pwojè yo. Konpayi an bezwen envesti nan transparans ak fyab nan pwosesis travay, fè sa asire ke pwosesis sa yo koresponn ak echèl la nan pwojè a. Isit la nou pral pale sou workflows ki te devlope nan Slack, ak sou kèk nan desizyon yo ki te mennen konpayi an sèvi ak sistèm deplwaman pwojè ki egziste jodi a.

Ki jan pwosesis deplwaman pwojè travay jodi a

Chak PR (pull request) nan Slack dwe sijè a revizyon kòd epi yo dwe pase tout tès yo avèk siksè. Se sèlman apre kondisyon sa yo satisfè ka pwogramè a rantre kòd li nan branch mèt pwojè a. Sepandan, kòd sa a deplwaye sèlman pandan lè biznis, lè Amerik di Nò. Kòm yon rezilta, akòz lefèt ke anplwaye nou yo nan espas travay yo, nou konplètman prepare pou rezoud nenpòt pwoblèm inatandi.

Chak jou nou fè anviwon 12 deplwaman planifye. Pandan chak deplwaman, pwogramè ki deziyen kòm dirijan deplwaman an responsab pou mete nouvo bati nan pwodiksyon an. Sa a se yon pwosesis milti-etap ki asire asanble a te pote nan pwodiksyon san pwoblèm. Mèsi a apwòch sa a, nou ka detekte erè anvan yo afekte tout itilizatè nou yo. Si gen twòp erè, deplwaman asanble a ka woule tounen. Si yo dekouvri yon pwoblèm espesifik apre yo fin lage, yo ka fasilman lage yon ranje pou li.

Metodoloji deplwaman pwojè yo itilize nan Slack
Entèfas sistèm Checkpoint, ki itilize nan Slack pou deplwaye pwojè yo

Pwosesis deplwaye yon nouvo lage nan pwodiksyon ka konsidere kòm ki gen kat etap.

▍1. Kreye yon branch lage

Chak lage kòmanse ak yon nouvo branch lage, yon pwen nan istwa Git nou an. Sa a pèmèt ou bay tags nan lage a epi li bay yon plas kote ou ka fè fikse vivan pou pinèz yo te jwenn nan pwosesis la nan prepare liberasyon an pou lage nan pwodiksyon an.

▍2. Deplwaman nan yon anviwònman staging

Pwochen etap la se deplwaye asanble a sou sèvè sèvè epi kouri yon tès otomatik pou pèfòmans jeneral pwojè a (tès lafimen). Anviwònman an sèn nan se yon anviwònman pwodiksyon ki pa resevwa trafik ekstèn. Nan anviwònman sa a, nou fè tès manyèl adisyonèl. Sa a ban nou plis konfyans ke pwojè modifye a ap travay kòrèkteman. Tès otomatik pou kont yo pa ase pou bay nivo konfyans sa a.

▍3. Deplwaman nan anviwònman dogfood ak Canary

Deplwaman nan pwodiksyon kòmanse ak yon anviwònman dogfood, reprezante pa yon seri lame ki sèvi espas travay Slack entèn nou yo. Piske nou se itilizatè Slack trè aktif, pran apwòch sa a te ede nou trape anpil pinèz byen bonè nan deplwaman an. Apre nou te asire ke fonksyonalite debaz nan sistèm nan pa kase, se asanble a deplwaye nan anviwònman an Canary. Li reprezante sistèm ki konte pou apeprè 2% nan trafik pwodiksyon an.

▍4. Lage gradyèl nan pwodiksyon an

Si endikatè siveyans yo pou nouvo lage a vin estab, epi si apre deplwaye pwojè a nan anviwònman an Canary nou pa te resevwa okenn plent, nou kontinye piti piti transfere serveurs pwodiksyon yo nan nouvo lage a. Pwosesis deplwaman an divize an etap sa yo: 10%, 25%, 50%, 75% ak 100%. Kòm yon rezilta, nou ka tou dousman transfere trafik pwodiksyon nan nouvo lage sistèm lan. An menm tan, nou gen tan envestige sitiyasyon an si nenpòt anomali yo detekte.

▍E si yon bagay ale mal pandan deplwaman?

Fè modifikasyon nan kòd se toujou yon risk. Men, nou fè fas ak sa a gras a prezans "lidè deplwaman" ki byen antrene ki jere pwosesis pou pote yon nouvo lage nan pwodiksyon, kontwole endikatè siveyans ak kowòdone travay pwogramè yo divilge kòd.

Nan ka yon bagay reyèlman ale mal, nou eseye detekte pwoblèm nan pi bonè posib. Nou mennen ankèt sou pwoblèm nan, jwenn PR a ki lakòz erè yo, woule li tounen, analize li byen, epi kreye yon nouvo bati. Se vre, pafwa pwoblèm nan ale inapèsi jiskaske pwojè a antre nan pwodiksyon an. Nan yon sitiyasyon konsa, bagay ki pi enpòtan an se retabli sèvis la. Se poutèt sa, anvan nou kòmanse mennen ankèt sou pwoblèm nan, nou imedyatman retounen nan konstriksyon anvan an k ap travay.

Blòk Konstriksyon yon Sistèm Deplwaman

Ann gade nan teknoloji ki kache sistèm deplwaman pwojè nou an.

▍Deplwaman rapid

Workflow ki dekri pi wo a ka sanble, nan retrospective, yon ti jan evidan. Men, sistèm deplwaman nou an pa t vin konsa touswit.

Lè konpayi an te pi piti anpil, tout aplikasyon nou an te kapab kouri sou 10 ka Amazon EC2. Deplwaye pwojè a nan sitiyasyon sa a te vle di lè l sèvi avèk rsync rapidman senkronize tout serveurs. Précédemment, nouvo kòd te sèlman yon etap lwen pwodiksyon, ki reprezante pa yon anviwònman staging. Asanble yo te kreye ak teste nan yon anviwònman konsa, ak Lè sa a, te ale tou dwat nan pwodiksyon an. Li te trè fasil pou konprann yon sistèm konsa; li te pèmèt nenpòt pwogramè deplwaye kòd li te ekri a nenpòt ki lè.

Men, kòm kantite kliyan nou yo te grandi, se konsa tou te ogmante echèl enfrastrikti ki nesesè pou sipòte pwojè a. Byento, akòz kwasans konstan nan sistèm nan, modèl deplwaman nou an, ki baze sou pouse nouvo kòd nan sèvè yo, pa t 'fè travay li ankò. Savwa, ajoute chak nouvo sèvè vle di ogmante tan ki nesesè pou konplete deplwaman an. Menm estrateji ki baze sou itilizasyon paralèl rsync gen sèten limit.

Nou te fini rezoud pwoblèm sa a pa deplase nan yon sistèm deplwaman konplètman paralèl, ki te fèt yon fason diferan de ansyen sistèm nan. Savwa, kounye a nou pa t 'voye kòd nan serveurs yo lè l sèvi avèk yon script senkronizasyon. Koulye a, chak sèvè poukont yo telechaje nouvo asanble a, konnen ke li te bezwen fè sa pa kontwole chanjman kle Konsil la. Serveurs yo chaje kòd la an paralèl. Sa a te pèmèt nou kenbe yon gwo vitès nan deplwaman menm nan yon anviwònman nan kwasans sistèm konstan.

Metodoloji deplwaman pwojè yo itilize nan Slack
1. Serveurs pwodiksyon kontwole kle Konsil la. 2. Chanjman kle yo, sa a di serveurs yo ke yo bezwen kòmanse telechaje nouvo kòd. 3. Sèvè telechaje dosye tarball ak kòd aplikasyon an

▍Deplwaman atomik

Yon lòt solisyon ki te ede nou rive nan yon sistèm deplwaman milti-niveau se te deplwaman atomik.

Anvan ou sèvi ak deplwaman atomik, chak deplwaman ka lakòz yon gwo kantite mesaj erè. Reyalite a se ke pwosesis la nan kopye nouvo dosye sou serveurs pwodiksyon pa t 'atomik. Sa a te lakòz yon ti fenèt tan kote kòd ki te rele nouvo fonksyon te disponib anvan fonksyon yo te disponib. Lè yo te rele kòd sa a, li te lakòz erè entèn yo te retounen. Sa a te manifeste poukont li nan demann API ki echwe ak paj entènèt kase.

Ekip la ki te travay sou pwoblèm sa a rezoud li pa entwodwi konsèp nan "cho" ak "frèt" anyè. Kòd ki nan anyè cho a responsab pou trete trafik pwodiksyon an. Ak nan anyè "frèt", kòd la, pandan y ap sistèm nan ap kouri, se sèlman ke yo te prepare pou itilize. Pandan deplwaman, nouvo kòd kopye nan yon anyè frèt ki pa itilize. Lè sa a, lè pa gen okenn pwosesis aktif sou sèvè a, yon chanjman anyè enstantane fèt.

Metodoloji deplwaman pwojè yo itilize nan Slack
1. Depale kòd aplikasyon an nan yon anyè "frèt". 2. Chanje sistèm nan nan yon anyè "frèt", ki vin "cho" (operasyon atomik)

Rezilta: chanjman nan anfaz sou fyab

Nan 2018, pwojè a te grandi nan yon echèl konsa ke deplwaman trè rapid te kòmanse mal estabilite nan pwodwi a. Nou te gen yon sistèm deplwaman trè avanse nan ki nou te envesti anpil tan ak efò. Tout sa nou te bezwen fè se rebati ak amelyore pwosesis deplwaman nou yo. Nou te grandi nan yon konpayi jistis gwo, ki gen devlopman yo te itilize nan tout mond lan pou òganize kominikasyon san enteripsyon ak rezoud pwoblèm enpòtan. Se poutèt sa, fyab te vin konsantre nan atansyon nou an.

Nou te bezwen rann pwosesis deplwaye nouvo lage Slack pi an sekirite. Bezwen sa a te mennen nou amelyore sistèm deplwaman nou an. Kòm yon kesyon de reyalite, nou te diskite sou sistèm amelyore sa a pi wo a. Nan pwofondè sistèm nan, nou kontinye sèvi ak teknoloji deplwaman rapid ak atomik. Fason deplwaman fèt la chanje. Nouvo sistèm nou an fèt pou deplwaye nouvo kòd piti piti nan diferan nivo, nan diferan anviwònman. Kounye a nou itilize zouti sipò ki pi avanse ak zouti siveyans sistèm pase anvan. Sa a ban nou kapasite nan trape ak ranje erè lontan anvan yo gen yon chans yo rive jwenn itilizatè a fen.

Men, nou pa pral sispann la. Nou toujou ap amelyore sistèm sa a, lè l sèvi avèk zouti oksilyè ki pi avanse ak zouti automatisation travay.

Chè lektè! Ki jan pwosesis deplwaye nouvo pwojè a travay kote w ap travay?

Metodoloji deplwaman pwojè yo itilize nan Slack

Sous: www.habr.com

Add nouvo kòmantè