Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack

Ang pagdala sa usa ka bag-ong pagpagawas sa proyekto sa produksiyon nanginahanglan usa ka mabinantayon nga balanse tali sa katulin sa pag-deploy ug kasaligan sa solusyon. Gipabilhan sa Slack ang mga paspas nga pag-uli, mubu nga mga siklo sa feedback, ug dali nga pagtubag sa mga hangyo sa tiggamit. Dugang pa, ang kompanya adunay gatusan ka mga programmer nga naningkamot nga mahimong produktibo kutob sa mahimo.

Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack

Ang mga tagsulat sa materyal, ang paghubad nga among gipatik karon, nag-ingon nga ang usa ka kompanya nga naningkamot sa pagsunod sa ingon nga mga kantidad ug sa samang higayon motubo kinahanglan nga kanunay nga mapaayo ang sistema sa pag-deploy sa proyekto. Ang kompanya kinahanglan nga mamuhunan sa transparency ug kasaligan sa mga proseso sa trabaho, nga buhaton kini aron masiguro nga kini nga mga proseso katumbas sa sukod sa proyekto. Dinhi atong hisgutan ang mahitungod sa mga workflow nga naugmad sa Slack, ug mahitungod sa pipila ka mga desisyon nga nanguna sa kompanya sa paggamit sa sistema sa pag-deploy sa proyekto nga anaa karon.

Giunsa ang mga proseso sa pag-deploy sa proyekto nagtrabaho karon

Ang matag PR (pull request) sa Slack kinahanglang ipailalom sa code review ug kinahanglang molampos sa tanang pagsulay. Human lamang matuman kini nga mga kondisyon mahimo nga i-merge sa programmer ang iyang code ngadto sa master branch sa proyekto. Bisan pa, kini nga code gipakatap lamang sa mga oras sa negosyo, oras sa North America. Ingon usa ka sangputanan, tungod sa kamatuoran nga ang among mga empleyado naa sa ilang mga lugar nga trabahoan, andam kami nga masulbad ang bisan unsang wala damha nga mga problema.

Kada adlaw nagpahigayon kami mga 12 nga giplano nga pagdeploy. Atol sa matag deployment, ang programmer nga gitudlo isip lead deployment maoy responsable sa paghimo sa bag-ong build ngadto sa produksyon. Kini usa ka multi-step nga proseso nga nagsiguro nga ang asembliya gidala sa produksiyon nga hapsay. Salamat sa kini nga pamaagi, makit-an namon ang mga sayup sa wala pa kini makaapekto sa tanan namon nga tiggamit. Kung adunay daghang mga sayup, ang pag-deploy sa asembliya mahimong ibalik. Kung ang usa ka piho nga isyu madiskobrehan pagkahuman sa pagpagawas, ang usa ka ayo dali nga mapagawas alang niini.

Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack
Interface sa sistema sa Checkpoint, nga gigamit sa Slack aron i-deploy ang mga proyekto

Ang proseso sa pag-deploy og bag-ong pagpagawas sa produksiyon mahimong isipon nga naglangkob sa upat ka mga lakang.

▍1. Paghimo usa ka sanga sa pagpagawas

Ang matag pagpagawas nagsugod sa usa ka bag-ong sanga sa pagpagawas, usa ka punto sa among kasaysayan sa Git. Gitugotan ka niini nga mag-assign sa mga tag sa pagpagawas ug maghatag usa ka lugar kung diin mahimo ka makahimo mga live nga pag-ayo alang sa mga bug nga nakit-an sa proseso sa pag-andam sa pagpagawas alang sa pagpagawas sa produksiyon.

▍2. Pag-deploy sa usa ka palibot nga dula

Ang sunod nga lakang mao ang pag-deploy sa asembliya sa mga staging server ug pagpadagan og awtomatik nga pagsulay alang sa kinatibuk-ang pasundayag sa proyekto (smoke test). Ang palibot sa dula usa ka palibot sa produksiyon nga wala makadawat sa gawas nga trapiko. Niini nga palibot, naghimo kami og dugang nga manual nga pagsulay. Naghatag kini kanamo dugang nga pagsalig nga ang giusab nga proyekto molihok sa husto. Ang mga automated nga pagsulay lamang dili igo aron mahatagan kini nga lebel sa pagsalig.

▍3. Pag-deploy sa dogfood ug canary environment

Ang deployment sa produksiyon magsugod sa dogfood environment, nga girepresentahan sa set sa mga host nga nagsilbi sa among internal nga Slack workspaces. Tungod kay kami aktibo kaayo nga tiggamit sa Slack, ang paggamit niini nga pamaagi nakatabang kanamo nga makakuha og daghang mga bug sa sayo nga pag-deploy. Human nato masiguro nga ang batakang pagpaandar sa sistema dili mabuak, ang asembliya gipakatap sa kanaryo nga palibot. Kini nagrepresentar sa mga sistema nga nagkantidad sa gibana-bana nga 2% sa trapiko sa produksiyon.

▍4. Hinay-hinay nga pagpagawas sa produksiyon

Kung ang mga indikasyon sa pag-monitor alang sa bag-ong pagpagawas nahimo nga lig-on, ug kung pagkahuman sa pag-deploy sa proyekto sa palibot sa canary wala kami nakadawat bisan unsang mga reklamo, padayon namon nga hinayhinay nga gibalhin ang mga server sa produksiyon sa bag-ong pagpagawas. Ang proseso sa deployment gibahin sa mosunod nga mga yugto: 10%, 25%, 50%, 75% ug 100%. Ingon usa ka sangputanan, hinayhinay nga mabalhin ang trapiko sa produksiyon sa bag-ong pagpagawas sa sistema. Sa samang higayon, aduna kitay panahon sa pag-imbestigar sa sitwasyon kon dunay makitang anomaliya.

▍Unsa kaha kung adunay mahitabo nga sayup sa panahon sa pag-deploy?

Ang paghimo sa mga pagbag-o sa code kanunay nga peligro. Apan gisagubang namo kini salamat sa presensya sa maayo nga pagkabansay nga "mga lider sa pag-deploy" nga nagdumala sa proseso sa pagdala sa usa ka bag-ong pagpagawas ngadto sa produksyon, pag-monitor sa mga indikasyon sa pag-monitor ug pag-coordinate sa trabaho sa mga programmer nga nagpagawas sa code.

Kung adunay mahitabo nga sayup, among gisulayan nga mahibal-an ang problema sa labing sayo nga panahon. Gisusi namo ang problema, pangitaa ang PR nga maoy hinungdan sa mga kasaypanan, i-roll kini balik, analisahon kini pag-ayo, ug paghimo og bag-ong pagtukod. Tinuod, usahay ang problema dili mamatikdan hangtod ang proyekto moadto sa produksiyon. Sa ingon nga kahimtang, ang labing hinungdanon nga butang mao ang pagpahiuli sa serbisyo. Busa, sa dili pa kita magsugod sa pag-imbestigar sa problema, kita mobalik dayon ngadto sa miaging nagtrabaho nga pagtukod.

Building Blocks sa usa ka Deployment System

Atong tan-awon ang mga teknolohiya nga nagpailalom sa atong sistema sa pag-deploy sa proyekto.

▍Dali nga pagdeploy

Ang dagan sa trabaho nga gihulagway sa ibabaw mahimo’g ingon, kung tan-awon, medyo klaro. Apan ang among deployment system wala dayon nahimong ingon niini.

Kung ang kompanya gamay ra, ang among tibuuk nga aplikasyon mahimong magamit sa 10 nga mga higayon sa Amazon EC2. Ang pag-deploy sa proyekto sa kini nga sitwasyon nagpasabut sa paggamit sa rsync aron dali nga ma-synchronize ang tanan nga mga server. Kaniadto, ang bag-ong code usa ra ka lakang gikan sa produksiyon, nga girepresentahan sa usa ka palibot sa dula. Ang mga asembliya gihimo ug gisulayan sa ingon nga palibot, ug dayon diretso sa produksiyon. Sayon kaayo nga masabtan ang ingon nga sistema; gitugotan niini ang bisan kinsa nga programmer nga ipakaylap ang code nga iyang gisulat bisan unsang orasa.

Apan samtang ang gidaghanon sa among mga kliyente mitubo, mao usab ang gidak-on sa imprastraktura nga gikinahanglan sa pagsuporta sa proyekto. Sa wala madugay, tungod sa kanunay nga pag-uswag sa sistema, ang among modelo sa pag-deploy, base sa pagduso sa bag-ong code sa mga server, wala na nagbuhat sa trabaho niini. Sa ato pa, ang pagdugang sa matag bag-ong server nagpasabut sa pagdugang sa oras nga gikinahanglan aron makompleto ang pag-deploy. Bisan ang mga estratehiya nga gibase sa parallel nga paggamit sa rsync adunay pipila nga mga limitasyon.

Gitapos namon ang pagsulbad niini nga problema pinaagi sa pagbalhin ngadto sa usa ka hingpit nga parallel nga sistema sa pag-deploy, nga gidisenyo nga lahi gikan sa daan nga sistema. Nga mao, karon wala kami magpadala code sa mga server gamit ang usa ka synchronization script. Karon ang matag server independente nga nag-download sa bag-ong asembliya, nahibal-an nga kinahanglan kini buhaton pinaagi sa pag-monitor sa pagbag-o sa yawe sa Consul. Ang mga server nagkarga sa code nga managsama. Kini nagtugot kanamo sa pagpadayon sa usa ka taas nga tulin sa pag-deploy bisan sa usa ka palibot nga kanunay nga pagtubo sa sistema.

Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack
1. Ang mga server sa produksiyon nagmonitor sa yawe sa Konsul. 2. Ang yawe nga mga pagbag-o, kini nagsulti sa mga server nga sila kinahanglan nga magsugod sa pag-download sa bag-ong code. 3. Ang mga server nag-download sa mga file sa tarball nga adunay code sa aplikasyon

▍Mga pag-deploy sa atomo

Ang laing solusyon nga nakatabang kanamo sa pagkab-ot sa usa ka multi-tier deployment system mao ang atomic deployment.

Sa wala pa gamiton ang atomic deployment, ang matag deployment mahimong moresulta sa daghang mga mensahe sa sayup. Ang tinuod mao nga ang proseso sa pagkopya sa mga bag-ong file sa mga server sa produksiyon dili atomic. Kini miresulta sa usa ka hamubo nga bintana sa panahon diin ang code nga gitawag og bag-ong mga function anaa na sa wala pa ang mga function sa ilang mga kaugalingon anaa. Kung gitawag ang ingon nga code, miresulta kini sa mga internal nga sayup nga gibalik. Kini nagpakita sa kaugalingon sa napakyas nga mga hangyo sa API ug nabuak nga mga panid sa web.

Ang grupo nga nagtrabaho niini nga problema nakasulbad niini pinaagi sa pagpaila sa konsepto sa "init" ug "bugnaw" nga mga direktoryo. Ang code sa mainit nga direktoryo mao ang responsable sa pagproseso sa trapiko sa produksiyon. Ug sa "bugnaw" nga mga direktoryo, ang code, samtang ang sistema nagdagan, giandam lamang alang sa paggamit. Atol sa pag-deploy, ang bag-ong code gikopya ngadto sa wala magamit nga bugnaw nga direktoryo. Pagkahuman, kung wala’y aktibo nga mga proseso sa server, usa ka instant switch sa direktoryo ang gihimo.

Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack
1. Pag-unpack sa code sa aplikasyon ngadto sa "bugnaw" nga direktoryo. 2. Pagbalhin sa sistema ngadto sa "bugnaw" nga direktoryo, nga mahimong "init" (atomic nga operasyon)

Resulta: pagbalhin sa paghatag gibug-aton sa kasaligan

Sa 2018, ang proyekto mitubo sa ingon nga sukod nga ang kusog kaayo nga pag-deploy nagsugod nga makadaot sa kalig-on sa produkto. Kami adunay usa ka abante kaayo nga sistema sa pag-deploy diin among gipuhunan ang daghang oras ug paningkamot. Ang kinahanglan namong buhaton mao ang pagtukod pag-usab ug pagpauswag sa among mga proseso sa pag-deploy. Mitubo kami ngadto sa usa ka medyo dako nga kompanya, kansang mga kalamboan gigamit sa tibuok kalibutan sa pag-organisar sa walay hunong nga komunikasyon ug sa pagsulbad sa importante nga mga problema. Busa, ang pagkakasaligan nahimong sentro sa among pagtagad.

Kinahanglan namon nga himuon nga labi ka luwas ang proseso sa pag-deploy sa mga bag-ong pagpagawas sa Slack. Kini nga panginahanglan nagdala kanamo aron mapaayo ang among sistema sa pag-deploy. Sa tinuud, among gihisgutan kini nga gipaayo nga sistema sa ibabaw. Sa kahiladman sa sistema, nagpadayon kami sa paggamit sa paspas ug atomic deployment nga mga teknolohiya. Nausab ang paagi sa pagdeploy. Ang among bag-ong sistema gidesinyo aron anam-anam nga mag-deploy og bag-ong code sa lainlaing lebel, sa lainlaing mga palibot. Gigamit na namo karon ang mas abante nga mga himan sa pagsuporta ug mga himan sa pagmonitor sa sistema kaysa kaniadto. Naghatag kini kanamo og katakus sa pagdakop ug pag-ayo sa mga sayup sa wala pa sila adunay higayon nga maabot ang katapusan nga tiggamit.

Apan dili kita mohunong didto. Kanunay namon nga gipauswag kini nga sistema, gamit ang labi ka abante nga mga gamit sa auxiliary ug mga himan sa pag-automate sa trabaho.

Minahal nga magbabasa! Giunsa ang proseso sa pag-deploy sa mga bag-ong pagpagawas sa proyekto kung diin ka nagtrabaho?

Ang pamaagi sa pag-deploy sa proyekto nga gigamit sa Slack

Source: www.habr.com

Idugang sa usa ka comment