Project Deployment Methodik benotzt am Slack

Eng nei Projet Verëffentlechung an d'Produktioun ze bréngen erfuerdert e virsiichtegt Gläichgewiicht tëscht Détachementgeschwindegkeet a Léisungszouverlässegkeet. Slack Wäerter séier Iteratiounen, kuerz Feedback-Zyklen, a prompt Äntwert op Benotzerufroen. Zousätzlech huet d'Firma Honnerte vu Programméierer, déi ustriewen esou produktiv wéi méiglech ze sinn.

Project Deployment Methodik benotzt am Slack

D'Auteuren vum Material, d'Iwwersetzung vun deem mir haut verëffentlechen, soen datt eng Firma déi sech un esou Wäerter beméit a gläichzäiteg wächst, muss säi Projet-Deployment System permanent verbesseren. D'Firma muss an Transparenz an Zouverlässegkeet vun Aarbechtsprozesser investéieren, dëst ze maachen fir sécherzestellen datt dës Prozesser der Skala vum Projet entspriechen. Hei wäerte mir iwwer d'Workflows schwätzen, déi am Slack entwéckelt goufen, an iwwer e puer vun den Entscheedungen, déi d'Firma gefouert hunn de Projet Deployment System ze benotzen deen haut existéiert.

Wéi Projet Deployment Prozesser haut funktionnéieren

All PR (Pull Ufro) am Slack muss dem Code iwwerpréiwen ënnerleien a muss all Tester erfollegräich passéieren. Eréischt nodeems dës Konditioune erfëllt sinn, kann de Programméierer säi Code an d'Meeschterbranche vum Projet fusionéieren. Wéi och ëmmer, dëse Code gëtt nëmme während Geschäftsstonnen ofgesat, Nordamerikanesch Zäit. Als Resultat, wéinst der Tatsaach, datt eis Mataarbechter op hirer Aarbechtsplaz sinn, si mir voll bereet all onerwaart Problemer ze léisen.

All Dag maache mir eng 12 geplangten Asätz. Wärend all Deployment ass de Programméierer, deen als Deployment Lead bezeechent gëtt, verantwortlech fir den neie Bau an d'Produktioun ze kréien. Dëst ass e Multi-Schrëtt Prozess dee garantéiert datt d'Versammlung glat a Produktioun bruecht gëtt. Dank dëser Approche kënne mir Feeler entdecken ier se all eis Benotzer beaflossen. Wann et ze vill Feeler ass, kann d'Versammlung vun der Versammlung zréckgezunn ginn. Wann e spezifescht Thema no der Verëffentlechung entdeckt gëtt, kann e Fix einfach dofir verëffentlecht ginn.

Project Deployment Methodik benotzt am Slack
Interface vum Checkpoint System, deen am Slack benotzt gëtt fir Projeten z'installéieren

De Prozess vun enger neier Verëffentlechung fir d'Produktioun z'installéieren kann als aus véier Schrëtt geduecht ginn.

▍1. Erstellt eng Verëffentlechungszweig

All Verëffentlechung fänkt mat enger neier Verëffentlechungszweig un, e Punkt an eiser Git Geschicht. Dëst erlaabt Iech Tags un d'Verëffentlechung ze ginn a bitt eng Plaz wou Dir Live Fixe maache kënnt fir Bugs, déi am Prozess vun der Virbereedung vun der Verëffentlechung op d'Produktioun fonnt goufen.

▍2. Deployment an engem Staging Ëmfeld

De nächste Schrëtt ass d'Versammlung op Staging Serveren z'installéieren an en automateschen Test fir d'Gesamtleeschtung vum Projet auszeféieren (Rauchtest). D'Staging Ëmfeld ass e Produktiounsëmfeld dat keen externen Traffic kritt. An dësem Ëmfeld maache mir zousätzlech manuell Tester. Dëst gëtt eis zousätzlech Vertrauen datt de modifizéierte Projet richteg funktionnéiert. Automatiséiert Tester eleng sinn net genuch fir dësen Niveau vu Vertrauen ze bidden.

▍3. Deployment an Dogfood a Kanaresch Ëmfeld

Deployment fir d'Produktioun fänkt mat engem Dogfood Ëmfeld un, vertruede vun enger Rei vu Hosten déi eis intern Slack Aarbechtsberäicher déngen. Well mir ganz aktiv Slack Benotzer sinn, huet dës Approche eis gehollef vill Bugs fréi an der Deployment ze fänken. Nodeems mir séchergestallt hunn datt d'Basisfunktionalitéit vum System net gebrach ass, gëtt d'Versammlung am Kanareschen Ëmfeld agesat. Et representéiert Systemer déi ongeféier 2% vum Produktiounsverkéier ausmaachen.

▍4. Graduell Verëffentlechung fir d'Produktioun

Wann d'Iwwerwaachungsindikatoren fir d'nei Verëffentlechung stabil sinn, a wann nom Ofbau vum Projet am Kanareschen Ëmfeld mir keng Reklamatioune kritt hunn, gi mir weiderhin d'Produktiounsservere lues op déi nei Verëffentlechung transferéieren. Den Détachementprozess ass an de folgende Stadien opgedeelt: 10%, 25%, 50%, 75% an 100%. Als Resultat kënne mir de Produktiounsverkéier lues op déi nei Verëffentlechung vum System transferéieren. Zur selwechter Zäit hu mir Zäit fir d'Situatioun z'ënnersichen wann Anomalien festgestallt ginn.

▍Wat wann eppes schief geet während der Deployment?

Modifikatioune vum Code maachen ass ëmmer e Risiko. Awer mir këmmeren dëst duerch d'Präsenz vu gutt ausgebilten "Deployment Leaders", déi de Prozess verwalten fir eng nei Verëffentlechung an d'Produktioun ze bréngen, Iwwerwaachungsindikatoren ze iwwerwaachen an d'Aarbecht vun de Programméierer ze koordinéieren déi Code verëffentlecht.

Am Fall wou eppes wierklech falsch leeft, probéieren mir de Problem sou fréi wéi méiglech z'entdecken. Mir ënnersichen de Problem, fanne de PR deen d'Fehler verursaacht, rullt et zréck, analyséiert se grëndlech, a kreéiert en Neibau. True, heiansdo geet de Problem onnotéiert bis de Projet an d'Produktioun geet. An esou enger Situatioun ass déi wichtegst Saach de Service ze restauréieren. Dofir, ier mir ufänken de Problem z'ënnersichen, rulle mir direkt zréck op déi viregt Aarbechtskonstruktioun.

Bausteng vun engem Deployment System

Loosst eis d'Technologien kucken, déi eise Projet Deployment System ënnersträichen.

▍ Schnell Deployementer

Den uewe beschriwwenen Workflow kann am Réckbléck e bësse evident schéngen. Awer eisen Asazsystem ass net direkt sou ginn.

Wann d'Firma vill méi kleng war, konnt eis ganz Applikatioun op 10 Amazon EC2 Instanzen lafen. De Projet an dëser Situatioun z'installéieren huet gemengt rsync ze benotzen fir all Server séier ze synchroniséieren. Virdrun war neie Code nëmmen ee Schrëtt ewech vun der Produktioun, representéiert vun engem Staging Ëmfeld. Assembléeë goufen an esou engem Ëmfeld erstallt a getest, an dann direkt an d'Produktioun gaangen. Et war ganz einfach esou e System ze verstoen; et huet all Programméierer erlaabt de Code z'installéieren deen hien zu all Moment geschriwwen huet.

Awer wéi d'Zuel vun eise Clienten gewuess ass, ass och d'Skala vun der Infrastruktur erfuerderlech fir de Projet z'ënnerstëtzen. Geschwënn, wéinst dem konstante Wuesstum vum System, huet eisen Deploymentmodell, baséiert op neie Code op d'Serveren gedréckt, seng Aarbecht net méi gemaach. Nämlech, all neie Server bäizefügen bedeit d'Erhéijung vun der Zäit néideg fir d'Deployment ofzeschléissen. Och Strategien baséiert op parallel Notzung vun rsync hu bestëmmte Aschränkungen.

Mir hunn dëse Problem op en Enn geléist andeems mir op e komplett parallele Deployment System geplënnert sinn, deen anescht wéi den ale System entworf gouf. Nämlech hu mir elo kee Code un d'Servere mat engem Synchroniséierungsskript geschéckt. Elo huet all Server onofhängeg déi nei Assemblée erofgelueden, wëssend datt et néideg ass fir dat ze maachen andeems Dir d'Konsul Schlësselännerung iwwerwaacht. D'Serveren hunn de Code parallel gelueden. Dëst erlaabt eis eng héich Vitesse vun Détachement och an engem Ëmfeld vun konstante System Wuesstem ze erhalen.

Project Deployment Methodik benotzt am Slack
1. Produktiounsserver iwwerwaachen de Consul-Schlëssel. 2. D'Schlëssel ännert, dëst seet d'Serveren datt se brauchen fir neie Code erofzelueden. 3. Serveren download tarball Fichieren mat Applikatioun Code

▍Atomarberäicher

Eng aner Léisung déi eis gehollef huet e Multi-Tier Deployment System z'erreechen war atomarer Deployment.

Ier Dir atomarer Détachement benotzt, kéint all Détachement zu enger grousser Zuel vu Fehlermeldungen resultéieren. De Fakt ass datt de Prozess fir nei Dateien op d'Produktiounsserver ze kopéieren net atomesch war. Dëst huet zu enger kuerzer Zäitfënster gefouert wou de Code deen nei Funktiounen genannt huet, verfügbar war ier d'Funktioune selwer verfügbar waren. Wann esou Code genannt gouf, huet et dozou gefouert datt intern Feeler zréckginn. Dëst manifestéiert sech a gescheitert API Ufroen a futtis Websäiten.

D'Team, déi un dësem Problem geschafft huet, huet et geléist andeems d'Konzept vun "waarm" a "kal" Verzeichnungen agefouert gouf. De Code am waarme Verzeechnes ass verantwortlech fir d'Veraarbechtung vum Produktiounsverkéier. An an "kale" Verzeichnisser gëtt de Code, während de System leeft, nëmme virbereet fir ze benotzen. Wärend der Installatioun gëtt neie Code an en onbenotzten kale Verzeichnis kopéiert. Dann, wann et keng aktiv Prozesser um Server sinn, gëtt en direkten Verzeechnesschalter duerchgefouert.

Project Deployment Methodik benotzt am Slack
1. Den Uwendungscode auszepaken an e "kalt" Verzeichnis. 2. De System op e "kale" Verzeechnes wiesselen, deen "waarm" gëtt (atomar Operatioun)

Resultater: Verréckelung vum Schwéierpunkt op Zouverlässegkeet

Am joer 2018 ass de projet op sou enger skala gewuess, datt ganz séier asaz fir d ' schueden vun der stabilitéit vum produkt. Mir haten e ganz fortgeschratten Deployment System an dee mir vill Zäit an Effort investéiert hunn. Alles wat mir misse maache war eis Deploymentprozesser nei opzebauen an ze verbesseren. Mir sinn zu enger zimlech grousser Firma gewuess, där hir Entwécklungen op der ganzer Welt benotzt gi fir onënnerbrach Kommunikatiounen ze organiséieren a wichteg Problemer ze léisen. Dofir ass d'Zouverlässegkeet de Fokus vun eiser Opmierksamkeet.

Mir hu misse de Prozess fir nei Slack Verëffentlechunge méi sécher ze maachen. Dëse Besoin huet eis gefouert fir eisen Deployment System ze verbesseren. Tatsächlech hu mir dëse verbesserte System hei uewen diskutéiert. An den Tiefen vum System benotze mir weider séier an atomar Deployment Technologien. De Wee wéi d'Deployment gemaach gëtt huet geännert. Eisen neie System ass entwéckelt fir neie Code graduell op verschiddenen Niveauen, a verschiddenen Ëmfeld z'installéieren. Mir benotzen elo méi fortgeschratt Support-Tools a System Iwwerwachungs-Tools wéi virdrun. Dëst gëtt eis d'Fäegkeet Feeler ze fangen an ze fixéieren laang ier se eng Chance hunn den Endbenotzer z'erreechen.

Mä mir wäerten net do ophalen. Mir verbesseren dëse System permanent, mat méi fortgeschratt Hëllefsinstrumenter an Aarbechtsautomatiséierungsinstrumenter.

Léif Lieser! Wéi funktionnéiert de Prozess fir nei Projetsreleases z'installéieren wou Dir schafft?

Project Deployment Methodik benotzt am Slack

Source: will.com

Setzt e Commentaire