CI/CD
Víte, co znamená CI/CD? Nevíte, nevadí, připravili jsme si pro Vás článek, kde jsme se za Vás zeptali našeho kolegy Davida Dlouhého, aby Vám tuto oblast trochu přiblížil. Budeme rádi, když nám do komentáře napíšete jak se Vám článek líbil a zda byste články s podobnou tématikou uvítali častěji.
Davide, co to je CI/CD?
Jedná se o proces dodání nové verze softwaru. Je to jakýsi předpis toho, co je potřeba v určitém pořadí udělat. V průběhu CI/CD se tedy provádí série kroků, kdy tým vývojářů nejprve něco naprogramuje a následně proběhne automatizované otestování nového přírůstku. V případě úspěchu se změna úspěšně přijme a začne se nasazovat nová verze aplikace všude, kde to je potřeba. Nasazená aplikace je taktéž automatizovaně řízena a hlídá se její stav. V případě, že by docházelo k problémům, dokáže automatizace buď eliminovat tyto problémy sama nebo na ně alespoň včas upozornit.
Jak funguje CI/CD v CIS?
V CIS je CI/CD aplikováno zejména využitím open source nástrojů, které jsou stabilní, hojně používané, s moderní a s dobrou perspektivou. Na našich privátních serverech provozujeme infrastrukturu, která je definována nástrojem Ansible. Díky tomu můžeme například rychle zprovoznit další podobné servery, pokud by to bylo potřeba. V praxi to je například situace, kdy zákazník potřebuje běh aplikace na vlastním serveru. Celé CI/CD se u nás skládá se 4 komponent.
Hlavní komponentou je primární testovací server. Ten se stará o provádění automatizovaných testů nebo o nasazování produkčních verzí vyvíjeného software. Některé dílčí úkoly taktéž distribuuje na další servery. Tato paralelizace vede k výrazné časové úspoře.
Další ze serverů tvoří prostředí pro běh aplikací. Ty běží v podobě kontejneru, kdy využíváme nástroj Docker. Aplikace tak může běžet například paralelně v různých verzích nebo v různých počtech – jedna instance jako produkční a druhé pouze pro interní testování (staging).
O monitorování, logování a hlídání chyb se stará speciální server, který využívá Elastic stack. To je skupina nástrojů, které dokážou rychle ukázat programátorům chybné projevy aplikace, či rychleji reagovat na potencionální problémy s nedostatkem místa na disku a podobně.
Posledním dílem skládačky je GitLab, ve kterém je bezpečně uložený zdrojový kód aplikace. Tento nástroj se propojuje s naší infrastrukturou a dochází tak k automatizaci všech procesů CI/CD.
Jaké jsou výhody CI/CD?
CI/CD je v trendu a rozumí si s agilním vývojem software, který se právě v CIS využívá. Oproti klasickému nasazování, je vše automatizované a tím pádem se i šetří čas programátorů, což vede k efektivnějšímu vývoji a úspoře peněz zákazníka. Programátor, který se může soustředit na to, na co má, je zkrátka levnější, a má více času na svůj kód, který je ve výsledku kvalitnější. Proto není problém, aby se později programátor vyznal ve svém kódu rychleji, případně v kódu někoho jiného. Nasazování změn je tedy rychlejší, levnější a nevzniká problémový kód, na který by po pár měsících programátor pohlížel jako na staré a ošklivé auto, kterého je lepší se zbavit.
Výsledný program je tedy nejen kvalitnější, ale také se při každé změně dočká testování. Snižuje se tak riziko situace, kdy si například programátor nevšimne, že nová část programu (přihlášení uživatele) rozbila jinou stávající (registrace uživatele).
Jaké jsou benefity pro zákazníka?
Pokud se zákazník rozhode využít CI/CD ve svém projektu, ušetří v budoucnu spoustu finančních prostředků. Finanční náročnost bychom mohli reprezentovat logaritmickou funkcí. Na začátku si zákazník připlatí za CI/CD, ale po pár nasazeních nové verze se začne projevovat efektivita. Navíc bude produkt kvalitnější a kód přehlednější, protože se vývojáři budou moci plně soustředit na programování jako takové. S takovým kódem dokážou programátoři pracovat efektivněji. Mezi další výhody se taktéž dá zařadit rychlejší nasazení novější verze, či snadný návrat k předchozí.
Komentáře