Kontinuální doručování (CD) je přístup k produkci softwaru, při kterém týmy produkují software v krátkých cyklech, aby jej bylo možné spolehlivě vydat kdykoli. Jeho základem je vytvářet, testovat, a vydávat software rychleji a častěji. Tento přístup pomáhá snižovat náklady, čas, a rizika spojená s doručováním změn tím, že umožňuje menší (inkrementální) aktualizace produkčních aplikací. Pro kontinuální doručování je důležitý přímočarý a opakovatelný proces nasazování.

Principy Podle Neala Forda je kontinuální doručování založeno na včasném řešení obtížných úkolů, podpoře automatizace a rychlém odhalování problémů (princip ).

Naprostou nezbytností pro kontinuální doručování je fungující deployment pipeline – sada validací, kterými musí každý kus softwaru projít na své cestě k vydání. Při každé změně odevzdané do repozitáře je kód přeložen a zabalen buildovacím serverem a následně testován různými technikami (včetně případného manuálního testování), aby bylo možné povolit jeho vydání.

Vývojáři, kteří jsou uvyklí na dlouhé vývojové cykly, budou pravděpodobně muset při práci v prostředí CD změnit své myšlení. Protože každá změna kódu může být kdykoli uvolněna pro zákazníky, mohou být pro včasné odevzdání kódu užitečné vzory jako je např. přepínání vlastností, pro vypnutí vlastností, které zatím nejsou připravené pro použití koncovými uživateli. Použití NoSQL může odstraňovat krok migrace dat a změn schématu, což jsou často manuální kroky nebo výjimky v pracovním postupu kontinuálního doručování. V kontinuálním doručování nejsou zastaralé ani další techniky užitečné pro izolovaný vývoj kódu, jako je např. větvení kódu. Musí však být přizpůsobeny, aby vyhovovaly principům CD – například vytváření několika dlouhotrvajících větví kódu se může ukázat nepraktické, protože artefakt vhodný k vydání musí být vytvořen na počátku CD procesu z jediné kódové větve, pokud má projít všemi fázemi pipeline.

Deployment pipeline náhled|640px Kontinuální doručování je umožněno použitím deployment pipeline, která má trojí účel: viditelnost, zpětnou vazbu a kontinuální nasazování. Viditelnost – všechny aspekty systému doručování včetně buildu, nasazování, testování a vydávání jsou viditelné pro všechny členy týmu, což podporuje spolupráci. Zpětná vazba – členové týmu se musí dozvídat o problémech co nejdříve, aby je mohli co nejrychleji odstranit. Průběžně nasazování – prostřednictvím plně automatizovaného procesu je možné nasadit a vydat jakoukoli verzi softwaru do jakéhokoli prostředí.

Podle Yana Cuie by v případě bezserverového prostředí měly být prostředky s krátkodobou životností drženy současně a měly by mít vlastní deployment pipeline, aby bylo dosaženo vysoké soudržnosti. Sdílené prostředky, které mají dlouhou dobu roztočení a přistávací zónu, by však měly mít své vlastní zvláštní repozitář, deployment pipeline a zásobník.

Typy nástrojů Kontinuální doručování bere automatizace z zdroj kontrola/kontrolovat všechno způsob pomocí/skrz produkce. Existují různé nástroje, které pomáhají uskutečnit všechny nebo vybrané časti tohoto procesu. Tyto nástroje jsou část deploymment pipeline který obsahuje kontinuální doručování. K nástrojům, které provádějí různé části procesu patří: průběžná integrace, automatizace vydání aplikace, automatizace sestavování programu, řízení životního cyklu aplikace.

Architektura kontinuálního doručování Pro efektivní provádění kontinuálního doručování musí softwarové aplikace splňovat sadu architektonicky významných požadavků (ASRs) jako je např. nasaditelnost, modifikovatelnost a testovatelnost. Tyto ASRs vyžaduje vysoký priorita a nemůže být traded off lehce.

Architektura pro kontinuální doručování často využívá mikroslužby. Použití mikroslužeb může zvyšovat nasaditelnost a modifikovatelnost softwarového systému. Mezi pozorovaná zlepšení v oblasti nasazení patří: nezávislost na nasazení, kratší trvání nasazování, jednodušší postupy nasazování a nulové prostoje při nasazování. Pozorovaná zlepšení modifikovatelnosti zahrnují: kratší trvání cyklu pro malé inkrementální funkční změny, jednodušší změny výběru technologie, inkrementální změny atributů kvality a jednodušší aktualizace jazyka a knihoven.

Implementace a použití Kontinuální doručování zpopularizovala kniha, kterou napsali Jez Humble a David Farley (2010); od jejího napsání se však kontinuální doručování dále vyvíjelo a má rozvinutější význam. V současnosti společnosti implementují osvědčené principy kontinuálního doručování. Stále však zůstává rozdíl mezi různými obory, například lékařstvím a webem, který ovlivňuje implementaci a používání. K dobře známým společnostem, které používají tento přístup, patří Yahoo!, Amazon, Facebook, Google, Paddy Power a Wells Fargo.

Výhody a překážky K výhodám kontinuálního doručování patří:

Zkrácení doby pro uvedení na trh: Kontinuální doručování umožňuje producentovi rychleji poskytovat obchodní hodnotu, která je součástí nových verzí softwaru. Tato schopnost pomáhá výrobci zachovat náskok před konkurencí. Vytváření správného produktu: Časté vydávání umožňuje vývojovým týmům získávat rychleji zpětnou vazbu od uživatelů. Díky tomu se mohou zabývat pouze užitečnými vlastnostmi. Pokud se zjistí, že určitá funkce není užitečná, nebude se vynakládat žádné úsilí na její realizaci. To pomáhá vytvářet takový produkt, jaký zákazník skutečně požaduje. Zvýšení produktivity a efektivity: Významné úspory času pro vývojáře, testery, provozních inženýrů, atd. se dosahuje zavedením automatizace. Spolehlivé vydání: Rizika souvisejících s vydání se výrazně snížila, a proces vydání se stal spolehlivějším. Díky kontinuálnímu doručování jsou proces nasazování a skripty opakovaně testovány před nasazením do produkce. Většina chyb v procesu nasazení a skriptech už byla objevena. S častějšími vydáními se počet změn kódu v každém vydání snižuje. To usnadňuje hledání a opravu problémů a zkracuje dobu, po níž se projevují. Zlepšení kvality produktu: výrazně se snížil počet otevřených chyb a produkčních incidentů. Zlepšení spokojenosti zákazníka: Je dosaženo vyšší úrovně spokojenosti zákazníka.

Byly také zkoumány překážky: Preference zákazníků: někteří zákazníci si nepřejí časté aktualizace svých systémů. Oborová omezení: V některých oborech, jako jsou telekomunikace, lékařství, letectví, železniční doprava a těžký průmysl, vyžadují předpisy testování nových verzí u zákazníka nebo dokonce přímo na místě. Nedostatek automatizace testování: často vede k nedostatku důvěry vývojářů a může bránit používání kontinuálního doručování. Rozdíly v prostředí: Různá prostředí používaná při vývoji, testování a produkci mohou vést k tomu, že se neodhalené problémy dostanou do produkčního prostředí. Testy, které potřebují lidské orákulum: Ne všechny atributy kvality lze ověřit automatizovaně. Tyto atributy vyžadují účast lidí ve smyčce, což zpomaluje delivery pipeline.

Chen popsal a rozpracoval osm dalších problémů při přijetí. Tyto problémy se týkají organizační struktury, procesů, nástrojů, infrastruktury, starších systémů, architektury pro kontinuální doručování, kontinuálního testování nefunkčních požadavků a optimalizace provádění testů.

Zavádění kontinuálního doručování Bylo popsáno několik strategií, jak překonat problémy s přijetím kontinuálního doručování. + Strategie pro překonání problémů s přijetím kontinuálního doručování Strategie Popis Nabídka CD jako lék proti bolesti Identifikujte bolestivé body každé zainteresované strany, které může CD řešit, a nabídněte CD jako prostředek na jejich odstranění. Tato strategie pomáhá dosáhnout souhlasu široké škály zainteresovaných osob, který implementace CD vyžaduje. Vyhrazený tým s multidisciplinárními členy Bez specializovaného týmu může být obtížné pokročit, protože zaměstnanci jsou často přiděleni na práci na jiných hodnotových tocích. Multidisciplinární tým nejen poskytuje široký rozsah dovedností požadovaných pro implementaci CD, ale také usnadňuje komunikaci s ostatními týmy. Postupné zavádění kontinuálního doručování Organizujte implementaci CD tak, aby co nejdříve přinášelo výhody pro společnost, další projekty zařazujte postupně, po malých krocích a nakonec zaveďte CD v celé organizaci. Tato strategie pomůže ospravedlnit požadované investice tím, že již při zavádění ukazuje konkrétní výhody. Viditelné přínosy zase pomáhají dosáhnout trvalé podpory společnosti a investic, které jsou nezbytné pro přežití dlouhé a náročné cesty k CD. Začínejte snadnými, ale důležitými aplikacemi Při výběru prvních několika aplikací pro migraci na CD vybírejte ty, které lze snadno zmigrovat, které jsou však důležité pro firmu. Snadná migrace pomáhá rychle demonstrovat výhody CD, což může zabránit tomu, aby se zavádění CD zastavilo. Důležitost pro formu pomáhá zajistit potřebné prostředky, ukazuje jasnou a nezpochybnitelnou hodnotu a zvyšuje viditelnost CD v organizaci. Vizuální kostra CD pipeline Poskytněte týmu vizuální kostru CD pipeline, která obsahuje kompletní zobrazení CD pipeline, ale s prázdnými fázemi pro ty, které nemohou ještě implementovat. To pomáhá budovat CD myšlení a udržovat dynamiku pro zavádění CD. Kostra pipeliny je užitečná zvláště tehdy, když přechod týmu na CD vyžaduje velké úsilí a změny v myšlení po dlouhou dobu. Zařazení experta Přiřaďte odborníka na CD expert k náročným projektům jako seniorního člena vývojového týmu. Přítomnost experta v týmu pomáhá budovat motivaci a dynamiku k přechodu na CD zevnitř týmu. Pomáhá také udržet dynamiku, když přechod velké úsilí a dlouhé časové období.

Nejlepší postupy pro cloudové systémy Následující postupy mohou zlepšit produktivitu CD pipelin, zvláště v systémech hostovaných v cloudu:

Počet pipelin: Malé týmy mohou být produktivnější, pokud mají jeden repozitář a jednu pipelinu. Větší organizace mohou mít zvláštní repozitář a pipelinu pro každý tým nebo dokonce zvláštní repozitáře a pipelines pro každou službu v týmu. Oprávnění: V souvislosti s oprávněními souvisejícími s CD pipeline, může být dodržení principu nejnižších oprávnění náročné kvůli dynamické povaze architektury. Administrátoři se mohou rozhodnout pro volnější oprávnění a zároveň implementovat kompenzační kontroly datové bezpečnosti, aby minimalizovaly poloměr dopadu.

Vztah k DevOps

DevOps je přístup k produkci softwaru, který se zaměřuje na kulturní změny, konkrétně na spolupráci různých týmů zapojených do dodávání softwaru (vývojáři, provoz, zajištění kvality, management, atd.), a na automatizaci procesů při dodávání softwaru.

Vztah ke kontinuálnímu nasazování

Kontinuální nasazení je přístup, který používá automatizované nasazování softwaru. V něm se software vytváří v krátkých cyklech, ale s využitím automatizovaného nasazování softwaru i do produkce místo aby se pro tento poslední krok vyžadovalo „kliknutí na tlačítko“. Proto lze kontinuální nasazování považovat za rafinovanější formu automatizace. Univerzitní literatura rozlišuje mezi kontinuálním doručováním a kontinuálním nasazováním podle toho, zda nasazování probíhá manuálně nebo automatizovaně.

Odkazy Reference

Literatura

Související články Řízení životního cyklu aplikace Automatizace vydání aplikace Build (software) Řízení změn CD pipeline Automatizace kontinuální konfigurace Průběžná integrace Kontinuální testování DevOps Release management Správa konfigurace softwaru Verzování

Externí odkazy Continuous delivery practices Building Evolutionary Architecture

Kategorie:Proces vývoje softwaru