Giunsa pag-deploy sa Dark ang code sa 50ms

Giunsa pag-deploy sa Dark ang code sa 50ms

Ang mas paspas nga proseso sa pag-uswag, mas paspas ang pagtubo sa kompanya sa teknolohiya.

Ikasubo, ang mga modernong aplikasyon nagtrabaho batok kanamo - ang among mga sistema kinahanglan nga ma-update sa tinuud nga oras ug dili makabalda ni bisan kinsa ug dili mosangpot sa downtime ug mga pagkabalda. Ang pag-deploy sa ingon nga mga sistema nahimong mahagiton ug nanginahanglan komplikado nga padayon nga mga linya sa paghatud bisan sa gagmay nga mga grupo.

Kini nga mga linya sa tubo lagmit nga makitid nga aplikasyon, hinay ug dili kasaligan. Ang mga nag-develop kinahanglan una nga maghimo niini nga mano-mano ug dayon pagdumala niini, ug ang mga kompanya kanunay nga nagsuhol sa tibuuk nga mga koponan sa DevOps aron mahimo kini.

Ang katulin sa pag-uswag nagdepende sa katulin sa kini nga mga linya sa tubo. Alang sa labing maayo nga mga team, nagkinahanglan kini og 5-10 ka minuto aron ma-deploy, apan kasagaran mas dugay pa, nga adunay usa ka deployment nga molungtad og pipila ka oras.

Sa Dark, nagkinahanglan kini og 50ms. Singkwenta. millisecond. ngitngit- kini usa ka kompleto nga solusyon sa programming language, editor ug imprastraktura, nga espesipikong gitukod alang sa padayon nga paghatud, ug ang tanan nga aspeto sa Dark, lakip na ang pinulongan mismo, gitukod nga adunay katuyoan nga makuha dayon ang pagpadala.

Ngano nga hinay kaayo ang padayon nga pagpadala sa mga pipeline?

Ingnon ta nga naa tay Python web application ug nakamugna na mi ug nindot ug moderno nga padayon nga delivery pipeline. Alang sa usa ka developer nga nagtrabaho sa kini nga proyekto matag adlaw, ang pag-deploy sa usa ka gamay nga pagbag-o mahimong ingon niini:

Pag-usab

  • Paghimo og bag-ong branch sa git
  • Paghimo og mga Kausaban Luyo sa Function Switch
  • Pagsulay sa yunit aron masulayan ang mga pagbag-o nga adunay ug wala’y switch sa function

Paghangyo sa pool

  • Ipasalig ang mga pagbag-o
  • Pagduso sa mga pagbag-o sa usa ka hilit nga github repository
  • Paghangyo sa pool
  • Ang pagtukod sa CI awtomatiko nga nagdagan sa background
  • Pagrepaso sa code
  • Pipila pa nga mga pagsusi kung gikinahanglan
  • Paghiusa sa mga pagbag-o sa git master.

Ang CI nagdagan sa agalon

  • Pag-instalar sa mga dependency sa frontend nga adunay npm
  • Pagtukod ug Pag-optimize sa HTML+CSS+JS Resources
  • Nagdagan nga unit ug functional nga mga pagsulay sa frontend
  • Pag-instalar sa mga dependency sa Python gikan sa PyPI
  • Pagdalag unit ug functional nga mga pagsulay sa backend
  • Pagsulay sa integrasyon sa duha ka tumoy
  • Pagpadala sa Frontend Resources sa CDN
  • Pagtukod og Container alang sa Python Program
  • Pagsumite sa usa ka sudlanan sa rehistro
  • Pag-update sa Kubernetes Manifest

Pag-ilis sa daan nga code sa bag-o

  • Ang Kubernetes naglunsad og daghang mga higayon sa usa ka bag-ong sudlanan
  • Naghulat ang Kubernetes sa mga higayon nga mahimong himsog
  • Ang Kubernetes nagdugang mga higayon sa HTTP load balancer
  • Naghulat ang mga Kubernetes hangtod dili na magamit ang daan nga mga higayon
  • Gipahunong sa Kubernetes ang daan nga mga higayon
  • Gisubli sa Kubernetes kini nga mga operasyon hangtod nga gipulihan sa bag-ong mga higayon ang tanan nga daan.

Pag-enable sa bag-ong function switch

  • Ang bag-ong code gilakip para lang sa imong kaugalingon aron masiguro nga ok ang tanan
  • Bag-ong code nga gi-enable para sa 10% sa mga user, operational ug business metrics nga gisubay
  • Bag-ong code nga gi-enable para sa 50% sa mga user, operational ug business metrics nga gisubay
  • Bag-ong code nga gi-enable para sa 100% sa mga user, operational ug business metrics nga gisubay
  • Sa katapusan imong gisubli ang tibuok nga pamaagi aron makuha ang daan nga code ug switch

Ang proseso nagdepende sa mga himan, pinulongan, ug paggamit sa mga arkitektura nga nakapunting sa serbisyo, apan sa kinatibuk-an kini ingon niini. Wala ko maghisgot ug database migration deployments tungod kay nagkinahanglan kini og mainampingong pagplano, apan akong ipasabot kung giunsa kini pagdumala ni Dark sa ubos.

Adunay daghang mga sangkap dinhi, ug daghan niini ang dali nga mohinay, mag-crash, hinungdan sa temporaryo nga kompetisyon, o mapaubos ang sistema sa pagtrabaho.

Ug tungod kay kini nga mga pipeline halos kanunay nga gihimo alang sa usa ka espesyal nga okasyon, lisud ang pagsalig niini. Daghang mga tawo ang adunay mga adlaw nga ang code dili ma-deploy, tungod kay ang Dockerfile adunay mga problema, usa sa daghang mga serbisyo ang napakyas, o ang husto nga tawo nagbakasyon.

Mas grabe pa, kadaghanan niini nga mga lakang wala’y mahimo nga mapuslanon. Kinahanglan sila kaniadto sa dihang gipadala namo ang code direkta ngadto sa mga tiggamit, apan karon kami adunay mga switch alang sa bag-ong code, ug kini nga mga proseso gibulag. Ingon nga resulta, ang lakang diin ang code gipakatap (ang daan gipulihan sa bag-o) nahimo na lang nga dugang nga risgo.

Siyempre, kini usa ka mahunahunaon kaayo nga pipeline. Ang team nga nagmugna niini wala maggahin og panahon ug salapi aron dali nga ma-deploy. Ang mga pipeline sa pag-deploy kasagaran mas hinay ug dili kasaligan.

Pagpatuman sa Padayon nga Paghatud sa Ngitngit

Ang padayon nga paghatud hinungdanon kaayo sa Dark nga gipunting namon nga wala’y usa ka segundo gikan sa pagsugod. Giagian namo ang tanang mga lakang sa pipeline aron tangtangon ang tanan nga wala kinahanglana, ug gidala sa hunahuna ang uban. Ania kung giunsa namo gikuha ang mga lakang.

Jesse Frazel (Jessie Frazelle) nagmugna og bag-ong pulong nga walay deploy (wala magkinahanglan og deployment) sa Future of Software Development conference sa Reykjavik

Diha-diha dayon nakahukom kami nga ang Dark ibase sa konsepto nga "walay pag-deploy" (salamat Jessie Frazel alang sa neologism). Ang walay pag-deploy nagpasabot nga ang bisan unsang code ipakatap dayon ug andam nga gamiton sa produksiyon. Siyempre, dili nato tugotan ang nabuak o dili kompleto nga code nga molabay (akong ihulagway ang mga prinsipyo sa seguridad sa ubos).

Sa Dark demo, kanunay kaming gipangutana kung giunsa namon mapadali ang pag-deploy. Weird nga pangutana. Ang mga tawo tingali naghunahuna nga kami adunay usa ka matang sa super teknolohiya nga nagtandi sa code, nag-compile niini, nag-pack niini sa usa ka sudlanan, nagsugod sa usa ka virtual nga makina, ang katugnaw nagsugod sa usa ka sudlanan ug mga butang nga ingon niana - tanan sa 50 ms. Kini halos dili mahimo. Apan naghimo kami usa ka espesyal nga makina sa pag-deploy nga wala magkinahanglan niining tanan.

Dark nagpadagan mga tighubad sa panganod. Ingnon ta nga nagsulat ka og code sa usa ka function o usa ka HTTP o event handler. Gipadala namo ang diff sa abstract syntax tree (ang pagpatuman sa code nga gigamit sa among editor ug mga server sa sulod) sa among mga server ug dayon ipadagan kana nga code kung mosulod ang mga hangyo. Mao nga ang pag-deploy morag usa ka kasarangan nga pagsulat sa database - instant ug elementarya. Ang deployment paspas kaayo tungod kay naglambigit kini sa labing gamay.

Sa umaabot, nagplano kami nga himuon ang Dark nga usa ka compiler sa imprastraktura nga maghimo ug magpadagan sa sulundon nga imprastraktura alang sa taas nga pasundayag ug kasaligan sa aplikasyon. Ang dali nga pag-deploy, siyempre, dili moadto bisan diin.

Luwas nga Deployment

Gitukod nga editor

Ang Code in Dark gisulat sa Dark editor. Ang structured editor wala magtugot sa syntax errors. Sa tinuud, si Dark wala’y analisador. Samtang nag-type ka, direkta kaming nagtrabaho sa Abstract Syntax Tree (AST) sama sa Paredit, Sketch-n-Sketch, Tofu, pagpul-ong sa и MPS.

Ang bisan unsang wala mahuman nga code sa Dark adunay balido nga mga semantika sa pagpatuman, sama sa gi-type ang mga lungag sa Hazel. Pananglitan, kung usbon nimo ang usa ka tawag sa function, gitipigan namon ang daan nga function hangtod nga magamit ang bag-o.

Ang matag programa sa Dark adunay kaugalingong kahulogan, mao nga ang wala mahuman nga code dili makapugong sa nahuman nga pagtrabaho.

Mga Mode sa Pag-edit

Gisulat nimo ang code sa Dark sa duha ka paagi. Una, nagsulat ka bag-ong code ug ikaw ra ang tiggamit. Pananglitan, kini anaa sa REPL ug ang ubang mga tiggamit dili gayud maka-access niini, o kini usa ka bag-ong HTTP nga ruta nga wala nimo gitumong bisan asa. Mahimo ka nga magtrabaho dinhi nga wala’y bisan unsang pag-amping, ug karon nagtrabaho ka sa usa ka palibot sa pag-uswag nga sama niini.

Ang ikaduha nga sitwasyon: ang code gigamit na. Kung ang trapiko moagi sa code (mga gimbuhaton, mga tigdumala sa panghitabo, mga database, mga tipo), kinahanglan nga mag-amping. Aron mahimo kini, gibabagan namon ang tanan nga gigamit nga code ug nanginahanglan sa paggamit sa labi ka istruktura nga mga himan alang sa pag-edit niini. Maghisgot ako bahin sa mga himan sa istruktura sa ubos: mga switch sa function alang sa mga tigdumala sa HTTP ug panghitabo, usa ka kusgan nga platform sa paglalin alang sa mga database, ug usa ka bag-ong pamaagi sa pag-bersyon alang sa mga gimbuhaton ug tipo.

Mga switch sa function

Usa ka paagi kuhaa ang wala kinahanglana nga pagkakomplikado sa Dark, ayuha ang daghang mga problema sa usa ka solusyon. Ang mga feature switch naghimo sa daghang lain-laing mga buluhaton: pag-ilis sa lokal nga development environment, git branches, deploying code, ug siyempre ang tradisyonal nga hinay ug kontrolado nga pagpagawas sa bag-ong code.

Ang paghimo ug pag-deploy sa function switch gihimo sa among editor sa usa ka operasyon. Naghimo kini og usa ka walay sulod nga luna alang sa bag-ong code ug naghatag og mga kontrol sa pag-access alang sa daan ug bag-ong code, ingon man usab sa mga buton ug mga sugo alang sa pag-us-os o paggawas sa bag-ong code.

Ang mga switch sa function gitukod sa Dark nga pinulongan, ug bisan ang dili kompleto nga mga switch naghimo sa ilang trabaho - kung ang kondisyon sa switch dili matuman, ang daan nga gibabagan nga code ipatuman.

Kalibutan nga kalamboan

Gipulihan sa mga feature switch ang local development environment. Karon lisud alang sa mga team ang pagsiguro nga ang tanan naggamit sa parehas nga mga bersyon sa mga himan ug librarya (mga formatter sa code, linter, manager sa package, compiler, preprocessors, mga himan sa pagsulay, ug uban pa) Uban sa Dark, dili kinahanglan nga mag-install sa mga dependency sa lokal, pagdumala sa lokal nga pag-instalar sa Docker, o paghimo og uban pang mga lakang aron maseguro ang labing menos usa ka pagkaparehas tali sa kalamboan ug produksyon nga palibot. Sa pagkonsiderar nga ang ingon nga pagkaparehas imposible gihapondili gani kita magpakaaron-ingnon nga maningkamot alang niini.

Imbis nga maghimo usa ka clone nga lokal nga palibot, ang mga switch sa Dark maghimo usa ka bag-ong sandbox sa produksiyon nga mopuli sa palibot sa pag-uswag. Sa umaabot, nagplano usab kami nga maghimo usa ka sandbox alang sa ubang mga bahin sa aplikasyon (pananglitan, mga instant clone sa database), bisan kung sa pagkakaron dili kini ingon usa ka dako nga deal.

Mga Sanga ug Deployment

Adunay karon daghang mga paagi aron madala ang bag-ong code sa mga sistema: mga sanga sa git, yugto sa pag-deploy, ug mga switch sa feature. Gisulbad nila ang parehas nga problema sa lainlaing bahin sa dagan sa trabaho: git alang sa mga lakang sa pre-deployment, pag-deploy para sa pagbalhin gikan sa daan nga code ngadto sa bag-ong code, ug mga switch sa feature para sa kontroladong pagpagawas sa bag-ong code.

Ang labing episyente nga paagi mao ang mga switch sa function (ug usab ang labing kadali nga masabtan ug magamit). Uban kanila, mahimo nimong hingpit nga biyaan ang laing duha ka mga pamaagi. Labi na nga mapuslanon ang pagtangtang sa deployment - kung naggamit pa kami mga switch sa feature aron mahimo ang code, nan ang lakang sa pagbalhin sa mga server ngadto sa bag-ong code nagmugna lamang og dili kinahanglan nga mga risgo.

Lisud gamiton ang Git, labi na sa mga nagsugod, ug kini medyo limitado, apan kini adunay magamit nga mga sanga. Naplantsa na namo ang daghang mga kakulangan sa git. Mangitngit nga mga pag-edit sa tinuod nga panahon ug naghatag sa Google Docs-style nga kolaborasyon aron dili ka kinahanglan nga magsumite ug code ug mag-rebase ug dili kaayo kanunay mag-merge.

Ang mga feature switch anaa sa kinauyokan sa usa ka luwas nga pag-deploy. Kauban sa mga dali nga pag-deploy, gitugotan ka nila nga dali nga sulayan ang mga konsepto sa gagmay, ubos nga peligro nga mga tipak imbis nga mag-aplay usa ka dako nga pagbag-o nga mahimong makaguba sa sistema.

Pag-bersyon

Gigamit namon ang pag-bersyon aron mabag-o ang mga gimbuhaton ug tipo. Kung gusto nimo usbon ang usa ka bahin, ang Dark maghimo usa ka bag-ong bersyon sa kana nga bahin. Mahimo nimong tawagan kini nga bersyon gamit ang usa ka switch sa usa ka HTTP o tigdumala sa panghitabo. (Kung kini usa ka function nga lawom sa call graph, usa ka bag-ong bersyon sa matag function ang gihimo sa dalan. Kini ingon og sobra ka daghan, apan ang mga gimbuhaton dili makabalda kung dili nimo kini gamiton, mao nga ikaw ' dili gani mapansin.)

Kami nga bersyon mga tipo alang sa parehas nga mga hinungdan. Naghisgot kami bahin sa among tipo nga sistema sa detalye sa miaging post.

Pinaagi sa pag-bersiyon sa mga gimbuhaton ug mga tipo, makahimo ka og mga pagbag-o sa imong aplikasyon sa hinay-hinay. Mahimo nimong susihon nga ang matag indibidwal nga tigdumala nagtrabaho sa bag-ong bersyon, dili nimo kinahanglan nga buhaton dayon ang tanan nga mga pagbag-o sa mga aplikasyon (apan kami adunay mga himan aron dali kini mahimo kung gusto nimo).

Kini labi ka luwas kaysa sa bug-os nga pag-deploy sa tanan sa usa ka higayon, sama sa karon nga kaso.

Bag-ong Mga Bersyon sa Pakete ug ang Standard Library

Kung gi-update nimo ang usa ka package sa Dark, dili dayon namon ilisan ang paggamit sa matag function o tipo sa tibuuk nga codebase. Dili kini luwas. Ang code nagpadayon sa paggamit sa parehas nga bersyon nga gigamit niini, ug imong gi-update ang paggamit sa mga gimbuhaton ug mga tipo sa bag-ong bersyon sa usa ka case-by-case nga basehan gamit ang mga switch.

Giunsa pag-deploy sa Dark ang code sa 50ms
Screenshot sa bahin sa awtomatikong proseso sa Dark, nga nagpakita sa duha ka bersyon sa Dict::get function. Ang Dict::get_v0 mibalik ug Bisan unsang tipo (nga among gisalikway), samtang ang Dict::get_v1 nagbalik ug usa ka Option type.

Kanunay namong maghatag ug bag-ong standard nga feature sa library ug dili na magamit ang mga daan nga bersyon. Ang mga tiggamit nga adunay mas daan nga mga bersyon sa code adunay access sa kanila, apan ang mga bag-ong tiggamit dili maka-access niini. Maghatag kami og mga himan aron ibalhin ang mga tiggamit gikan sa daan ngadto sa bag-ong mga bersyon sa 1 ka lakang, ug usab uban ang mga switch sa feature.

Naghatag usab ang Dark og usa ka talagsaon nga bahin: kung gipadagan na namon ang imong code sa produksiyon, mahimo namon nga sulayan ang mga bag-ong bersyon sa among kaugalingon, pagtandi sa output gikan sa bag-o ug daan nga mga hangyo aron mahibal-an nimo kung unsa ang nabag-o. Ingon usa ka sangputanan, ang mga pag-upgrade sa package, nga sagad gihimo nga buta (o nanginahanglan daghang pagsulay sa seguridad), dili kaayo peligro ug mahimong awtomatiko nga mahitabo.

Bag-ong mga bersyon sa Dark

Ang transisyon gikan sa Python 2 ngadto sa Python 3 milungtad og usa ka dekada ug problema gihapon. Tungod kay nagtukod kami og Dark para sa padayon nga paghatud, kini nga mga pagbag-o sa pinulongan kinahanglan nga tagdon.

Kung maghimo kami gamay nga pagbag-o sa lengguwahe, maghimo kami usa ka bag-ong bersyon sa Dark. Ang daan nga code nagpabilin sa daan nga bersyon sa Dark, samtang ang bag-ong code gigamit sa bag-ong bersyon. Mahimong gamiton ang mga switch o feature version para mag-upgrade sa bag-ong bersyon sa Dark.

Kini labi ka mapuslanon tungod kay ang Dark bag-o lang nagpakita. Daghang mga pagbag-o sa pinulongan o librarya mahimong mapakyas. Ang hinay-hinay nga pag-bersiyon sa pinulongan nagtugot kanamo sa paghimo og ginagmay nga mga pag-update, nga nagpasabot nga kami makagahin sa among panahon ug makalangan sa daghang mga desisyon mahitungod sa pinulongan hangtud nga kami adunay mas daghang tiggamit, ug sa ingon mas daghang impormasyon.

Mga paglalin sa database

Alang sa luwas nga paglalin sa database, adunay standard nga pormula:

  • Isulat pag-usab ang code aron suportahan ang bag-o ug daan nga mga format
  • I-convert ang tanang data ngadto sa bag-ong format
  • Kuhaa ang daan nga pag-access sa datos

Ingon usa ka sangputanan, ang paglalin sa database nalangan ug nanginahanglan daghang mga kapanguhaan. Ug kami adunay mga stale schemas nga nagtapok tungod kay bisan ang yano nga mga buluhaton sama sa pag-ayo sa usa ka lamesa o ngalan sa kolum dili takus sa paningkamot.

Ang Dark adunay usa ka episyente nga plataporma sa paglalin sa database nga (hinaut) nga himuon nga dali ang proseso nga dili ka mahadlok niini. Ang tanan nga mga data store sa Dark (key-value pair stores o padayon nga hash tables) adunay klase. Aron mabalhin ang usa ka tindahan sa datos, hatagan nimo kini usa ka bag-ong tipo ug usa ka function sa rollback ug rollback aron mabag-o ang mga kantidad tali sa duha nga mga tipo.

Ang mga Datastores sa Dark kay ma-access pinaagi sa versioned variable names. Pananglitan, ang data store sa Users sa sinugdan tawgon nga Users-v0. Kung ang usa ka bag-ong bersyon gihimo nga adunay lahi nga tipo, ang ngalan giusab sa Users-v1. Kung ang datos gitipigan pinaagi sa Users-v0 ug imong gi-access kini pinaagi sa Users-v1, ang roll forward function gipadapat. Kung ang datos gitipigan pinaagi sa Users-v1 ug imong gi-access kini pinaagi sa Users-v0, ang fallback function magamit.

Giunsa pag-deploy sa Dark ang code sa 50ms
Screen sa paglalin sa database nga adunay daan nga mga ngalan sa field sa database, roll-forward ug roll-back nga mga ekspresyon, ug mga instruksyon alang sa pagpagana sa paglalin.

Gamita ang mga switch sa feature aron iruta ang mga tawag ngadto sa Users-v0 ngadto sa Users-v1. Mahimo kini usa ka tigdumala sa HTTP matag higayon aron maminusan ang mga peligro, ug ang mga switch molihok alang sa mga indibidwal nga tiggamit aron masusi nimo nga ang tanan nagtrabaho sama sa gipaabut. Kung wala nay nahabilin nga Users-v0s, ang Dark mag-convert sa bisan unsang nahabilin nga data sa background gikan sa daan nga format ngadto sa bag-o. Dili ka gani makamatikod niini.

Pagsulay

Dark kay functional programming language nga adunay static nga pag-type ug dili mausab nga mga bili, mao nga kini adunay mas gamay nga testing surface kon itandi sa dinamikong gi-type nga object-oriented nga mga pinulongan. Apan kinahanglan pa nimo nga sulayan.
Sa Dark, ang editor awtomatik nga nagpadagan sa mga pagsulay sa yunit sa background alang sa code nga gi-edit, ug gipadagan kini nga mga pagsulay alang sa tanan nga mga switch sa feature pinaagi sa default. Sa umaabot, gusto namon nga awtomatiko nga mag-fuzz code gamit ang mga static nga tipo aron makit-an ang mga bug.

Dugang pa, ang Dark nagpadagan sa imong imprastraktura sa produksiyon, nga nagbukas sa bag-ong mga posibilidad. Awtomatiko namon nga gitipigan ang mga hangyo sa HTTP sa Dark nga imprastraktura (karon among gitipigan ang tanan nga mga hangyo, apan gusto namon nga magbalhin sa pagkuha). Gisulayan namo ang bag-ong code batok kanila ug naghimo sa mga pagsulay sa yunit, ug kung gusto nimo, dali nimong mabag-o ang makapaikag nga mga pangutana sa mga pagsulay sa yunit.

Unsa ang atong giwagtang

Tungod kay wala kami usa ka deployment apan adunay mga switch sa feature, mga 60% sa deployment pipeline ang wala. Wala namo kinahanglana ang git branch o pull requests, paghimo og backend resources ug containers, pagduso sa resources ug containers ngadto sa mga rehistro, o mga lakang sa pagdeploy sa Kubernetes.

Giunsa pag-deploy sa Dark ang code sa 50ms
Pagkumpara sa usa ka standard nga padayon nga delivery pipeline (wala) ug Dark padayon nga delivery (tuo). Sa Dark, ang paghatud naglangkob sa 6 nga mga lakang ug usa ka siklo, samtang ang tradisyonal nga bersyon adunay 35 nga mga lakang ug 3 nga mga siklo.

Sa Dark, ang usa ka deployment adunay 6 lang ka lakang ug 1 cycle (mga lakang nga gisubli sa makadaghan), samtang ang modernong padayon nga delivery pipeline adunay 35 ka lakang ug 3 ka cycle. Sa Dark, ang mga pagsulay awtomatikong modagan nga wala nimo kini makita; Ang mga dependency awtomatikong na-install; ang tanan nga may kalabutan sa git o Github dili na kinahanglan; Dili nimo kinahanglan nga magtukod, magsulay, ug ipadala ang mga sudlanan sa Docker; dili na kinahanglan ang pag-deploy sa Kubernetes.

Bisan ang nahabilin nga mga lakang sa Dark nahimong mas sayon. Tungod kay ang mga switch sa feature mahimong kontrolado sa usa ka aksyon, dili nimo kinahanglan nga moagi sa tibuok deployment pipeline sa ikaduhang higayon aron matangtang ang daan nga code.

Gihimo namo ang paghatud sa code nga sayon ​​kutob sa mahimo, nga gipakunhod ang oras ug risgo sa padayon nga paghatod. Gipasayon ​​usab namo ang pag-upgrade sa mga pakete, paglalin sa database, pagsulay, pag-bersiyon, pag-instalar sa mga dependency, pagkaparehas tali sa kalamboan ug produksyon nga palibot, ug paspas ug luwas nga pag-upgrade sa bersyon sa pinulongan.

Gitubag nako ang mga pangutana bahin niini HackerNews.

Aron makakat-on pa bahin sa Dark device, basaha artikulo bahin sa Dark, sunda kami sa Twitter (o sa kanako) o pag-sign up alang sa beta ug pagpahibalo bahin sa sunod nga mga post. Kung moadto ka sa StrangeLoop sa Septyembre, anhi sa among paglusad.

Source: www.habr.com

Idugang sa usa ka comment