Programovanie

5 bežných nástrah CI / CD - a ako sa im vyhnúť

Devops môže byť jedným z najnebezpečnejších pojmov vo vývoji softvéru, ale väčšina z nás súhlasí s tým, že vďaka piatim činnostiam sa devops stáva tým, čím je: nepretržitá integrácia, nepretržité doručovanie, cloudová infraštruktúra, automatizácia testov a správa konfigurácie. Ak robíte týchto päť vecí, robíte devops. Je zrejmé, že všetkých päť je dôležitých pre správne riešenie, ale je príliš ľahké sa mýliť. Najmä nepretržitá integrácia a nepretržité dodávanie (CI / CD) môžu byť najťažšími postupmi devopsov na zvládnutie.

Kontinuálna integrácia (CI) je proces, pri ktorom vývojári a testeri spoločne overujú nový kód. Vývojári tradične písali kód a integrovali ho raz mesačne na testovanie. To bolo neefektívne - chyba v kóde spred štyroch týždňov by mohla vývojárov prinútiť k revízii kódu napísaného pred týždňom. Na prekonanie tohto problému závisí CI od automatizácie, ktorá umožní nepretržitú integráciu a testovanie kódu. Scrum tímy používajúce CI sa zaväzujú kódovať minimálne každý deň, zatiaľ čo väčšina z nich sa zaväzuje používať kód pre každú zavedenú zmenu.

Kontinuálne doručovanie (CD) je proces neustáleho vytvárania uvoľniteľných artefaktov. Niektoré spoločnosti vydávajú používateľom jedenkrát alebo dokonca viackrát denne, zatiaľ čo iné vydávajú softvér pomalším tempom z trhových dôvodov. Tak či onak, schopnosť uvoľniť sa testuje nepretržite. Kontinuálne nasadenie je možné vďaka cloudovým prostrediam. Servery sú nastavené tak, že ich môžete nasadiť do výroby bez vypínania a manuálnej aktualizácie serverov.

CI / CD je teda proces pre neustály vývoj, testovanie a dodávanie nového kódu. Niektoré spoločnosti ako Facebook a Netflix používajú CI / CD na dokončenie 10 alebo viac vydaní týždenne. Ostatné spoločnosti sa snažia dosiahnuť toto tempo, pretože podľahnú jednej alebo viacerým z piatich nástrah, o ktorých si ešte poviem.

Úskalie CI / CD # 1: Najskôr automatizujte nesprávne procesy

Táto pasca má tendenciu štrajkovať v organizáciách, ktoré prechádzajú od vývoja vodopádu k vývoju devopov. Nové organizácie majú výhodu implementácie CI / CD od nuly. Existujúce spoločnosti musia postupovať postupne od manuálneho k vysoko automatizovanému vývoju. Celý prechod môže trvať niekoľko mesiacov, čo znamená, že pri prijímaní CI / CD musíte byť iteratívni.

Keď sa opýtate: „Je to teraz potrebné automatizovať?“ vykonajte nasledujúci kontrolný zoznam:

  1. Ako často sa postup alebo scenár opakuje?
  2. Aký dlhý je proces?
  3. Akí ľudia a zdroje závisia od procesu? Spôsobujú oneskorenie CI / CD?
  4. Je proces náchylný na chyby, ak nie je automatizovaný?
  5. Aká je nevyhnutnosť automatizácie procesu?

Pomocou tohto kontrolného zoznamu môžete určiť prioritu krokov pri implementácii CI / CD. Najdôležitejšie je automatizovať proces kompilácie kódu. V ideálnom prípade integrujete kód niekoľkokrát za deň (1). Manuálne proces trvá niekoľko minút až pár hodín (2). To zastaví výstup, kým kompilátor nedokončí úlohu (3). Je tiež náchylný na ľudské chyby (4), a pretože CI / CD je sen bez automatickej integrácie, je to nevyhnutné (5).

Rovnaký kontrolný zoznam môžeme spustiť aj pri testovaní. Pri prechode na CI / CD by vás mohlo zaujímať: Mali by sme najskôr automatizovať funkčné testovanie alebo testovanie používateľského rozhrania? Obidve sa budú opakovať najmenej raz denne (1). U stredne veľkej aplikácie môžu oba trvať dve až tri hodiny (2). Zahŕňajú však viac závislostí (3). Ak automatizujete funkčné testovanie, možno nebudete musieť často aktualizovať automatizačný skript. UI sa na druhej strane často mení, a preto vyžaduje časté zmeny skriptov. Aj keď sú obidve náchylné na chyby (4), mali by ste pred testovaním používateľského rozhrania uprednostniť funkčné testovanie, aby ste čo najlepšie využili svoje zdroje (5).

Urobme to ešte raz s procesom nastavenia prostredí. Tento scenár sa opakuje iba často, ak ste na vysokej škole alebo máte silnú poruchu (1). Je to pomerne časovo náročný proces, ktorý môže trvať niekoľko hodín, ak nie dní (2). Noví členovia tímu nemôžu robiť nič užitočné bez prostredia, takže zjavne existuje závislosť a oneskorenie (3). Nepovedal by som, že proces je náchylný na chyby (4), takže je stále urgentný (5)? Prikláňam sa k áno, ale najskôr by som uprednostnil integráciu a funkčné testovanie.

Neexistuje nič také ako nadmerná automatizácia. Keby ste mali neobmedzené zdroje, automatizovali by ste všetko možné. To znamená, vy nemôže dosiahnuť úplnú automatizáciu testov. Niekedy môžete úlohy rozdeliť na menšie segmenty a automatizovať ich v opravných aktualizáciách. Niekedy by ste mali jednoducho proces podrobne zdokumentovať a vykonať manuálne.

Úskalie CI / CD č. 2: Mätúce neustále nasadenie pre nepretržité doručovanie

Nepretržité nasadenie je koncept, že každá zmena vykonaná v kódovej základni bude nasadená takmer okamžite do výroby, ak budú výsledky ropovodu úspešné. Pre väčšinu organizácií je to hrôzostrašné, pretože rýchle zmeny produktov môžu vydesiť používateľov.

Spoločnosti sa domnievajú, že ak nepraktizujú nepretržité nasadenie, nerobia disky CD. Nedokážu rozlíšiť medzi nepretržitým nasadením a nepretržitým doručovaním.

Nepretržité doručovanie je koncept, ktorý pri každej zmene kódovej základne prechádza potrubím až do bodu nasadenia do neprodukčných prostredí. Tím vyhľadá a vyrieši problémy okamžite, nie neskôr, keď plánuje uvoľniť kódovú základňu.

Základňa kódu je vždy na takej kvalitatívnej úrovni, ktorá je bezpečná pre vydanie. Kedy uvoľnenie kódovej základne do výroby je obchodné rozhodnutie.

Zatiaľ čo nepretržité nasadenie znepokojuje väčšinu organizácií, neustále doručovanie v nich rezonuje. Nepretržité dodávanie im dáva kontrolu nad uvádzaním produktu na trh, funkčnosťou a rizikovými faktormi. Je čas na testovanie verzie alfa, pre zákazníkov verzie beta, pre prvých používateľov atď.

Úskalie CI / CD č. 3: Nedostatok zmysluplných dashboardov a metrík

V implementáciách CI / CD môže tím pre skrumáže vytvoriť dashboard skôr, ako členovia vedia, čo musia sledovať. Výsledkom je, že tím prepadol logickému omylu: „Toto sú metriky, ktoré máme, takže musia byť dôležité.“ Namiesto toho vykonajte progresívne hodnotenie predtým návrh palubnej dosky.

Rôzni členovia IT organizácie a dokonca aj rôzni členovia skrumážneho tímu majú rôzne priority. Napríklad ľudia v sieťovom operačnom centre (NOC) milujú červené, žlté a zelené indikátory. Takéto riadiace panely semaforov umožňujú pracovníkom NOC rozlíšiť problémy bez čítania hustého textu alebo zdanenia ich analytických schopností. Semafory pomáhajú spravovať stovky serverov.

Možno vás bude lákať použiť riadiaci panel semaforov aj pre CI / CD. Zelená, sme na dobrej ceste. Žltá, sme mimo trať, ale máme plán, ako to vyriešiť. Červené, sme mimo cesty a pravdepodobne budeme musieť zmeniť naše ciele.

Ten dashboard je pravdepodobne užitočný pre majstra skrumáží, ale čo VP pre vývoj alebo CTO? Ak má skrumážny tím pred dvojtýždňovým šprintom 350 hodín práce a jeho 10 členov zodpovedá za každý 35 hodín, získal by zodpovedajúci počet príbehových bodov. Vyšší manažment by sa mohol menej zaujímať o stav príbehových bodov a bol by zvedavejší na mieru „vyčerpania“: rýchlosť dokončenia úlohy. Nosia členovia tímu svoje bremená? Ako rýchlo? Zlepšujú sa časom?

Miera vyťaženia môže byť, bohužiaľ, zavádzajúca, ak rôzne zúčastnené strany nerozumejú dohodnutým zvykom tímu pre skrumáže. Niektoré tímy spália body hneď, ako to bude možné. Iní čakajú až do konca šprintu, aby spálili otvorené body. Informačný panel by to mal brať do úvahy.

Ak dokážete posúdiť, aké údaje všetci chcú, a vytvoriť štandardný príbeh o tom, čo tieto údaje znamenajú, môžete navrhnúť užitočný informačný panel. Nenechajte sa však posadnúť hmotou na úkor vzhľadu. Opýtajte sa, ako to chcú zúčastnené strany. Boli by najlepšie grafy, text alebo čísla?

Toto sú úvahy, ktoré je potrebné preskúmať pri postupnom hodnotení. Ilustrujú, aké zložité je vyrobiť užitočný ovládací panel CI / CD - a urobiť všetkých šťastnými. Najhlasnejší člen tímu tento proces príliš často unesie a ostatní sa cítia frustrovaní, že informačný panel spĺňa preferencie iba jednej osoby. Vypočujte si všetkých.

Úskalie CI / CD č. 4: Nedostatok koordinácie medzi nepretržitou integráciou a nepretržitým dodávaním

Táto nástraha nás vracia k našej konsenzuálnej definícii devops, ktorá si myslí, že kontinuálna integrácia a nepretržité dodávanie sú dve rôzne položky. CI krmiva CD. Implementácia slušného nepretržitého integračného potrubia a úplného systému nepretržitého doručovania trvá mesiace a vyžaduje spoluprácu. Zabezpečenie kvality, tím vývojárov, technici operácií, majstri skrumáže - všetci musia prispieť. Asi najnáročnejším aspektom CI / CD je tento ľudský faktor, než akákoľvek technická výzva, o ktorej sme hovorili. Rovnako ako nemôžete naprogramovať zdravý vzťah medzi dvoma ľuďmi, nemôžete automatizovať spoluprácu a komunikáciu.

Na stanovenie tejto úrovne koordinácie porovnajte svoj proces CI / CD s najlepšími v odbore. Spoločnosti ako Netflix môžu dokončiť integráciu, testovanie a dodanie v priebehu dvoch až troch hodín. Zaviedli systém, ktorý bez nerozhodnosti a diskusie odovzdáva kód z ruky do ruky. Nie, nie je to stopercentne automatizované, pretože to je pri súčasnej technológii nemožné.

Úskalie CI / CD č. 5: Vyrovnanie frekvencie bežiacich úloh nepretržitej integrácie a využívania zdrojov

Úlohy súvislej integrácie sa majú spúšťať pri každej zmene, ktorá je zavedená v kóde. Úspešné úlohy umožňujú zmenám prejsť, kým zlyhania zmeny odmietnu. Toto povzbudzuje vývojárov, aby sa prihlásili v menších častiach kódu a spustili viac zostavení za deň. Zbytočné pracovné miesta na nepretržitú integráciu však spotrebúvajú zdroje, čo je zbytočné míňanie času a peňazí.

Pretože tento proces vyžaduje veľké využitie zdrojov (CPU, výkon, čas), softvér by sa mal rozdeliť na menšie súčasti, aby sa vytvorili rýchlejšie fungujúce kanály. Alebo by úlohy kontinuálnej integrácie mali byť navrhnuté tak, aby dávkové registrácie, ktoré sú najskôr testované lokálne. Cieľom je nájsť rovnováhu medzi frekvenciou vykonávania úloh súvislej integrácie a využívaním zdrojov.

Cieľ majte na očiach

Keď sa nachádzame v úskaliach CI / CD - vrátane celej ich ezoterickej terminológie - je ľahké stratiť zo zreteľa prečo toto je dôležité. CI / CD je nakoniec nevyhnutný, pretože spĺňa obchodné ciele.

Vedúci pracovníci v oblasti technológií vedia, že neustály vývoj, rýchle opravy a kvalitné výsledky vytvárajú a udržujú si zákazníkov. Vedia, že neúspešné vydanie pozýva na recenzie App Store bludgeon, a opätovné získanie vysokých recenzií je ťažšie ako ich udržanie. Devops môže vášmu tímu poskytnúť lepšiu pracovnú skúsenosť, ale to je dôvod, prečo spoločnosti Devops implementujú.

Jednoducho povedané, úskalia CI / CD stojí za preskúmanie, pretože v stávke sú miliardy dolárov. Aj keď vám navrhujem, aby ste na svoj hlavný panel CI / CD nepridali burzový lístok alebo sledovač recenzií App Store, naliehavo vás žiadam, aby ste o tom vedeli. Veľa závisí od podrobností CI / CD.

Zubin Irani je spoluzakladateľom a generálnym riaditeľom spoločnosti cPrime, komplexnej poradenskej služby, ktorá implementuje svižné transformácie a prináša svižné riešenia pre viac ako 50 spoločností z rebríčka Fortune 100 a mnohých najväčších zamestnávateľov v Silicon Valley.

Nové technologické fórum poskytuje miesto na preskúmanie a diskusiu o vznikajúcich podnikových technológiách v nebývalej hĺbke a šírke. Výber je subjektívny, založený na našom výbere technológií, ktoré považujeme za dôležité a pre čitateľov najväčší záujem. neprijíma marketingové záruky na zverejnenie a vyhradzuje si právo upravovať všetok prispievaný obsah. Všetky otázky posielajte na adresu [email protected].

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