Dříve jsme o Continuous Integration (CI). Pokračujme s Continuous Delivery. To je soubor metod vývoje softwaru. Pomáhá zajistit, že kód je připraven k nasazení.
/ Pixabay / /
Historie
Slovní spojení continuous delivery bylo poprvé viděno v z roku 2001 na začátku seznamu hlavních zásad: „Priorita je vyřešení problémů zákazníka pomocí nepřetržité dodávky funkčního softwaru.“
V roce 2010 Jez Humble a David Farley publikovali o Continuous Delivery. Podle autorů CD doplňuje přístup a umožňuje zjednodušit přípravu kódu k nasazení.
Po zveřejnění knihy začal přístup získávat popularitu a během několika let se stal prakticky běžným. Podle , který byl proveden mezi více než 600 vývojáři a IT manažery v roce 2014, 97 % technických vedoucích a 84 % programátorů bylo obeznámeno s Continuous Delivery.
Tento přístup zůstává jedním z nejpopulárnějších. Podle výzkumu z roku 2018, na kterém se podílelo komunitní IT specialisté DevOps a Jenkins Community, jeho polovina z více než tisíce dotazovaných respondentů.
Jak funguje Continuous Delivery
Základem CD je připravenost kódu k nasazení. K dosažení tohoto cíle se používá automatizace procesu přípravy softwaru na vydání. Ten by měl být standardizován pro různé vývojové prostředí, což pomůže rychleji identifikovat slabá místa a optimalizovat je. Například urychlit testování.
Příklad procesu Continuous Delivery vypadá takto:

Pokud za automatizaci prvních dvou fází odpovídá přístup Continuous Integration, za následující dvě pak odpovídá Continuous Delivery. Stabilitu procesu zajišťují také systémy . Ty monitorují změny v infrastruktuře, databázích a závislostech. Samotné nasazení může být automatizováno nebo provedeno ručně.
Na proces jsou kladeny následující požadavky:
- Dostupnost informací o připravenosti k vydání do produkčního prostředí a připravenost k bezprostřednímu vydání (CD nástroje testují kód a umožňují vyhodnotit efekt změn ve vydání).
- Celková zodpovědnost za finální produkt. Produktový tým – manažeři, vývojáři, testeři – myslí na výsledek, a ne jen na svoji oblast zodpovědnosti (výsledek je pracovní vydání, které je dostupné pro uživatele produktu).
V CD se obvykle používá , a pro shromažďování názorů zákazníků – princip . Novou funkci nejprve vydáváme pro malý segment uživatelů – jejich zkušenosti s interakcí s produktem pomáhají najít nedostatky a chyby, které nebyly odhaleny při interním testování.
Jaké jsou výhody
Continuous Delivery pomáhá zjednodušit nasazení kódu, což má pozitivní vliv na produktivitu a snižuje pravděpodobnost emocionálního vyhoření zaměstnanců. Nakonec to snižuje i celkové náklady na vývoj. Například CD pomohlo jedné z týmů HP tyto náklady o 40%.
Kromě toho – podle výzkumu z roku 2016 (strana 28 ) – firmy, které implementovaly CD, řeší problémy s IT bezpečností o 50% rychleji ve srovnání s těmi, které tento přístup nepoužívají. Částečně lze toto rozlišení vysvětlit fungováním nástrojů pro automatizaci procesu.
Další výhodou je zrychlení vydání verzí. Ve finském vývojovém studiu nepřetržitá dodávka zvýšit rychlost sestavení kódu o 25%.
Potenciální komplikace
První a hlavní problém – nutnost přepracovat zavedené procesy. Aby se prokázala výhoda nového přístupu, je třeba přecházet na CD postupně, nezačínat u nejnáročnějších aplikací.
Druhou potenciální problém – velké množství větví kódu. Důsledkem „větvení“ jsou časté konflikty a ztráta velkého množství času. Možným řešením je přístup .
. V některých firmách se zejména setkávají hlavní problémy s testováním – na něj se věnuje příliš mnoho času. Výsledky testů se často musí analyzovat ručně, ale možným řešením může být paralelizace testů v prvních fázích zavádění CD.
Také je nutné školit zaměstnance v práci s novými nástroji – předběžný pre školení ušetří vývojářům síly a čas.

/ Flickr / /
Nástroje
Představme si několik otevřených nástrojů pro Continuous Delivery:
- — server pro kontinuální doručování na Java a JRuby on Rails. Umožňuje řídit celý proces doručování aplikace: build—test—release. Nástroj je distribuován pod licencí Apache 2.0. Na oficiálních stránkách najdete .
- — framework pro vytváření skriptů, které automatizují nasazení aplikací v Ruby, Java nebo PHP. Capistrano dokáže vykonávat příkazy na vzdáleném stroji prostřednictvím SSH. Spolupracuje s jinými nástroji pro kontinuální integraci a doručování, například s CI serverem Integrity.
- — multiplatformní nástroj, který automatizuje celý cyklus vývoje aplikací. Gradle pracuje s Java, Python, C/C++, Scala a dalšími. Existuje integrace s Eclipse, IntelliJ a Jenkins.
- — platforma pro CD v jazyce Go. Drone lze nasadit on-premise nebo v cloudu. Nástroj je postaven na kontejnerové architektuře a používá YAML soubory pro jejich správu.
- — platforma pro kontinuální doručování kódu v multi-cloudových systémech. Byla vyvinuta v Netflixu a zásadní úlohu při vývoji nástroje sehráli inženýři Google. Instrukci pro instalaci najdete .
Co si přečíst v našem firemním blogu:
Zdroj: habr.com
