Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius
Sukurkite savo pirmąją „DevOps“ grandinę penkiais žingsniais pradedantiesiems.

„DevOps“ tapo panacėja nuo per lėtų, atsijungusių ir šiaip problemiškų kūrimo procesų. Tačiau jums reikia minimalių žinių apie „DevOps“. Ji apims tokias sąvokas kaip „DevOps“ grandinė ir kaip sukurti vieną iš penkių žingsnių. Tai ne visas vadovas, o tik „žuvelė“, kurią galima išplėsti. Pradėkime nuo istorijos.

Mano įvadas į „DevOps“.

Anksčiau dirbau su debesimis „Citi Group“ ir kūriau „IaaS“ žiniatinklio programą „Citi“ debesų infrastruktūrai valdyti, tačiau visada domėjausi, kaip optimizuoti kūrimo grandinę ir pagerinti kūrėjų kultūrą. Gregas Lavenderis, mūsų debesų architektūros ir infrastruktūros techninis vadovas, man rekomendavo šią knygą. Projektas "Feniksas". Jis puikiai paaiškina „DevOps“ principus ir skaitomas kaip romanas.

Galinėje lentelėje parodyta, kaip dažnai įmonės išleidžia naujas versijas:

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Kaip „Amazon“, „Google“ ir „Netflix“ pavyksta tiek daug įdiegti? Ir tai paprasta: jie sugalvojo, kaip sukurti beveik tobulą „DevOps“ grandinę.

Mums „Citi“ reikalai buvo labai skirtingi, kol neperėjome prie „DevOps“. Tada mano komanda turėjo skirtingas aplinkas, bet pristatymą į kūrimo serverį atlikome rankiniu būdu. Visi kūrėjai turėjo prieigą tik prie vieno kūrimo serverio, pagrįsto IBM WebSphere Application Server Community Edition. Vienu metu bandant pristatyti, serveris „nukrito“, ir kiekvieną kartą turėjome „skausmingai“ derėtis tarpusavyje. Mes taip pat turėjome nepakankamą kodo aprėptį atliekant bandymus, daug laiko reikalaujantį rankinio pristatymo procesą ir niekaip negalėjome stebėti kodo pristatymo naudojant tam tikrą užduotį ar kliento reikalavimus.

Buvo aišku, kad reikia skubiai kažką daryti, ir susiradau bendramintį kolegą. Pirmąją DevOps grandinę nusprendėme sukurti kartu – jis sukūrė virtualią mašiną ir Tomcat aplikacijų serverį, o aš pasirūpinau Jenkins, integracija su Atlassian Jira ir BitBucket, taip pat kodo aprėpti testais. Projektas buvo sėkmingas: mes visiškai automatizavome kūrimo grandinę, pasiekėme beveik 100% kūrimo serverio veikimo laiką, galėjome stebėti ir pagerinti kodo aprėptį testais, o Git filialas galėjo būti susietas su Jira pristatymu ir išdavimu. Ir beveik visi įrankiai, kuriuos naudojome kurdami „DevOps“ grandinę, buvo atvirojo kodo.

Tiesą sakant, grandinė buvo supaprastinta, nes net netaikėme išplėstinių konfigūracijų naudodami „Jenkins“ ar „Ansible“. Bet mums pavyko. Galbūt tai yra principo pasekmė Pareto (dar žinoma kaip 80/20 taisyklė).

Trumpas DevOps ir CI / CD grandinės aprašymas

„DevOps“ turi skirtingus apibrėžimus. „DevOps“, kaip ir „Agile“, apima skirtingas disciplinas. Tačiau dauguma sutiks su tokiu apibrėžimu: „DevOps“ yra programinės įrangos kūrimo metodas arba gyvavimo ciklas, kurio pagrindinis principas yra sukurti kultūrą, kurioje kūrėjai ir kiti darbuotojai būtų „tame pačiame bangos ilgyje“, automatizuotas rankų darbas, kiekvienas daro tai, ką išmano geriausiai, didėja pristatymų dažnumas, darbo našumas, lankstumas.

Nors vien įrankių nepakanka sukurti DevOps aplinką, jie yra būtini. Svarbiausias iš jų yra nuolatinis integravimas ir nuolatinis pristatymas (CI/CD). Kiekvienos aplinkos grandinėje yra skirtingi etapai (pvz., DEV (kūrimas), INT (integravimas), TST (testavimas), QA (kokybės užtikrinimas), UAT (vartotojo priėmimo bandymas), STG (paruošimas), PROD (naudojimas)) , rankinės užduotys yra automatizuotos, kūrėjai gali sukurti kokybišką kodą, jį pristatyti ir lengvai atkurti.

Šioje pastaboje aprašoma, kaip naudojant atvirojo kodo įrankius sukurti DevOps grandinę penkiais veiksmais, kaip parodyta paveikslėlyje žemiau.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Eikime prie reikalo.

1 veiksmas: CI / CD platforma

Visų pirma, jums reikia CI / CD įrankio. Jenkins yra MIT licencijuotas atvirojo kodo CI / CD įrankis, parašytas Java kalba, kuris išpopuliarino DevOps judėjimą ir tapo de facto CICD standartu.

Kas yra Dženkinsas? Įsivaizduokite, kad turite stebuklingą valdymo skydelį įvairioms paslaugoms ir įrankiams. Pats CI / CD įrankis, pvz., Jenkins, yra nenaudingas, tačiau naudojant skirtingus įrankius ir paslaugas jis tampa visagalis.

Be Jenkins, yra daug kitų atvirojo kodo įrankių, pasirinkite bet kurį.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Štai kaip atrodo „DevOps“ procesas naudojant CI / CD įrankį

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

„localhost“ turite CI / CD įrankį, bet dar nėra daug ką padaryti. Pereikime prie kito žingsnio.

2 veiksmas: versijos valdymas

Geriausias (ir, be abejo, lengviausias) būdas išbandyti CI/CD įrankį yra integruoti jį su šaltinio valdymo valdymo (SCM) įrankiu. Kodėl jums reikia versijos valdymo? Tarkime, kad pateikiate paraišką. Rašote „Java“, „Python“, „C++“, „Go“, „Ruby“, „JavaScript“ ar bet kuria kita kalba, kuri yra universalas ir mažas vežimėlis. Tai, ką rašote, vadinama šaltinio kodu. Iš pradžių, ypač jei dirbate vienas, viską galite išsaugoti vietiniame kataloge. Tačiau projektui augant ir prisijungus vis daugiau žmonių, jums reikia būdo, kaip bendrinti kodo pakeitimus, bet išvengti konfliktų sujungiant pakeitimus. Taip pat reikia kažkaip atkurti ankstesnes versijas nenaudojant atsarginių kopijų ir naudojant kodo failų kopijavimo-įklijavimo metodą.

Ir čia be SCM niekur. SCM saugo kodą saugyklose, tvarko jo versijas ir koordinuoja jį tarp kūrėjų.

Yra daug SCM įrankių, tačiau „Git“ pelnytai tapo de facto standartu. Patariu jį naudoti, bet yra ir kitų variantų.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Štai kaip atrodo „DevOps“ dujotiekis pridėjus SCM.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

CI / CD įrankis gali automatizuoti šaltinio kodo įkėlimą ir atsisiuntimą bei komandos bendradarbiavimą. Neblogai? Bet dabar kaip sukurti veikiančią programą, kurią mėgsta milijardai vartotojų?

3 veiksmas: sukurkite automatizavimo įrankį

Viskas vyksta taip, kaip turėtų. Galite įkelti kodą ir atlikti šaltinio valdymo pakeitimus bei pakviesti draugus dirbti su jumis. Bet jūs dar neturite programos. Kad tai būtų žiniatinklio programa, ji turi būti sukompiliuota ir supakuota platinti arba paleisti kaip vykdomoji programa. (Interpretuojamos programavimo kalbos, tokios kaip JavaScript arba PHP, kompiliuoti nereikia.)

Naudokite statybos automatizavimo įrankį. Kad ir kurį įrankį pasirinktumėte, jis surinks kodą tinkamu formatu ir automatizuos išvalymą, kompiliavimą, testavimą ir pristatymą. Kūrimo įrankiai skiriasi priklausomai nuo kalbos, tačiau dažniausiai naudojamos toliau nurodytos atvirojo kodo parinktys.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Puikus! Dabar įterpkime kūrimo automatizavimo įrankio konfigūracijos failus į šaltinio valdymą, kad CI / CD įrankis juos sukurtų.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Geras jausmas. Bet kur visa tai dabar išskleisti?

4 veiksmas: žiniatinklio programų serveris

Taigi, jūs turite supakuotą failą, kurį galima vykdyti arba išleisti. Kad programa būtų tikrai naudinga, ji turi turėti tam tikrą paslaugą ar sąsają, bet jūs turite visa tai kažkur įdėti.

Žiniatinklio programa gali būti talpinama žiniatinklio programų serveryje. Programų serveris suteikia aplinką, kurioje galite vykdyti supakuotą logiką, pateikti sąsajas ir atskleisti žiniatinklio paslaugas per lizdą. Norėdami įdiegti programų serverį, jums reikia HTTP serverio ir kelių kitų aplinkų (pavyzdžiui, virtualios mašinos). Kol kas apsimeskime, kad su visa tai susiduriate eidami (nors apie konteinerius kalbėsiu toliau).

Yra keletas atvirų žiniatinklio programų serverių.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Jau turime beveik veikiančią „DevOps“ grandinę. Puikus darbas!

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Iš esmės galite sustoti čia, tada galėsite susitvarkyti patys, tačiau verta kalbėti apie kodo kokybę.

5 veiksmas: bandomasis sluoksnis

Testavimas užima daug laiko ir pastangų, tačiau geriau iš karto rasti klaidas ir patobulinti kodą, kad patiktų galutiniams vartotojams. Tam tikslui yra daug atvirų įrankių, kurie ne tik išbandys kodą, bet ir patars, kaip jį patobulinti. Daugumą CI / CD įrankių galima prijungti prie šių įrankių ir automatizuoti procesą.

Testavimas yra padalintas į dvi dalis: testavimo sistemas, skirtas rašyti ir vykdyti testus, ir įrankius su patarimais, kaip pagerinti kodo kokybę.

Testavimo sistemos

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Įrankiai su kokybiškais antgaliais

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Dauguma šių įrankių ir sistemų yra parašyti Java, Python ir JavaScript, nes C++ ir C# yra patentuoti (nors GCC yra atvirojo kodo).

Pritaikėme bandymo aprėpties įrankius, o dabar „DevOps“ dujotiekis turėtų atrodyti taip, kaip paveikslėlyje pamokos pradžioje.

Papildomi žingsniai

Konteineriai

Kaip jau sakiau anksčiau, programų serveris gali būti talpinamas virtualioje mašinoje arba serveryje, tačiau konteineriai yra populiaresni.

Kas yra konteineriai? Trumpai tariant, virtualioje mašinoje operacinė sistema dažnai užima daugiau vietos nei programa, o konteinerio paprastai pakanka su keliomis bibliotekomis ir konfigūracija. Kai kuriais atvejais virtualios mašinos yra būtinos, tačiau konteineris gali talpinti programą kartu su serveriu be papildomų mokesčių.

Konteineriams dažniausiai imamasi Docker ir Kubernetes, nors yra ir kitų variantų.

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Skaitykite straipsnius apie Docker ir Kubernetes adresu opensource.com:

Tarpinės programinės įrangos automatizavimo įrankiai

Mūsų „DevOps“ grandinė orientuota į programos kūrimą ir pristatymą bendrai, tačiau yra ir kitų įdomių dalykų, kuriuos galite padaryti naudodami „DevOps“ įrankius. Pavyzdžiui, naudokite infrastruktūros kaip kodo (IaC) įrankius, dar žinomus kaip tarpinės programinės įrangos automatizavimo įrankiai. Šie įrankiai padeda automatizuoti tarpinės programinės įrangos diegimą, valdymą ir kitas užduotis. Pavyzdžiui, automatizavimo įrankis gali paimti programas (žiniatinklio programų serverį, duomenų bazę, stebėjimo įrankius) su teisinga konfigūracija ir nusiųsti jas į programų serverį.

Štai keletas atviros tarpinės programinės įrangos automatizavimo įrankių parinkčių:

Manekenų vadovas: „DevOps“ grandinių kūrimas naudojant atvirojo kodo įrankius

Išsami informacija straipsniuose opensource.com:

Ir dabar ką?

Tai tik ledkalnio viršūnė. „DevOps“ grandinė gali padaryti daug daugiau. Pradėkite nuo CI / CD įrankio ir sužinokite, ką dar galite automatizuoti, kad jūsų darbas būtų lengvesnis. Nepamirškite apie atviros komunikacijos priemonės už efektyvų bendradarbiavimą.

Štai keletas gerų „DevOps“ straipsnių pradedantiesiems:

Taip pat galite integruoti „DevOps“ su atvirais judriais įrankiais:

Šaltinis: www.habr.com

Добавить комментарий