Programiranje

5 pogostih pasti CI / CD - in kako se jim izogniti

Devops so lahko eden najbolj mrzlih izrazov pri razvoju programske opreme, vendar se večina od nas strinja, da pet dejavnosti omogoča, da to postane: nenehna integracija, neprekinjena dobava, oblačna infrastruktura, avtomatizacija preskusov in upravljanje konfiguracije. Če naredite teh pet stvari, naredite devops. Jasno je, da je vseh pet pomembnih, da bi prišli prav, a vse preveč enostavno, da bi se zmotili. Neprekinjena integracija in neprekinjena dostava (CI / CD) sta lahko najtežja poteza pri obvladovanju.

Neprekinjena integracija (CI) je postopek, v katerem razvijalci in preizkuševalci skupaj potrjujejo novo kodo. Tradicionalno so razvijalci pisali kodo in jo enkrat na mesec integrirali za testiranje. To je bilo neučinkovito - napaka v kodi izpred štirih tednov bi lahko razvijalce prisilila k reviziji kode, napisane pred enim tednom. Da bi rešili to težavo, je CI odvisen od avtomatizacije, da neprekinjeno integrira in testira kodo. Scrum ekipe, ki vsaj vsak dan uporabljajo kodo za obvezovanje CI, večina pa jih za vsako uvedeno spremembo prevzame kodo.

Neprekinjena dostava (CD) je postopek nenehnega ustvarjanja artefaktov, ki jih je mogoče sprostiti. Nekatera podjetja izdajo uporabnikom enkrat ali celo večkrat na dan, druga pa zaradi tržnih razlogov sproščajo programsko opremo počasneje. Kakor koli že, sposobnost sproščanja se neprestano preizkuša. Neprekinjeno uvajanje je mogoče zaradi oblačnih okolij. Strežniki so nastavljeni tako, da jih lahko namestite v produkcijo brez zaustavitve in ročnega posodabljanja strežnikov.

Tako je CI / CD postopek za nenehen razvoj, testiranje in dostavo nove kode. Nekatera podjetja, kot sta Facebook in Netflix, uporabljajo CI / CD za dokončanje 10 ali več izdaj na teden. Druga podjetja se trudijo doseči to hitrost, ker podležejo eni ali več od petih pasti, o katerih bom razpravljala naprej.

Zamka CI / CD # 1: Najprej avtomatizirajte napačne procese

Ta past ponavadi udari organizacije, ki se od razvoja slapov preusmerijo na devops. Prednost novih organizacij je, da CI / CD uvedejo od začetka. Obstoječa podjetja morajo postopoma prehajati od ročnega do visoko avtomatiziranega razvoja. Popoln prehod lahko traja več mesecev, kar pomeni, da morate biti iterativni pri sprejemanju CI / CD.

Ko vprašate: "Ali je to treba zdaj avtomatizirati?" zaženite naslednji kontrolni seznam:

  1. Kako pogosto se postopek ali scenarij ponovi?
  2. Kako dolg je postopek?
  3. Kateri ljudje in odvisnosti od virov so vključeni v postopek? Ali povzročajo zamude pri CI / CD?
  4. Ali je postopek nagnjen k napakam, če ni avtomatiziran?
  5. Kakšna je nujnost avtomatizacije postopka?

S tem kontrolnim seznamom lahko prednostno določite korake pri izvedbi CI / CD. V prvi vrsti avtomatizirajte postopek za sestavljanje kode. V idealnem primeru boste kodo integrirali večkrat na dan (1). Ročno postopek traja nekaj minut do nekaj ur (2). To zaustavi izhod, dokler prevajalnik ne konča naloge (3). Dovzetna je tudi za človeške napake (4) in ker je CI / CD cev sanje brez avtomatizirane integracije, je to nujno (5).

Na preizkusu lahko zaženemo isti kontrolni seznam. Ob prehodu na CI / CD se boste morda vprašali: Ali bi morali najprej avtomatizirati funkcionalno testiranje ali testiranje uporabniškega vmesnika? Oboje se bo ponovilo vsaj enkrat na dan (1). Za srednje veliko aplikacijo lahko trajata dve do tri ure (2). Vključujejo pa več odvisnosti (3). Če avtomatizirate funkcionalno testiranje, vam morda ne bo treba pogosto posodabljati skripta za avtomatizacijo. Uporabniški vmesnik pa se pogosto spreminja in zato zahteva pogoste spremembe skriptov. Čeprav sta oba nagnjena k napakam (4), morate pred testiranjem uporabniškega vmesnika dati prednost funkcionalnemu testiranju, da najbolje izkoristite svoje vire (5).

Naredimo to še enkrat s postopkom postavljanja okolij. Ta scenarij se pogosto ponovi le, če ste pri zaposlovanju ali če imate velike težave (1). To je precej dolgotrajen postopek, ki lahko traja več ur, če ne celo dni (2). Novi člani ekipe ne morejo storiti ničesar koristnega brez okolij, zato očitno obstaja odvisnost in zamuda (3). Ne bi rekel, da je postopek nagnjen k napakam (4), je torej še vedno nujen (5)? Nagibam se k da, vendar bi vseeno najprej dal prednost integraciji in funkcionalnemu testiranju.

Pretiranega avtomatiziranja ni. Če bi imeli neomejene vire, bi avtomatizirali vse mogoče. Se pravi, ti ne more doseči popolno avtomatizacijo preskusov. Včasih lahko razdelite naloge na manjše segmente in avtomatizirate v popravkih. Včasih bi morali preprosto podrobno dokumentirati postopek in ga izvesti ročno.

Zamka CI / CD # 2: Zmedeno neprekinjeno uvajanje za neprekinjeno dostavo

Neprekinjeno uvajanje je koncept, da bo vsaka sprememba v osnovi kode skoraj takoj uporabljena za proizvodnjo, če bodo rezultati cevovoda uspešni. To je za večino organizacij grozljivo, ker lahko hitre spremembe izdelkov prestrašijo uporabnike.

Podjetja verjamejo, da če ne izvajajo neprekinjene uvedbe, ne delajo CD-jev. Ne ločijo med neprekinjeno uvajanjem in neprekinjeno dostavo.

Neprekinjena dostava je koncept, da gre vsaka sprememba osnove kode skozi cevovod do točke, ko se uvede v neprodukcijska okolja. Skupina težave najde in obravnava takoj, najpozneje takrat, ko namerava izdati osnovo za kodo.

Osnova kode je vedno na ravni kakovosti, ki je varna za sprostitev. Kdaj sprostitev osnove kode v proizvodnjo je poslovna odločitev.

Medtem ko neprekinjeno uvajanje vznemirja večino organizacij, jih neprekinjena dostava odmeva. Nenehna dostava jim daje nadzor nad uvajanjem izdelka, njegovo funkcionalnostjo in dejavniki tveganja. Obstaja čas za testiranje alfa, za beta stranke, za zgodnje uporabnike itd.

Zamka CI / CD # 3: Pomanjkanje pomembnih nadzornih plošč in meritev

Pri izvedbah CI / CD lahko ekipa za scrum ustvari nadzorno ploščo, preden člani vedo, kaj morajo slediti. Kot rezultat, ekipa postane žrtev logične zmote: "To so meritve, ki jih imamo, zato morajo biti pomembne." Namesto tega izvedite postopno ocenjevanje prej oblikovanje armaturne plošče.

Različni člani informacijske organizacije in celo različni člani scrum ekipe imajo različne prednostne naloge. Ljudje v omrežnem operacijskem centru (NOC) imajo na primer radi rdeče, rumene in zelene indikatorje. Takšne nadzorne plošče na semaforju omogočajo osebju NOC, da prepozna težave, ne da bi prebralo gosto besedilo ali obdavčilo svoje analitične sposobnosti. S semaforji lahko na stotine strežnikov postanemo obvladljivi.

Morda vas bo zamikalo, da bi tudi za CI / CD uporabili nadzorno ploščo na semaforju. Green, smo na pravi poti. Rumena, nismo v tiru, vendar imamo načrt, da to rešimo. Rdeči, nismo na pravi poti in verjetno bomo morali spremeniti cilje.

Ta nadzorna plošča je verjetno koristna za scrum mojstra, kaj pa podpredsednik za razvoj ali tehnični direktor? Če ima pred dvotedenskim sprintom pred nami 350 ur dela in njenih 10 članov odgovarja po 35 ur, bi prejeli ustrezno število zgodb. Zgornje vodstvo bi lahko manj zanimalo stanje zgodb in bolj radovedno glede stopnje "izgorelosti": hitrosti dokončanja naloge. Ali člani ekipe nosijo svoje tovore? Kako hitro? Se sčasoma izboljšujejo?

Na žalost bi lahko bile stopnje zaostankov zavajajoče, če različne zainteresirane strani ne razumejo dogovorjenih navad skupine za skrum. Nekatere ekipe zgorejo točke že zgodaj. Drugi počakajo do konca šprinta, da požgejo odprte točke. To bi morala upoštevati tudi armaturna plošča.

Če lahko ocenite, katere podatke si vsi želijo, in vzpostavite standardno pripoved o tem, kaj ti podatki pomenijo, potem lahko oblikujete uporabno nadzorno ploščo. Ne obsedite pa snovi na račun videza. Vprašajte, kako zainteresirane strani želijo, da je videti. Bi bili grafi, besedilo ali številke najboljši?

To je treba upoštevati pri postopni oceni. Ponazarjajo, kako zapleteno je narediti uporabno nadzorno ploščo za CI / CD in osrečiti vse. Pogosto najbolj glasen član ekipe ugrabi postopek, drugi pa so razočarani, ker armaturna plošča ustreza samo željam ene osebe. Prisluhnite vsem.

Zamka CI / CD # 4: Pomanjkanje usklajevanja med nenehno integracijo in nenehnim izvajanjem

Ta past nas vrne k naši soglasni opredelitvi devopsa, ki pravi, da sta nenehno povezovanje in nenehna doba dva različna elementa. CI viri CD. Izvajanje dostojnega cevovoda za neprekinjeno integracijo in popolnega sistema stalne dostave traja mesece in zahteva sodelovanje. Zagotavljanje kakovosti, ekipa devopsov, operativni inženirji, scrum mojstri - vsi morajo prispevati. Morda je najtežji vidik CI / CD ta človeški dejavnik in ne kakršen koli tehnični izziv, o katerem smo razpravljali. Tako kot ne morete programirati zdravega odnosa med dvema osebama, ne morete avtomatizirati sodelovanja in komunikacije.

Če želite oceniti to raven usklajevanja, primerjajte svoj postopek CI / CD z najboljšimi v poslu. Podjetja, kot je Netflix, lahko integracijo, testiranje in dostavo dokončajo v dveh do treh urah. Vzpostavili so sistem, ki prenaša kodo iz rok v roke brez neodločnosti in razprav. Ne, ni 100-odstotno avtomatiziran, ker je to s trenutno tehnologijo nemogoče.

Pasja CI / CD # 5: Uravnavanje pogostosti izvajanja neprekinjenih integracijskih del in izkoriščenosti virov

Neprekinjena integracijska opravila naj bi se sprožila za vsako spremembo, ki jo vnesemo v kodo. Uspešna opravila omogočajo spremembe, medtem ko jih napake zavrnejo. To spodbuja razvijalce, da preverijo manjše dele kode in sprožijo več graditev v enem dnevu. Vendar nepotrebna delovna mesta za neprekinjeno integracijo porabljajo vire, kar zapravlja čas in denar.

Ker ta postopek vključuje veliko izkoriščenosti virov (CPU, moč, čas), je treba programsko opremo razdeliti na manjše komponente, da se ustvarijo hitreje delujoči cevovodi. Ali pa morajo biti naloge za neprekinjeno integracijo zasnovane tako, da bodo serijsko prijavile, ki se najprej preizkusijo lokalno. Cilj je najti ravnovesje med pogostostjo izvajanja neprekinjenih integracijskih del in porabo virov.

Cilj naj bo na vidiku

Ko kopljemo v pasti CI / CD - skupaj z vso njegovo ezoterično terminologijo - je enostavno izgubiti pogled zakaj to je pomembno. Navsezadnje je CI / CD bistvenega pomena, ker izpolnjuje poslovne cilje.

Vodilni v tehnologiji vedo, da stalen razvoj, hitri popravki in kakovostni rezultati ustvarjajo in zadržujejo stranke. Vedo, da neuspešna izdaja vabi trdo na ocene App Store in pridobitev visokih ocen je težja kot zadrževanje. Devops lahko ustvarijo boljše delovne izkušnje za vašo ekipo, vendar podjetja zato ne izvajajo devopsa.

Preprosto povedano, pasti CI / CD je vredno pregledati, ker gre za milijarde dolarjev. Čeprav ne predlagam, da na nadzorno ploščo CI / CD dodate oznako zalog ali sledilnik pregledov App Store, vas pozivam, da tega še naprej zavedate. Veliko je odvisno od podrobnosti CI / CD.

Zubin Irani je soustanovitelj in izvršni direktor podjetja cPrime, svetovalnega podjetja s polnimi storitvami, ki izvaja agilne preobrazbe in ponuja agilne rešitve za več kot 50 podjetij Fortune 100 in številne največje delodajalce v Silicijevi dolini.

Forum New Tech ponuja prizorišče za raziskovanje in razpravo o nastajajoči podjetniški tehnologiji v globini in širini brez primere. Izbor je subjektiven in temelji na našem izboru tehnologij, za katere menimo, da so pomembne in najbolj zanimajo bralce. ne sprejema tržnih zavarovanj za objavo in si pridržuje pravico do urejanja celotne prispevane vsebine. Vsa vprašanja pošljite na [email protected].

$config[zx-auto] not found$config[zx-overlay] not found