Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Rapò a pral pale sou kèk pratik DevOps, men nan pwen de vi yon pwomotè. Tipikman, tout enjenyè ki rantre nan DevOps deja gen plizyè ane eksperyans administratif anba senti yo. Men, sa pa vle di ke pa gen okenn plas pou pwomotè a isit la. Pi souvan pase pa, devlopè yo okipe ranje "pwochen ensèk ijan kritik nan jounen an," epi yo pa gen tan menm pran yon gade rapid nan jaden an DevOps. Dapre konpreyansyon otè a, DevOps se, premyèman, bon sans. Dezyèmman, li se yon opòtinite yo dwe pi efikas. Si ou se yon devlopè, gen bon sans epi ou vle pi efikas kòm yon jwè ekip, rapò sa a se pou ou.

Kite mwen prezante tèt mwen, mwen konplètman admèt ke gen moun nan chanm nan ki pa konnen mwen. Non mwen se Anton Boyko, mwen se yon Microsoft Azure MVP. ki sa ki MVP? Sa a se Model-View-Presenter. Model-View-Presenter se egzakteman mwen.

Anplis de sa, mwen kounye a kenbe pozisyon nan achitèk solisyon nan Ciklum. Ak jis dènyèman mwen te achte tèt mwen tankou yon domèn bèl, epi mwen mete ajou imel mwen an, ki mwen anjeneral montre nan prezantasyon yo. Ou ka ekri m nan: me [dog] byokoant.pro. Ou ka imèl mwen ak kesyon. Anjeneral mwen reponn yo. Sèl bagay mwen pa ta renmen resevwa kesyon pa imel ki gen rapò ak de sijè: politik ak relijyon. Ou ka ekri m 'sou tout lòt bagay pa imèl. Kèk tan ap pase, map reponn.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Kèk mo sou tèt mwen:

  • Mwen te nan domèn sa a pou 10 ane kounye a.
  • Mwen te travay nan Microsoft.
  • Mwen se papa fondatè kominote Azure Azure, ke nou te fonde yon kote nan 2014. Epi nou toujou genyen li epi n ap devlope li.
  • Mwen se tou papa fondatè konferans Azure, ke nou òganize nan Ikrèn.
  • Mwen ede tou òganize Global Azure Bootcamp la nan Kyiv.
  • Kòm mwen te di, mwen se yon Microsoft Azure MVP.
  • Mwen pale nan konferans byen souvan. Mwen vrèman renmen pale nan konferans. Pandan ane ki sot pase a, mwen te kapab fè apeprè 40 fwa. Si ou pase nan Ikrèn, Byelorisi, Polòy, Bilgari, Syèd, Denmark, Netherlands, Espay oswa bay oswa pran yon lòt peyi an Ewòp, Lè sa a, li se byen posib ke lè ou ale nan yon konferans ki gen yon tèm nwaj nan kouran li yo, ou ka wè m 'sou lis oratè yo.
  • Mwen se yon fanatik Star Trek tou.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Ann pale yon ti kras sou Agenda. Agenda nou an trè senp:

  • Nou pral pale sou sa DevOps ye. Ann pale poukisa sa a enpòtan. Anvan sa, DevOps se te yon mo kle ke ou te ekri sou rezime w epi imedyatman te resevwa + $500 nan salè. Koulye a, ou bezwen ekri, pou egzanp, blockchain nan rezime w la nan lòd jwenn + 500 dola nan salè ou.
  • Lè sa a, lè nou konprann yon ti kras sou sa sa a, nou pral pale sou sa ki pratik DevOps yo ye. Men, pa tèlman nan kontèks DevOps an jeneral, men sou pratik DevOps sa yo ki ta ka enterese devlopè yo. Mwen pral di w poukisa yo ta ka enterese w. Mwen pral di ou poukisa ou ta dwe fè sa a tout ak ki jan li ka ede ou fè eksperyans mwens doulè.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Yon foto tradisyonèl ke anpil moun montre. Sa a se sa k ap pase nan anpil pwojè. Sa a se lè nou gen depatman devlopman ak operasyon ki sipòte lojisyèl nou an. Ak depatman sa yo pa kominike youn ak lòt.

Petèt, si ou pa t 'kapab santi li tèlman klè nan DevOps yo ak depatman operasyon yo, ou ka trase yon analoji ak depatman yo Dev ak QA. Gen moun ki devlope lojisyèl epi gen moun QA ki move nan pwen de vi devlopè yo. Pa egzanp, mwen komèt bèl kòd mwen an nan depo a, epi gen kèk kannay ki chita la ki retounen kòd sa a ban mwen epi ki di ke kòd ou a se move.

Tout bagay sa yo rive paske moun pa kominike youn ak lòt. Apre sa, yo jete kèk pakè, kèk aplikasyon youn ak lòt nan kèk miray nan enkonpreyansyon epi eseye fè yon bagay ak yo.

Se jisteman miray sa a ki kilti DevOps fèt pou detwi, i.e. fòse moun yo kominike youn ak lòt epi omwen konprann sa diferan moun nan pwojè a fè ak poukisa travay yo enpòtan.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Epi lè nou pale sou DevOps, yon moun ap di w ke DevOps se lè pwojè a gen entegrasyon kontinyèl; yon moun pral di ke DevOps se si pwojè a aplike "enfrastrikti kòm kòd" pratik la; yon moun pral di ke premye etap la nan DevOps se karakteristik branch, karakteristik drapo.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Esansyèlman, tout sa a se vre nan pwòp fason li yo. Men, sa yo se jis pratik ultim nou genyen. Anvan ou ale nan pratik sa yo, mwen sijere gade nan glise sa a, ki montre etap yo 3 nan aplikasyon Dev-Ops metodoloji nan pwojè ou a, nan konpayi ou.

Slide sa a tou gen yon dezyèm non ofisyèl. Ou ka fè rechèch sou entènèt pou chèche konnen kisa 3 mousketè DevOps yo ye. Li posib ke w ap jwenn atik sa a. Poukisa 3 mousketè? Anba li di: moun, pwosesis ak pwodwi, i.e. PPP - Porthos, Porthos ak Porthos. Men 3 mousketè yo nan DevOps. Atik sa a dekri nan plis detay poukisa sa a enpòtan ak sa li enplike.

Lè ou kòmanse aplike yon kilti DevOps, li trè enpòtan ke li aplike nan lòd sa a.

Okòmansman ou bezwen pale ak moun. Epi ou bezwen eksplike moun ki sa li ye ak ki jan yo ka jwenn kèk benefis nan li.

Konferans nou an rele DotNet Fest. E jan òganizatè yo te di m ', nou sitou envite yon odyans nan devlopè isit la, Se konsa, mwen espere ke pifò nan moun ki nan sal la patisipe nan devlopman.

Nou pral pale sou moun, nou pral pale sou sa devlopè vle fè chak jou. Ki sa yo vle plis? Yo vle ekri kèk nouvo kòd, sèvi ak kad newfangled, kreye nouvo karakteristik. Ki sa devlopè vle pi piti? Ranje vye pinèz. Mwen espere ou dakò avèm. Sa a se sa devlopè yo vle. Yo vle ekri nouvo karakteristik, yo pa vle ranje pinèz.

Nimewo a nan pinèz ke yon pwomotè patikilye pwodui depann sou ki jan dwat bra l 'yo ak konbyen yo grandi soti nan zepòl li, epi yo pa nan pòch bou l' yo. Men, kanmenm, lè nou gen yon gwo pwojè, pafwa li rive ke li enposib kenbe tras de tout bagay, kidonk li ta bon pou nou sèvi ak kèk apwòch ki pral ede nou ekri kòd ki pi estab ak pi bon kalite.

Ki sa QA yo vle plis? Mwen pa konnen si yo nan sal la. Li difisil pou mwen di ke mwen vle yon QA, paske mwen pa janm te youn. Epi pa gen ofans pou mesye yo, y ap di ke mwen espere ke mwen pa janm pral. Men, se pa pou rezon ke mwen konsidere travay yo san sans e initil, men paske mwen pa konsidere tèt mwen yon moun ki ta ka fè travay sa a avèk efikasite, kidonk mwen pa pral menm eseye fè li. Men, dapre sa mwen konprann, sa QA pa renmen pi plis se pral travay nan maten an, toujou ap kouri kèk kalite tès regresyon, mache sou menm ensèk yo ke yo te rapòte bay devlopè yo 3 sprints de sa epi li di: "Kilè ou pral , Monsieur D 'Artagnan, ranje ensèk sa a.' Epi Msye D'Artagnan reponn li: "Wi, wi, wi, mwen gentan ranje li." Ak ki jan sa rive ke mwen ranje yon ensèk epi fè 5 sou wout la.

Moun ki sipòte solisyon sa a nan pwodiksyon vle solisyon sa a mache san pinèz, pou yo pa oblije rekòmanse sèvè a chak vandredi, lè tout moun nòmal ale nan bar la. Devlopè yo te deplwaye nan Vandredi, admin yo chita jiska Samdi, ap eseye jwenn deplwaman sa a leve, li ranje.

Epi lè ou eksplike moun yo ke yo vize a rezoud pwoblèm yo menm, ou ka ale nan fòmalize pwosesis yo. Li enpòtan anpil. Poukisa? Paske lè nou di "fòmalizasyon," li enpòtan pou ou dekri kijan pwosesis ou yo rive omwen yon kote sou yon sèvyèt. Ou bezwen konprann ke si ou, pou egzanp, deplwaye nan yon anviwònman QA oswa yon anviwònman pwodiksyon, Lè sa a, li toujou rive nan lòd sa a; nan etap sa yo nou kouri, pou egzanp, tès inite otomatik ak tès UI. Apre deplwaman, nou tcheke si deplwaman an te byen oswa mal. Men, ou deja gen yon lis klè nan aksyon ki dwe repete sou yo ak sou ankò lè ou deplwaye nan pwodiksyon an.

Epi sèlman lè pwosesis ou yo ofisyèlman, ou kòmanse chwazi pwodwi ki pral ede w otomatize pwosesis sa yo.

Malerezman, mwen trè souvan wè sa rive nan do. Le pli vit ke yon moun tande mo "DevOps la", yo imedyatman sijere enstale Jenkins, paske yo kwè ke le pli vit ke yo enstale Jenkins, yo pral gen DevOps. Yo enstale Jenkins, li atik "Kijan pou" yo sou sitwèb Jenkins la, yo te eseye mete pwosesis nan atik sa yo Kijan pou yo, epi yo te vin jwenn moun yo epi yo bese moun yo, yo di ke liv la di ke ou bezwen fè li nan fason sa a, se konsa nou fè l konsa.

Se pa ke Jenkins se yon move zouti. Mwen pa vle di sa nan okenn fason. Men, sa a se jis youn nan pwodwi yo. Ak ki pwodwi ou itilize ta dwe dènye desizyon ou, e pa vle di premye desizyon ou. Pwodwi ou a pa ta dwe kondwi pa aplikasyon an nan kilti ak apwòch. Sa a enpòtan anpil pou w konprann, se poutèt sa mwen pase anpil tan sou glise sa a epi eksplike tout bagay sa yo pou lontan.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Ann pale sou pratik DevOps an jeneral. Kisa yo ye? Ki diferans ki genyen? Ki jan yo eseye yo sou? Poukisa yo enpòtan?

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Premye pratik ou ta ka tande pale de yo rele Entegrasyon kontinyèl. Petèt yon moun nan pwojè a gen Entegrasyon Kontinyèl (CI).

Pwoblèm nan pi gwo se ke pi souvan lè mwen mande yon moun: "Èske ou gen CI sou pwojè a?" epi li di: "Wi," Lè sa a, lè mwen mande sa li fè, li dekri m 'absoliman tout pwosesis la automatisation. Sa a se pa totalman vre.

An reyalite, pratik CI jis vize a entegre kòd ke diferan moun ekri nan kèk kalite baz kòd sèl. Se tout.

Ansanm ak CI, anjeneral gen lòt pratik sou wout la - tankou Deplwaman Kontinyèl, Jesyon Release, men nou pral pale sou sa pita.

CI li menm di nou ke diferan moun ekri kòd epi kòd sa a dwe kontinyèlman entegre nan yon sèl baz kòd.

Kisa sa ban nou e poukisa li enpòtan? Si nou gen DotNet, Lè sa a, sa a bon, li se yon lang konpile, nou ka konpile aplikasyon nou an. Si li konpile, Lè sa a, sa a se deja yon bon siy. Sa a pa vle di anyen ankò, men li se premye bon siy ke nou ka omwen konpile.

Lè sa a, nou ka kouri kèk tès, ki se tou yon pratik separe. Tès yo tout vèt - sa a se dezyèm bon siy la. Men, ankò, sa a pa vle di anyen.

Men poukisa ou ta fè sa? Tout pratik ke mwen pral pale jodi a pote apeprè menm valè a, sa vle di apeprè menm benefis yo epi yo mezire tou apeprè menm jan an.

Premyèman, li pèmèt ou pi vit livrezon. Ki jan sa pèmèt ou pi vit livrezon? Lè nou fè kèk nouvo chanjman nan baz kòd nou an, nou ka imedyatman eseye fè yon bagay ak kòd sa a. Nou pa tann jiskaske Jedi vini paske Jedi nou lage li nan QA Environment, nou fè li isit la ak isit la.

Mwen pral rakonte ou yon istwa tris nan lavi mwen. Se te yon bon bout tan de sa, lè mwen te toujou jèn ak bèl. Koulye a, mwen deja jèn, bèl ak entelijan, ak modès. Kèk tan de sa mwen te nan yon pwojè. Nou te gen yon gwo ekip anviwon 30 devlopè. Epi nou te gen yon gwo, gwo pwojè Enterprise ki devlope pou apeprè 10 ane. E nou te gen diferan branch. Nan depo a nou te gen yon branch nan ki devlopè te mache. Apre sa, te gen yon branch ki parèt vèsyon an nan kòd la ki nan pwodiksyon an.

Branch pwodiksyon an te 3 mwa dèyè branch ki te disponib pou devlopè yo. Ki sa sa a vle di? Sa vle di ke le pli vit ke mwen gen yon ensèk yon kote ki ale nan pwodiksyon akòz fòt devlopè yo, paske yo te pèmèt li, ak akòz fay la nan QA, paske yo te gade li, Lè sa a, sa vle di ke si mwen resevwa yon travay pou korektif pou pwodiksyon, Lè sa a, mwen oblije retounen chanjman kòd mwen an 3 mwa de sa. Mwen dwe sonje sa mwen te genyen 3 mwa de sa epi eseye ranje li la.

Si ou poko fè eksperyans sa a, ou ka eseye li sou pwojè lakay ou. Bagay pwensipal lan se, pa eseye li sou yon komèsyal. Ekri yon koup nan liy nan kòd, bliye sou yo pou sis mwa, ak Lè sa a, tounen epi eseye byen vit eksplike ki sa liy kòd sa yo sou ak ki jan ou ka ranje oswa optimize yo. Se yon eksperyans trè, trè enteresan.

Si nou gen yon pratik Entegrasyon Kontinyèl, Lè sa a, sa a pèmèt nou tcheke li ak yon kantite zouti otomatik isit la ak kounye a, le pli vit ke mwen te ekri kòd mwen an. Sa a ka pa ban m foto konplè, men kanmenm, li pral retire omwen kèk nan risk yo. Men, si gen nenpòt ensèk potansyèl, mwen pral konnen sou li kounye a, se sa ki literalman nan yon koup de minit. Mwen p'ap bezwen tounen 3 mwa. Mwen pral sèlman bezwen woule tounen 2 minit. Yon machin kafe bon pa pral menm gen tan prepare kafe nan 2 minit, kidonk sa a trè fre.

Sa a gen valè ke li ka repete tan apre tan sou chak pwojè, i.e. pa sèlman youn nan ou mete l 'sou. Ou ka repete tou de pratik nan tèt li ak CI tèt li pral repete pou chak nouvo chanjman ou fè nan pwojè a. Sa a pèmèt ou optimize resous paske ekip ou a ap travay pi efikas. Ou p ap gen yon sitiyasyon ankò kote yon ensèk vin jwenn ou nan kòd ou te travay avèk 3 mwa de sa. Ou p ap gen kontèks chanje ankò lè ou chita epi pase de premye èdtan yo ap eseye konprann sa ki te pase lè sa a epi antre nan sans nan kontèks la anvan ou kòmanse korije yon bagay.

Ki jan nou ka mezire siksè oswa echèk pratik sa a? Si ou rapòte bay gwo patron sa nou aplike sou pwojè CI a, li tande bla bla bla. Nou te aplike li, OK, men poukisa, ki sa li te pote pou nou, ki jan nou mezire li, ki jan kòrèkteman oswa mal nou aplike li?

Premye a se ke, gras a CI, nou ka deplwaye pi plis ak pi souvan, ak pi souvan jisteman paske kòd nou an potansyèlman pi estab. Nan menm fason an, tan nou jwenn yon erè redwi epi tan pou korije erè sa a redwi jisteman pou rezon ki fè nou resevwa yon repons nan men sistèm nan jis isit la ak kounye a, ki sa ki mal ak kòd nou an.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Yon lòt pratik nou genyen se pratik Tès Automatisation, ki pi souvan vini ak pratik CI. Yo mache men nan men.

Ki sa ki enpòtan yo konprann isit la? Li enpòtan pou w konprann ke tès nou yo diferan. Epi chak tès otomatik ki vize pou rezoud pwoblèm pwòp li yo. Nou gen, pou egzanp, tès inite ki pèmèt nou teste yon modil separeman, i.e. Ki jan li travay nan yon vakyòm? Sa bon.

Nou gen tou tès entegrasyon ki pèmèt nou konprann ki jan diferan modil entegre youn ak lòt. Li bon tou.

Nou ka gen tès automatisation UI ki pèmèt nou tcheke kòman travay ak UI a satisfè sèten kondisyon kliyan an fikse, elatriye.

Tès espesifik ou fè yo ka afekte konbyen fwa ou kouri yo. Tès inite yo anjeneral ekri kout ak ti. Epi yo ka lanse regilyèman.

Si nou ap pale de tès automatisation UI, Lè sa a, li bon si pwojè ou a piti. Tès automatisation UI ou yo ka pran yon ti tan ase. Men, anjeneral, yon tès automatisation UI se yon bagay ki pran plizyè èdtan sou yon gwo pwojè. Epi li bon si li nan kèk èdtan. Bagay la sèlman se ke pa gen okenn pwen nan kouri yo pou chak bati. Li fè sans pou kouri yo nan mitan lannwit. Men, lè tout moun te vin travay nan maten an: tou de tèsteur ak devlopè, yo te resevwa kèk kalite rapò ke nou te kouri ototest UI nan mitan lannwit ak te resevwa rezilta sa yo. Ak isit la, yon èdtan nan travay nan yon sèvè ki pral tcheke ke pwodwi ou a satisfè kèk kondisyon yo pral pi bon mache pase yon èdtan nan travay nan menm enjenyè QA a, menm si li se yon enjenyè QA Junior ki travay pou manje ak mèsi. Menm jan an tou, yon èdtan nan operasyon machin yo pral pi bon mache. Se poutèt sa li fè sans envesti nan li.

Mwen gen yon lòt pwojè ke mwen te ap travay sou. Nou te gen de semèn sprint sou pwojè sa a. Pwojè a te gwo, enpòtan pou sektè finansye a, epi yo pa t 'kapab fè yon erè. Epi apre yon sprint de semèn, sik devlopman te swiv pa yon pwosesis tès, ki te pran yon lòt 4 semèn. Eseye imajine echèl trajedi a. Nou ekri kòd pou de semèn, Lè sa a, nou fè li ala CodeFreeze, pake li nan yon nouvo vèsyon aplikasyon an, epi woule li soti nan tèsteur yo. Testatè yo teste li pou yon lòt 4 semèn, i.e. Pandan y ap teste li, nou gen tan pou nou prepare de lòt vèsyon pou yo. Sa a se yon ka vrèman tris.

Epi nou te di yo ke si ou vle vin pi pwodiktif, li fè sans pou ou aplike pratik Tès Otomatik, paske se sa ki fè ou mal isit la, kounye a.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Pratike deplwaman kontinyèl. Gwo, ou te fè bati. Sa deja bon. Kòd ou a konpile. Koulye a, li ta bon deplwaye sa a bati sou kèk anviwònman. Ann di nan yon anviwònman pou devlopè.

Poukisa li enpòtan? Premyèman, ou ka gade ki jan siksè ou genyen ak pwosesis deplwaman tèt li. Mwen te rankontre pwojè tankou sa a, lè mwen mande: "Ki jan ou deplwaye yon nouvo vèsyon aplikasyon an?", mesye yo di m ': "Nou rasanble li epi pake li nan yon achiv postal. Nou voye li bay admin la pa lapòs. Administratè a telechaje ak elaji achiv sa a. Epi tout biwo a kòmanse priye pou sèvè a pran nouvo vèsyon an."

Ann kòmanse ak yon bagay ki senp. Pou egzanp, yo bliye mete CSS nan achiv la oswa bliye chanje hashtag la nan non fichye java-script la. Epi lè nou fè yon demann nan sèvè a, navigatè a panse ke li deja gen fichye java-script sa a epi li deside pa telechaje li. Epi te gen yon ansyen vèsyon, yon bagay te manke. An jeneral, ka gen anpil pwoblèm. Se poutèt sa, pratik deplwaman kontinyèl pèmèt ou omwen teste sa ki ta rive si ou te pran yon imaj referans pwòp epi telechaje li nan yon nouvo anviwònman konplètman pwòp. Ou ka wè ki kote sa a mennen.

Epitou, lè ou entegre kòd youn ak lòt, i.e. ant kòmandman an, sa pèmèt ou wè tou ki jan li sanble sou UI a.

Youn nan pwoblèm ki rive kote yo itilize anpil vaniy java-script se ke de devlopè te deklare rapidman yon varyab ki gen menm non an nan objè fenèt la. Lè sa a, tou depann de chans ou. Ki moun ki dosye java-script rale deyò dezyèm pral recouvrir chanjman yo nan lòt la. Li trè eksitan tou. Ou antre: yon bagay mache pou yon moun, yon lòt pa mache pou yon lòt. Epi li "bèl bagay" lè li tout soti nan pwodiksyon an.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Pwochen pratik ke nou genyen se pratik Restore otomatik, sètadi retounen nan vèsyon anvan aplikasyon an.

Poukisa sa enpòtan pou devlopè yo? Genyen toujou moun ki sonje byen lwen, byen lwen ane 90 yo, lè òdinatè yo te gwo ak pwogram yo te piti. Ak sèl fason pou devlopman entènèt te atravè PHP. Se pa ke PHP se yon move lang, byenke li se.

Men, pwoblèm nan te diferan. Lè nou te deplwaye yon nouvo vèsyon sit php nou an, ki jan nou te deplwaye li? Pi souvan nou louvri Far Manager oswa yon lòt bagay. Epi telechaje dosye sa yo sou FTP. Epi nou toudenkou reyalize ke nou te gen kèk ti, ti ensèk, pou egzanp, nou bliye mete yon pwen-vir oswa bliye chanje modpas la pou baz done a, epi gen yon modpas pou baz done a, ki se sou lame lokal la. Epi nou deside byen vit konekte nan ftp epi edite dosye yo la. Sa a se jis dife! Sa a se sa ki te popilè nan ane 90 yo.

Men, si ou pa te gade kalandriye a, ane 90 yo te prèske 30 ane de sa. Koulye a, tout bagay ap pase yon ti jan diferan. Epi eseye imajine echèl trajedi a lè yo di ou: "Nou te deplwaye nan pwodiksyon, men yon bagay te mal pase la. Men login FTP ou ak modpas ou, konekte ak pwodiksyon epi byen vit ranje li la." Si ou se Chuck Norris, sa ap travay. Si ou pa, Lè sa a, ou riske ke si ou ranje yon sèl ensèk, ou pral fè plis 10. Sa a se jisteman poukisa pratik sa a nan woule tounen nan vèsyon anvan an pèmèt ou reyalize anpil.

Menm si yon bagay move yon jan kanmenm te antre nan prod yon kote, Lè sa a, li nan move, men se pa fatal. Ou ka retounen nan vèsyon anvan ou genyen an. Rele li yon backup, si li pi fasil yo wè li nan tèminoloji sa a. Ou ka retounen nan vèsyon anvan sa a, epi itilizatè yo ap toujou kapab travay ak pwodwi ou a, epi w ap gen ase tan tanpon. Ou ka avèk kalm, san prese, pran tout bagay sa yo epi teste li lokalman, ranje li, ak Lè sa a, telechaje yon nouvo vèsyon. Li vrèman fè sans pou fè sa.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Koulye a, an n eseye konbine yon jan kanmenm de pratik anvan yo ansanm. Nou pral jwenn yon twazyèm youn ki rele Release Management.

Lè nou pale sou deplwaman kontinyèl nan fòm klasik li yo, nou di ke nou dwe rale kòd ki soti nan kèk branch nan repozitwa a, konpile li epi deplwaye li. Li bon si nou gen menm anviwònman an. Si nou gen plizyè anviwònman, sa vle di ke nou dwe rale kòd la chak fwa, menm soti nan menm komèt la. Nou pral retire li chak fwa, nou pral bati li chak fwa epi nou pral deplwaye li nan yon nouvo anviwònman. Premyèman, sa a se tan, paske yo bati yon pwojè, si ou gen yon gwo e li soti nan ane 90 yo, Lè sa a, li ka pran plizyè èdtan.

Anplis, gen yon lòt tristès. Lè ou bati, menm sou menm machin nan, ou pral bati menm sous yo, ou toujou pa gen okenn garanti ke machin sa a nan menm eta a ke li te pandan dènye konstriksyon an.

Ann di yon moun te antre epi mete ajou DotNet pou ou oswa, okontrè, yon moun te deside efase yon bagay. Lè sa a, ou gen dissonance kognitif ki soti nan komèt sa a de semèn de sa nou te bati yon bati ak tout bagay te anfòm, men kounye a li sanble tankou menm machin nan, menm komèt la, menm kòd ke nou ap eseye bati, men li pa travay. . Ou pral fè fas ak sa a pou yon tan long epi li pa yon reyalite ke ou pral kalkile li. Omwen a, ou pral gate nè ou anpil.

Se poutèt sa, pratik Jesyon Release sijere entwodwi yon abstraksyon adisyonèl ki rele yon depo oswa yon galri oswa bibliyotèk. Ou ka rele li tou sa ou vle.

Lide prensipal la se ke le pli vit ke nou gen kèk kalite komite la, di, nan yon branch ke nou pare pou deplwaye nan diferan anviwònman nou yo, nou kolekte aplikasyon sa a nan komite sa a ak tout sa nou bezwen pou aplikasyon sa a, nou pake li. nan yon achiv postal epi sove li nan kèk depo serye. Ak nan depo sa a nou ka jwenn achiv postal sa a nenpòt ki lè.

Lè sa a, nou pran li epi otomatikman deplwaye li nan anviwònman an dev. Nou kous la, epi si tout bagay bon, Lè sa a, nou deplwaye nan etap la. Si tout se byen, Lè sa a, nou deplwaye achiv la menm nan pwodiksyon, binè yo menm, konpile egzakteman yon fwa.

Anplis de sa, lè nou gen yon galeri tankou sa a, li ede nou tou adrese risk yo ke nou te adrese sou dènye glisad la lè nou te pale de rollback nan vèsyon anvan an. Si ou aksidantèlman deplwaye yon bagay ki mal, ou ka toujou pran nenpòt lòt vèsyon anvan nan galri sa a epi deplwaye li nan anviwònman sa yo menm jan an. Sa a pèmèt ou fasilman tounen nan vèsyon anvan an si yon bagay ale mal.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Gen yon lòt gwo pratik. Ou menm ak mwen tout konprann ke lè nou retounen aplikasyon nou yo nan yon vèsyon anvan an, sa ka vle di ke nou bezwen tou enfrastrikti nan vèsyon anvan an.

Lè nou pale sou enfrastrikti vityèl, anpil moun panse ke sa a se yon bagay ke admins mete kanpe. Men, si ou bezwen, di, jwenn yon nouvo sèvè kote ou vle teste yon nouvo vèsyon aplikasyon w lan, Lè sa a, ou dwe ekri yon tikè bay administratè yo oswa devops yo. Devops pral pran 3 semèn pou sa. Epi apre 3 semèn yo pral di w ke nou enstale yon machin vityèl pou ou, ak yon nwayo, de gigabyte RAM ak yon sèvè Windows san DotNet. Ou di: "Men mwen te vle DotNet." Yo: "Ok, tounen nan 3 semèn."

Lide a se ke lè w itilize Enfrastrikti kòm pratik Kòd, ou ka trete enfrastrikti vityèl ou kòm jis yon lòt resous.

Petèt, si nenpòt nan nou ap devlope aplikasyon sou DotNet, ou ka tande pale sou yon bibliyotèk ki rele Entity Framework. Epi ou ka menm tande ke Entity Framework se youn nan apwòch yo ke Microsoft ap aktivman pouse. Pou travay ak yon baz done, sa a se yon apwòch ki rele Code First. Sa a se lè ou dekri nan kòd ki jan ou vle baz done ou a gade. Apre sa, ou deplwaye aplikasyon an. Li konekte ak baz done a, li menm li detèmine ki tab ki la ak ki tab ki pa, epi li kreye tout sa ou bezwen.

Ou ka fè menm bagay la ak enfrastrikti ou. Pa gen okenn diferans ant si ou bezwen yon baz done pou yon pwojè oswa si ou bezwen yon sèvè Windows pou yon pwojè. Se jis yon resous. Epi ou ka otomatize kreyasyon an nan resous sa a, ou ka otomatize konfigirasyon an nan resous sa a. An konsekans, chak fwa ou vle teste kèk nouvo konsèp, kèk nouvo apwòch, ou pa pral bezwen ekri yon tikè pou devops, ou ka senpleman deplwaye yon enfrastrikti izole pou tèt ou soti nan modèl ki pare, soti nan scripts pare yo epi aplike li. gen tout eksperyans ou yo. Ou ka efase sa a, jwenn kèk rezilta epi rapòte plis sou li.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Pratik kap vini an, ki egziste tou e ki enpòtan tou, men ke kèk moun itilize, se siveyans pèfòmans aplikasyon an.

Mwen te vle di yon sèl bagay sou siveyans pèfòmans aplikasyon an. Ki sa ki pi enpòtan nan pratik sa a? Sa a se sa ki siveyans pèfòmans aplikasyon an se apeprè menm jan ak reparasyon yon apatman. Sa a se pa yon eta final, li se yon pwosesis. Ou bezwen fè li regilyèman.

Nan yon bon fason, li ta bon pou fè siveyans pèfòmans aplikasyon sou prèske chak bati, byenke, jan ou konprann, sa a pa toujou posib. Men, nan yon minimòm, li bezwen yo dwe te pote soti pou chak lage.

Poukisa li enpòtan? Paske si ou toudenkou fè eksperyans yon gout nan pèfòmans, Lè sa a, ou bezwen klèman konprann poukisa. Si ekip ou a gen, di, sprint de semèn, Lè sa a, omwen yon fwa chak de semèn ou ta dwe deplwaye aplikasyon w lan nan kèk sèvè separe, kote ou gen yon processeur byen klè fiks, RAM, disk, elatriye epi kouri sa yo menm tès pèfòmans yo. . Ou jwenn rezilta a. Gade ki jan li te chanje soti nan Sprint anvan an.

Men, si ou jwenn ke drawdown la te desann sevè yon kote, sa pral vle di ke li te jis akòz chanjman ki te fèt nan de semèn ki sot pase yo. Sa a pral pèmèt ou idantifye ak ranje pwoblèm nan pi vit. Epi ankò, sa yo se apeprè menm mezi yo pa ki ou ka mezire ki jan siksè ou te fè li.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Pwochen pratik nou genyen se pratik Gestion Configuration. Gen anpil moun ki pran sa oserye. Men, kwè m ', sa a se aktyèlman yon bagay ki grav anpil.

Te gen yon istwa komik dènyèman. Mesye yo vin jwenn mwen epi yo di: "Ede nou fè yon odit sekirite aplikasyon nou an." Nou gade kòd la ansanm pou yon tan long, yo te di m 'sou aplikasyon an, te trase dyagram. Ak plis oswa mwens tout bagay te lojik, konprann, san danje, men te gen yon sèl MEN! Yo te gen dosye konfigirasyon nan kontwòl sous yo, ki gen ladan sa yo ki soti nan pwodiksyon ak baz done IP a, ak logins ak modpas pou konekte ak baz done sa yo, elatriye.

Apre sa, mwen di: "Mesye, oke, ou te fèmen anviwònman pwodiksyon ou ak yon firewall, men lefèt ke ou gen login ak modpas pou baz done pwodiksyon an dwa nan kontwòl sous la ak nenpòt pwomotè ka li li se deja yon gwo risk sekirite. . E kèlkeswa jan aplikasyon w lan sekirize nan yon pwen de vi kòd, si w kite l nan kontwòl sous, Lè sa a, ou p ap janm pase okenn odit nenpòt kote.” Se de sa m ap pale.

Jesyon konfigirasyon. Nou ka gen diferan configurations nan diferan environnements. Pou egzanp, nou ka gen diferan koneksyon ak modpas pou baz done pou QA, Demo, anviwònman pwodiksyon, elatriye.

Konfigirasyon sa a kapab tou otomatik. Li ta dwe toujou separe de aplikasyon an li menm. Poukisa? Paske ou te bati aplikasyon an yon fwa, ak Lè sa a, aplikasyon an pa pran swen si ou konekte ak sèvè a SQL atravè yon tèl ak tèl IP oswa tèl ak tèl IP, li ta dwe travay menm jan an. Se poutèt sa, si toudenkou youn nan nou toujou ap kòde kòd koneksyon an nan kòd la, Lè sa a, sonje ke mwen pral jwenn ou epi pini ou si ou jwenn tèt ou sou menm pwojè a avè m '. Sa a toujou mete nan yon konfigirasyon separe, pou egzanp, nan web.config.

Ak konfigirasyon sa a deja jere separeman, sa vle di sa a se egzakteman moman sa a lè yon pwomotè ak yon administratè ka vin chita nan menm chanm lan. Ak pwomotè a ka di: "Gade, isit la se binè yo nan aplikasyon mwen an. Yo travay. Aplikasyon an bezwen yon baz done pou travay. Isit la akote binè yo gen yon dosye. Nan fichye sa a, jaden sa a responsab pou konekte a, sa a se pou modpas la, sa a se pou IP la. Deplwaye li nenpòt kote." Epi li senp epi klè pou admin la. Li ka deplwaye li reyèlman nenpòt kote pa jere konfigirasyon sa a.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Ak dènye pratik ke mwen ta renmen pale sou se yon pratik ki trè, trè ki gen rapò ak nyaj. Epi li pote maksimòm efè si w ap travay nan nwaj la. Sa a se retire otomatik nan anviwònman ou.

Mwen konnen gen plizyè moun nan konferans sa a nan ekip mwen travay avèk yo. Ak tout ekip mwen travay avèk yo, nou itilize pratik sa a.

Poukisa? Natirèlman, li ta gwo si chak pwomotè te gen yon machin vityèl ki ta travay 24/7. Men, petèt sa a se nouvèl pou ou, petèt ou pa t 'peye atansyon, men pwomotè a tèt li pa travay 24/7. Yon pwomotè anjeneral travay 8 èdtan pa jou. Menm si li vin travay byen bonè, li gen yon gwo manje midi pandan ke li ale nan jimnastik la. Kite li 12 èdtan pa jou lè pwomotè a aktyèlman itilize resous sa yo. Dapre lejislasyon nou an, nou gen 5 jou sou 7 nan yon semèn ki konsidere kòm jou travay.

An konsekans, nan jou lasemèn machin sa a pa ta dwe travay 24 èdtan, men sèlman 12, ak nan wikenn machin sa a pa ta dwe travay ditou. Li ta sanble ke tout bagay se trè senp, men ki sa ki enpòtan yo di isit la? Lè w aplike pratik sa a senp sou orè debaz sa a, li pèmèt ou diminye pri pou kenbe anviwònman sa yo a 70%, sa vle di ou pran pri dev ou, QA, demo, anviwònman an epi divize li pa 3.

Kesyon an se, kisa pou fè ak rès lajan an? Pou egzanp, devlopè yo ta dwe achte ReSharper si yo pa deja. Oswa fè yon fèt bwason. Si ou te deja gen yon sèl anviwònman kote tou de dev ak QA te manje, epi se li, kounye a ou ka fè 3 diferan ki pral izole, epi moun pa pral entèfere youn ak lòt.

Pi bon pratik DevOps pou devlopè yo. Anton Boyko (2017)

Konsènan glise a ak mezi pèfòmans kontinyèl, ki jan nou ka konpare pèfòmans si nou te gen 1 dosye nan baz done a nan pwojè a, de mwa pita gen yon milyon? Ki jan yo konprann poukisa ak ki sa ki pwen nan mezire pèfòmans?

Sa a se yon bon kesyon, paske ou ta dwe toujou mezire pèfòmans sou menm resous yo. Sa vle di, ou woule nouvo kòd, ou mezire pèfòmans sou nouvo kòd la. Pou egzanp, ou bezwen teste diferan senaryo pèfòmans, an n di ou vle teste ki jan aplikasyon an fè sou yon chaj lejè, kote gen 1 itilizatè ak gwosè baz done a se 000 gigabyte. Ou mezire li epi ou jwenn nimewo yo. Apre sa, nou pran yon lòt senaryo. Pou egzanp, 5 itilizatè, gwosè baz done 5 teraocte. Nou te resevwa rezilta yo e nou sonje yo.

Ki sa ki enpòtan isit la? Bagay la enpòtan isit la se ke depann sou senaryo a, volim nan done, kantite itilizatè similtane, elatriye, ou ka kouri nan sèten limit. Pou egzanp, nan limit la nan yon kat rezo, oswa nan limit la nan yon kondwi difisil, oswa nan limit la nan kapasite processeur. Sa a se sa ki enpòtan pou ou konprann. Nan diferan senaryo ou kouri nan sèten limit. Epi ou bezwen konprann nimewo yo lè ou frape yo.

Èske nou pale de mezire pèfòmans nan yon anviwònman tès espesyal? Sa vle di, sa a se pa pwodiksyon?

Wi, sa a se pa pwodiksyon, sa a se yon anviwònman tès, ki se toujou menm bagay la pou ou ka konpare li ak mezi anvan yo.

Konprann mèsi!

Si pa gen kesyon, mwen panse ke nou ka fini. Mèsi!

Sous: www.habr.com

Add nouvo kòmantè