Škálování a optimalizace CI/CD

Implementace pracovního postupu CI/CD pro vývoj aplikací je stále populárnější. Zároveň však škálování a optimalizace CI/CD představuje výzvu.

Dnes budeme diskutovat o tom, co je tato výzva, a prozkoumáme, jak přesně můžeme škálovat a optimalizovat CI/CD. Takže následujte!

V dnešní době se vývoj aplikací obvykle provádí v týmech složených z několika vývojářů. Každá osoba nebo tým má svou roli v projektu tím, že postupuje ve své vyhrazené části.

Pak se ocitneme na konci projektu s několika kusy kódu ke kompilaci. V závislosti na pracovních metodách každého může být řízením této integrace promarněno mnoho času.

CI/CD, průběžná integrace a průběžné doručování/nasazování jsou řešením tohoto problému a zajišťují vydávání aktualizací bez zbytečných prodlev a konfliktů. Pojďme pochopit tento proces.

Průběžná integrace

CI nebo Continuous Integration seskupují procesy zaměřené na průběžné publikování změn kódu a doplňků do sdílené větve projektu. Umožňuje testovat kód a provádět vylepšení a změny v reálném čase. Cílem je otestovat každý prvek vytvořením testů.

Toto trvalé opatření umožňuje nekontrolovat na konci vše v jednom bloku a vyhnout se práci na příliš mnoha prvcích současně. Provedení jednotkových testů je proto velmi užitečné, aby se to zajistilo. Je tedy snazší odhalit chyby tím, že zajistíte, aby se kód dobře zkompiloval a nevytvářel regrese.

Nepřetržité doručování

Průběžné dodávání nebo CD spojuje nepřetržitou integraci a testování, které lze sbalit do kontejnerů a uvést do výroby. To znamená, že shromažďuje tyto kódy a provedené testy a zavádí je do výroby prostřednictvím automatizace.

I když to vyžaduje lidskou činnost, zautomatizuje se tím, že vše, co bylo provedeno, „vysílá“ integrovaným a úplným způsobem. Konkrétně s kontinuální distribucí je naše aplikace vyvinuta tak, aby mohla být uvedena do výroby, bez ohledu na to, kdy.

  12 nejlepších tipů pro vytvoření vlastního herního počítače

Průběžné nasazení

Zatímco koncepty nepřetržitého doručování a nepřetržitého zavádění jsou podobné, existují rozdíly. Pokud je jejich cíl stejný, to znamená nasazení aplikace v produkci, prostředky k jeho dosažení se liší. To, co odděluje kontinuální doručování od kontinuálního zavádění, je uvolnění.

Nepřetržité zavádění skutečně umožňuje přímo nasadit každou modifikaci, která prochází různými fázemi našeho potrubí. Při nepřetržitém doručování je pro realizaci nasazení nutný krok ověření člověkem.

Škálování CI/CD

Když se počet mikroslužeb zvýší, stává se téměř nevyhnutelné škálovat vaše CI/CD. Zvýšený počet mikroslužeb má za následek různé kanály připojené k jedinému git úložišti, což zvyšuje zatížení serveru CI a snižuje výkon.

Pro škálování CI/CD je nutné vytvořit standardizovaný a automatizovaný vývojový kanál pro všechny týmy a odtud zajistit kvalitu individuálních vývojářských dodávek a týmových dodávek. Usnadňuje také správu potrubí.

Škálování lze provést definováním procesu CI pro provádění testů jednotek a ověřování kvality dodaného kódu.

Následuje proces vytváření obrazů na CD a jejich průběžné nasazování do prostředí a nakonec definování procesu vytváření obrazů a jejich nasazení v produkčním prostředí.

Kroky ke škálování CI/CD

Prvním krokem je sladit potrubí s architekty, včetně vedoucích týmů. Následuje mapování větví Git do prostředí (vývoj -> vývoj a master -> [homologation and production]). Poté dojde ke spuštění úlohy CI při každém požadavku na stažení a úlohy CD při každé změně v mapovaných větvích.

Pro sledování CI i CD lze vytvořit tok úloh.

CI Job Flow se vyvíjí v 7 krocích:

  • Podívejte se na zdrojovou a cílovou větev Pull Request;
  • Zkontroluje, zda sloučení nemá konflikty, které vyžadují ruční řešení;
  • Spustit testy jednotek;
  • Sestavte balíček, abyste ověřili integritu a kompilovatelnost kódu;
  • Ověření kvality spouštěcího kódu;
  • Zvyšte a odevzdejte verzi projektu do zdrojové větve;
  • Informujte Pull Request Git repozitář o úspěchu nebo selhání prostřednictvím Webhooku nebo volání Rest API (Git Repository).

Postup úlohy CD se řídí následující cestou:

  • Notifikovaná pobočka je odhlášena.
  • Artefakt je vytvořen pomocí specifického nástroje pro sestavení projektu, na kterém se pracuje.
  • Poté, co artefakt přijde, jsou projekty knihovny odeslány do zařízení Nexus k uložení artefaktu a tok je dokončen.
  Jaký je dosah průměrné sítě Wi-Fi?

Provádějí se následující akce:

Krok 1: Vytvoří se obrázek Dockeru pro vygenerovaný artefakt a použije se verze artefaktu na obrázek Dockeru.

Krok 2: Obrázek se nahraje do registru Docker.

Krok 3: Nasazení prostřednictvím zavádění bitové kopie přes Kubernetes.

U aplikačních projektů, které jsou ve schvalovacím/produkčním prostředí, postupujte podle kroků 1 a 2 výše a poté podle následujících pokynů:

  • Nasazení prostřednictvím zavádění obrazu přes Kubernetes v prostředí schvalování;
  • Úloha trvá pauzu, než čeká na schválení zavedení pro produkci;
  • V případě schválení je schvalovaný obrázek propagován do produkce;
  • V opačném případě vrátí obrázek zpět ke schválení.

Optimalizace CI/CD

CI/CD zlepšuje cyklus vývoje aplikací a řeší problém způsobený integrací nového kódu a zvýšením frekvence doručování.

Níže uvádíme, jak můžete dále optimalizovat použití CI/CD:

Upřednostněte opravu poškozeného sestavení

Když se sestava porouchá, oprava by měla být prioritou týmu. Pokud nelze sestavení opravit během několika minut, tým se musí rozhodnout, zda odstraní kód nebo deaktivuje příznak funkce.

Myšlenka za opravou nefunkčního sestavení spočívá v tom, že sestavení vždy vytvoří funkční kód, který lze uvolnit.

Malé časté nasazení

Obecně je stabilita aplikace ohrožena při každém nasazení. Máme tedy tendenci oddalovat nasazení od sebe. Problém tohoto přístupu spočívá v tom, že hromadíme příliš mnoho změn. Jedna z těchto změn by se mohla pokazit a donutit nás vrátit zpět ostatní, které fungovaly.

Použijte vzor škrtiče a rozbijte složité změny na malé a jednoduché. Pokud nasazujete častěji a pracujete v malých dávkách, riziko nasazení je nižší.

Automatizujte testy QA pro zmírnění rizik

Všichni jsme se pravděpodobně zapojili do scénáře „pracoval na mém místním počítači“, protože místní vývojová prostředí se často liší. Mezi vaším místním prostředím a místem, kde vstupujete do výroby, může být mnoho různých věcí. CI/CD můžete optimalizovat automatizací úloh zajišťování kvality (QA), jako je testování prohlížeče, čímž se sníží riziko, že se chyba dostane do živé aplikace.

Důvěřujte automatickým testům

Aby bylo možné ověřit, kdy vývojář integruje nový kód, spoléhá CI na automatizovanou a spolehlivou testovací sadu. Pokud potřebujete zkompilovat kód, prvním testem je, že se zkompiluje. Poté můžete přidat tolik testů, kolik považujete za kritické.

  Jak opravit „Nelze vytvořit virtuální stroj Java“

Kolik testů by mělo být zahrnuto? Chcete-li to zjistit, nezapomeňte, že cílem CI je poskytnout zpětnou vazbu co nejrychleji. Pokud musí vývojář čekat na zpětnou vazbu hodinu, nebude to fungovat. Vždy vám bude něco chybět, ale když zjistíte chybu ve výrobě, vytvořte testovací případ a zahrňte ho do smyčky CI.

Vždy zvažte bezpečnost

Zvažte zabezpečení nástroje CI/CD, protože se integruje do stávajících konfigurací nebo prostředí. CI/CD vyžaduje, aby všechny nástroje pro testování zabezpečení byly volány programově a jejich výsledky byly agregovány na jednom místě. Hledejte nástroje, které mají rozhraní API pro audity automatického šifrování.

Výhody škálování a optimalizace CI/CD

Kromě zvýšení efektivity vývojových týmů má škálování a optimalizace CI/CD také další výhody, z nichž některé jsou:

Snížená režie

Vývojové hodiny jsou obvykle účtovatelné, ale co čas strávený ručním nasazením kódu nebo souborů? Automatizace velkých částí vašeho toku ušetří čas na fakturovatelnou práci, což ocení každý. Automatizované testování vám také umožňuje selhat dříve, než najít chyby v QA nebo výrobě nebo v horším případě je najde zákazník. Více chyb opravených za stejnou dobu je jasná výhra.

Dodávka s menším počtem chyb a menším rizikem

Chyby zachytíte mnohem dříve ve vývojovém procesu častějším vydáváním drobných změn. Když implementujete automatizované testy ve všech fázích vývoje, neriskujete přesunutí selhávajícího kódu do další fáze a v případě potřeby je jednodušší vrátit zpět drobné změny.

Rychleji reagovat na podmínky na trhu

Podmínky na trhu se neustále mění. Předpokládejme, že zjistíte, že nový produkt ztrácí příjmy nebo že na váš web přistupuje více zákazníků ze smartphonů než z notebooků. V takovém případě je mnohem snazší provést rychlou změnu, pokud máte optimalizované průběžné doručování.

Důvěra

Pokud máte optimalizované CI/CD, což znamená, že máte robustní testovací sadu, vaše sebevědomí, že neodešlete chybu, výrazně vzroste. Pokud budete transparentní ve svém procesu a vzděláte zbytek svého týmu a zákazníky, zvýší se také jejich důvěra ve vás jako vývojový tým.

Závěrečná slova

CI/CD urychlí vaše integrace a dodávky. Je však důležité jej škálovat a optimalizovat, aby se proces nestal kontraproduktivním kvůli zvyšující se složitosti.

Můžete se také podívat na některé z nejlepších nástrojů CI.