Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom
Vytvorenie prvého reťazca DevOps v piatich krokoch pre začiatočníkov.

DevOps sa stal všeliekom na príliš pomalé, odpojené a inak problematické vývojové procesy. Potrebujete však minimálne znalosti v DevOps. Bude pokrývať koncepty, ako je reťazec DevOps a ako vytvoriť jeden v piatich krokoch. Toto nie je kompletný návod, ale len „ryba“, ktorá sa dá rozširovať. Začnime históriou.

Môj úvod do DevOps

Kedysi som pracoval s cloudmi v Citi Group a vyvíjal som webovú aplikáciu IaaS na správu cloudovej infraštruktúry Citi, ale vždy ma zaujímalo, ako optimalizovať vývojový reťazec a zlepšiť kultúru medzi vývojármi. Greg Lavender, náš technický riaditeľ pre cloudovú architektúru a infraštruktúru, mi odporučil túto knihu. Projekt "Phoenix". Krásne vysvetľuje princípy DevOps a číta sa ako román.

Tabuľka na zadnej strane ukazuje, ako často spoločnosti zavádzajú nové verzie:

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Ako sa spoločnostiam Amazon, Google a Netflix darí tak veľa? A je to jednoduché: prišli na to, ako vytvoriť takmer dokonalý reťazec DevOps.

Veci pre nás v Citi boli veľmi odlišné, kým sme neprešli na DevOps. Potom mal môj tím rôzne prostredia, ale doručovanie na vývojový server sme robili manuálne. Všetci vývojári mali prístup len k jednému vývojovému serveru založenému na IBM WebSphere Application Server Community Edition. Pri súčasnom pokuse o doručenie server „spadol“ a zakaždým sme museli medzi sebou „bolestne“ vyjednávať. Mali sme tiež nedostatočné pokrytie kódu testami, časovo náročný proces manuálneho doručovania a žiadny spôsob, ako sledovať doručovanie kódu pomocou nejakej úlohy alebo požiadavky klienta.

Bolo jasné, že treba niečo urgentne urobiť a našiel som si podobne zmýšľajúceho kolegu. Prvý reťazec DevOps sme sa rozhodli vytvoriť spoločne – on nastavil virtuálny stroj a aplikačný server Tomcat a ja som sa postaral o Jenkinsa, integráciu s Atlassian Jira a BitBucket, ako aj pokrytie kódu testami. Projekt bol úspešný: plne sme zautomatizovali vývojový reťazec, dosiahli sme takmer 100% dostupnosť na vývojovom serveri, dokázali sme monitorovať a zlepšovať pokrytie kódu pomocou testov a vetva Git mohla byť prepojená s doručením a problémom Jira. A takmer všetky nástroje, ktoré sme použili na vytvorenie reťazca DevOps, boli open source.

V skutočnosti bol reťazec zjednodušený, pretože sme ani neaplikovali pokročilé konfigurácie pomocou Jenkins alebo Ansible. Ale podarilo sa. Možno je to dôsledok princípu Pareto (známe ako pravidlo 80/20).

Stručný popis reťazca DevOps a CI/CD

DevOps má rôzne definície. DevOps, podobne ako Agile, zahŕňa rôzne disciplíny. Väčšina však bude súhlasiť s nasledujúcou definíciou: DevOps je metóda alebo životný cyklus vývoja softvéru, ktorého hlavným princípom je vytvorenie kultúry, kde sú vývojári a ostatní zamestnanci „na rovnakej vlnovej dĺžke“, manuálna práca je automatizovaná, každý robí to, v čom je najlepší, zvyšuje sa frekvencia dodávok, zvyšuje sa produktivita práce, zvyšuje sa flexibilita.

Aj keď samotné nástroje nestačia na vytvorenie prostredia DevOps, sú nevyhnutné. Najdôležitejšie z nich je kontinuálna integrácia a kontinuálna dodávka (CI/CD). Pre každé prostredie existujú rôzne stupne reťazca (napr. DEV (vývoj), INT (integrácia), TST (testovanie), QA (zabezpečenie kvality), UAT (testovanie akceptácie používateľom), STG (príprava), PROD (použitie)) , manuálne úlohy sú automatizované, vývojári dokážu vyrobiť kvalitný kód, dodať ho a ľahko ho prestavať.

Táto poznámka popisuje, ako vytvoriť reťazec DevOps v piatich krokoch, ako je znázornené na obrázku nižšie, pomocou nástrojov s otvoreným zdrojom.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Dajme sa do práce.

Krok 1: Platforma CI/CD

Najprv potrebujete nástroj CI/CD. Jenkins je open-source CI/CD nástroj s licenciou MIT napísaný v jazyku Java, ktorý spopularizoval hnutie DevOps a stal sa de facto štandardom pre CICD.

Čo je Jenkins? Predstavte si, že máte magický ovládací panel pre rôzne služby a nástroje. Samotný nástroj CI/CD ako Jenkins je zbytočný, ale s rôznymi nástrojmi a službami sa stáva všemocným.

Okrem Jenkins existuje mnoho ďalších open source nástrojov, vyberte si ktorýkoľvek.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Takto vyzerá proces DevOps s nástrojom CI/CD

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

V localhost máte nástroj CI/CD, ale zatiaľ tu nie je veľa práce. Prejdime k ďalšiemu kroku.

Krok 2: Verzia

Najlepším (a možno aj najjednoduchším) spôsobom, ako otestovať čaro nástroja CI/CD, je integrovať ho s nástrojom správy zdroja (SCM). Prečo potrebujete kontrolu verzií? Povedzme, že podávate aplikáciu. Napíšete to v jazyku Java, Python, C++, Go, Ruby, JavaScript alebo v akomkoľvek inom jazyku, ktorý je vagónom a malým vozíkom. To, čo píšete, sa nazýva zdrojový kód. Spočiatku, najmä ak pracujete sami, môžete všetko uložiť do lokálneho adresára. Ale ako projekt rastie a pripája sa viac ľudí, potrebujete spôsob, ako zdieľať zmeny kódu, ale vyhnúť sa konfliktom pri spájaní zmien. A tiež musíte nejakým spôsobom obnoviť predchádzajúce verzie bez použitia záloh a pomocou metódy kopírovania a vkladania pre súbory kódu.

A tu bez SCM kdekoľvek. SCM ukladá kód do repozitárov, spravuje jeho verzie a koordinuje ho medzi vývojármi.

Nástrojov SCM je veľa, ale Git sa zaslúžene stal de facto štandardom. Odporúčam vám to použiť, ale existujú aj iné možnosti.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Takto vyzerá kanál DevOps po pridaní SCM.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Nástroj CI/CD dokáže automatizovať nahrávanie a sťahovanie zdrojového kódu a tímovú spoluprácu. Nie zlé? Ale ako z toho teraz urobiť fungujúcu aplikáciu, ktorú milujú miliardy používateľov?

Krok 3: Zostavte nástroj automatizácie

Všetko ide ako má. Môžete nahrať kód a vykonať zmeny v ovládaní zdroja a pozvať priateľov, aby s vami spolupracovali. Ale ešte nemáte aplikáciu. Aby to bola webová aplikácia, musí byť skompilovaná a zabalená na distribúciu alebo spustená ako spustiteľný súbor. (Interpretovaný programovací jazyk ako JavaScript alebo PHP nie je potrebné kompilovať.)

Použite nástroj na automatizáciu tvorby. Bez ohľadu na to, ktorý nástroj si vyberiete, zostaví kód v správnom formáte a zautomatizuje čistenie, kompiláciu, testovanie a doručenie. Nástroje na zostavovanie sa líšia podľa jazyka, ale bežne sa používajú nasledujúce možnosti open source.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Perfektné! Teraz vložme konfiguračné súbory nástroja na automatizáciu zostavovania do ovládania zdroja, aby ich nástroj CI/CD vytvoril.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Je to príjemné. Ale kde sa to všetko teraz má spustiť?

Krok 4: Webový aplikačný server

Takže máte zabalený súbor, ktorý je možné spustiť alebo spustiť. Aby bola aplikácia naozaj užitočná, musí mať nejakú službu alebo rozhranie, no treba to všetko niekam umiestniť.

Webová aplikácia môže byť hosťovaná na webovom aplikačnom serveri. Aplikačný server poskytuje prostredie, v ktorom môžete spúšťať zbalenú logiku, vykresľovať rozhrania a vystavovať webové služby cez soket. Na inštaláciu aplikačného servera potrebujete server HTTP a niekoľko ďalších prostredí (napríklad virtuálny počítač). Zatiaľ predstierajme, že toto všetko riešite za pochodu (hoci o kontajneroch budem hovoriť nižšie).

Existuje niekoľko otvorených serverov webových aplikácií.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Už máme takmer fungujúci reťazec DevOps. Dobrá práca!

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

V zásade sa tu môžete zastaviť, potom to zvládnete sami, ale stojí za to hovoriť o kvalite kódu.

Krok 5: Testovacie pokrytie

Testovanie si vyžaduje veľa času a úsilia, ale je lepšie hneď nájsť chyby a vylepšiť kód tak, aby potešil koncových používateľov. Na tento účel existuje mnoho otvorených nástrojov, ktoré kód nielen otestujú, ale aj poradia, ako ho vylepšiť. Väčšina nástrojov CI/CD sa môže pripojiť k týmto nástrojom a automatizovať proces.

Testovanie je rozdelené na dve časti: testovacie rámce na písanie a vykonávanie testov a nástroje s radami na zlepšenie kvality kódu.

Testovacie rámce

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Nástroje s kvalitnými hrotmi

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Väčšina týchto nástrojov a rámcov je napísaná pre Java, Python a JavaScript, pretože C++ a C# sú proprietárne (hoci GCC je open source).

Použili sme nástroje testovacieho pokrytia a teraz by kanál DevOps mal vyzerať ako na obrázku na začiatku tutoriálu.

Ďalšie kroky

kontajnery

Ako som už povedal, aplikačný server môže byť hosťovaný vo virtuálnom stroji alebo serveri, ale kontajnery sú populárnejšie.

Čo sú kontajnery? Vo virtuálnom stroji skrátka operačný systém často zaberá viac miesta ako aplikácia a kontajner si zvyčajne vystačí s niekoľkými knižnicami a konfiguráciou. V niektorých prípadoch sú virtuálne stroje nepostrádateľné, ale kontajner môže obsahovať aplikáciu spolu so serverom bez ďalších nákladov.

Pre kontajnery sa zvyčajne berú Docker a Kubernetes, aj keď existujú aj iné možnosti.

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Prečítajte si články o Docker a Kubernetes na opensource.com:

Middleware automatizačné nástroje

Náš reťazec DevOps sa zameriava na spoločné vytváranie a dodávanie aplikácií, ale s nástrojmi DevOps môžete robiť aj iné zaujímavé veci. Použite napríklad nástroje Infrastructure as Code (IaC), známe aj ako nástroje na automatizáciu middlewaru. Tieto nástroje pomáhajú automatizovať inštaláciu, správu a ďalšie úlohy pre middleware. Automatizačný nástroj môže napríklad prevziať aplikácie (webový aplikačný server, databázu, monitorovacie nástroje) so správnymi konfiguráciami a poslať ich na aplikačný server.

Tu je niekoľko možností pre otvorené nástroje na automatizáciu middlewaru:

Príručka pre figuríny: Budovanie reťazcov DevOps pomocou nástrojov s otvoreným zdrojom

Podrobnosti v článkoch opensource.com:

A čo teraz?

Toto je len špička ľadovca. Reťazec DevOps dokáže oveľa viac. Začnite s nástrojom CI/CD a uvidíte, čo ešte môžete automatizovať, aby ste si uľahčili prácu. Nezabudni na otvorené komunikačné nástroje pre efektívnu spoluprácu.

Tu je niekoľko ďalších dobrých článkov DevOps pre začiatočníkov:

Môžete tiež integrovať DevOps s otvorenými agilnými nástrojmi:

Zdroj: hab.com

Pridať komentár