Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji
Izgradnja vaše prve verige DevOps v petih korakih za začetnike.

DevOps je postal zdravilo za prepočasne, nepovezane in drugače problematične razvojne procese. Vendar potrebujete minimalno znanje o DevOps. Zajemal bo koncepte, kot je veriga DevOps in kako ustvariti enega v petih korakih. To ni popoln vodnik, ampak le "riba", ki jo je mogoče razširiti. Začnimo z zgodovino.

Moj uvod v DevOps

Včasih sem delal z oblaki pri Citi Group in razvijal spletno aplikacijo IaaS za upravljanje Citijeve infrastrukture v oblaku, vendar me je vedno zanimalo, kako optimizirati razvojno verigo in izboljšati kulturo med razvijalci. Greg Lavender, naš tehnični direktor za arhitekturo in infrastrukturo v oblaku, mi je priporočil to knjigo. Projekt Phoenix. Lepo razlaga načela DevOps in se bere kot roman.

Tabela na zadnji strani prikazuje, kako pogosto podjetja uvajajo nove različice:

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Kako Amazonu, Googlu in Netflixu uspe toliko uvesti? In preprosto je: ugotovili so, kako ustvariti skoraj popolno verigo DevOps.

Za nas v Citiju so bile stvari zelo drugačne, dokler nismo preklopili na DevOps. Potem je imela moja ekipa drugačna okolja, vendar smo dostavo na razvojni strežnik opravili ročno. Vsi razvijalci so imeli dostop samo do enega razvojnega strežnika, ki temelji na IBM WebSphere Application Server Community Edition. Ob hkratnem poskusu dostave je »padel« strežnik in vsakič smo se morali »boleče« pogajati med sabo. Imeli smo tudi nezadostno pokritost kode s testi, dolgotrajen ročni postopek dostave in nobenega načina, da bi sledili dostavi kode s pomočjo neke naloge ali zahteve odjemalca.

Bilo je jasno, da je treba nekaj nujno narediti, in našel sem somišljenika. Skupaj sva se odločila ustvariti prvo verigo DevOps – on je postavil virtualni stroj in aplikacijski strežnik Tomcat, jaz pa za Jenkinsa, integracijo z Atlassian Jira in BitBucket ter pokritost kode s testi. Projekt je bil uspešen: v celoti smo avtomatizirali razvojno verigo, dosegli skoraj 100-odstotno delovanje na razvojnem strežniku, lahko smo spremljali in izboljšali pokritost kode s testi, Git vejo pa je bilo mogoče povezati z dostavo in izdajo Jira. Skoraj vsa orodja, ki smo jih uporabili za izgradnjo verige DevOps, so bila odprtokodna.

Pravzaprav je bila veriga poenostavljena, saj nismo uporabili niti naprednih konfiguracij z Jenkinsom ali Ansibleom. Ampak nama je uspelo. Morda je to posledica principa Pareto (tudi pravilo 80/20).

Kratek opis DevOps in verige CI/CD

DevOps ima različne definicije. DevOps, tako kot Agile, vključuje različne discipline. Večina pa se bo strinjala z naslednjo definicijo: DevOps je metoda ali življenjski cikel razvoja programske opreme, katerega glavno načelo je ustvariti kulturo, kjer so razvijalci in drugi zaposleni »na isti valovni dolžini«, ročno delo je avtomatizirano, vsak počne tisto, v čemer je najboljši, poveča se pogostost dostav, poveča se produktivnost dela, poveča se fleksibilnost.

Čeprav sama orodja niso dovolj za ustvarjanje okolja DevOps, so nepogrešljiva. Najpomembnejši med njimi sta stalna integracija in stalna dostava (CI/CD). Za vsako okolje obstajajo različne stopnje v verigi (npr. DEV (razvoj), INT (integracija), TST (testiranje), QA (zagotavljanje kakovosti), UAT (uporabniško sprejemljivo testiranje), STG (priprava), PROD (uporaba)) , so ročna opravila avtomatizirana, razvijalci lahko izdelajo kakovostno kodo, jo dostavijo in zlahka obnovijo.

Ta opomba opisuje, kako ustvariti verigo DevOps v petih korakih, kot je prikazano na spodnji sliki, z uporabo odprtokodnih orodij.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Pojdimo k poslu.

1. korak: Platforma CI/CD

Najprej potrebujete orodje CI/CD. Jenkins je odprtokodno orodje CI/CD z licenco MIT, napisano v Javi, ki je populariziralo gibanje DevOps in postalo de facto standard za CICD.

Kaj je Jenkins? Predstavljajte si, da imate čarobno nadzorno ploščo za različne storitve in orodja. Samo po sebi je orodje CI/CD, kot je Jenkins, neuporabno, z različnimi orodji in storitvami pa postane vsemogočno.

Poleg Jenkinsa obstaja še veliko drugih odprtokodnih orodij, izberite katero koli.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Takole je videti postopek DevOps z orodjem CI/CD

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

V lokalnem gostitelju imate orodje CI/CD, vendar še ni treba narediti veliko. Pojdimo na naslednji korak.

2. korak: Različice

Najboljši (in verjetno najlažji) način za preizkus čarovnije orodja CI/CD je, da ga integrirate z orodjem za upravljanje nadzora vira (SCM). Zakaj potrebujete nadzor različic? Recimo, da pripravljate prijavo. Napišete ga v Javi, Pythonu, C++, Go, Rubyju, JavaScriptu ali katerem koli drugem jeziku, ki je vagon in mali voziček. Kar napišete, se imenuje izvorna koda. Sprva, zlasti če delate sami, lahko vse shranite v lokalni imenik. Toda ko projekt raste in se mu pridružuje več ljudi, potrebujete način za skupno rabo sprememb kode, vendar se izogibajte konfliktom pri združevanju sprememb. Prav tako morate nekako obnoviti prejšnje različice brez uporabe varnostnih kopij in z uporabo metode kopiranja in lepljenja za kodne datoteke.

In tukaj brez SCM nikjer. SCM shranjuje kodo v repozitorije, upravlja njene različice in jo usklajuje med razvijalci.

Obstaja veliko orodij SCM, vendar je Git zasluženo postal de facto standard. Svetujem vam, da ga uporabite, vendar obstajajo druge možnosti.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Evo, kako izgleda cevovod DevOps po dodajanju SCM.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Orodje CI/CD lahko avtomatizira nalaganje in prenos izvorne kode ter timsko sodelovanje. Ni slabo? Toda kako zdaj iz tega narediti delujočo aplikacijo, ki jo ljubijo milijarde uporabnikov?

3. korak: Orodje za avtomatizacijo gradnje

Vse poteka kot mora. Lahko naložite kodo in potrdite spremembe za nadzor vira ter povabite prijatelje, da sodelujejo z vami. Vendar še nimate aplikacije. Da bi bila to spletna aplikacija, mora biti prevedena in zapakirana za distribucijo ali zagnana kot izvršljiva datoteka. (Tolmačenega programskega jezika, kot sta JavaScript ali PHP, ni treba prevajati.)

Uporabite orodje za avtomatizacijo gradnje. Ne glede na to, katero orodje izberete, bo sestavilo kodo v pravi obliki in avtomatiziralo čiščenje, prevajanje, testiranje in dostavo. Orodja za gradnjo se razlikujejo glede na jezik, vendar se običajno uporabljajo naslednje odprtokodne možnosti.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Popoln! Zdaj pa vstavimo konfiguracijske datoteke orodja za avtomatizacijo gradnje v nadzor vira, da jih orodje CI/CD zgradi.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Dober občutek. Toda kje je zdaj vse to?

4. korak: Strežnik spletnih aplikacij

Torej imate zapakirano datoteko, ki jo je mogoče izvesti ali razviti. Da bi bila aplikacija res uporabna, mora imeti neko storitev ali vmesnik, vendar je treba vse to nekam postaviti.

Spletna aplikacija se lahko gosti na strežniku spletnih aplikacij. Aplikacijski strežnik zagotavlja okolje, kjer lahko izvajate pakirano logiko, upodabljate vmesnike in izpostavite spletne storitve prek vtičnice. Za namestitev aplikacijskega strežnika potrebujete strežnik HTTP in nekaj drugih okolij (na primer virtualni stroj). Za zdaj se pretvarjajmo, da se z vsem tem ukvarjate sproti (čeprav bom o vsebnikih govoril spodaj).

Obstaja več odprtih strežnikov spletnih aplikacij.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Imamo že skoraj delujočo verigo DevOps. Odlično opravljeno!

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Načeloma se lahko ustavite tukaj, nato pa se lahko sami spopadete, vendar je vredno govoriti o kakovosti kode.

5. korak: preizkusite pokritost

Testiranje zahteva veliko časa in truda, vendar je bolje, da takoj poiščete napake in izboljšate kodo, da bo ugajala končnim uporabnikom. V ta namen obstaja veliko odprtih orodij, ki kodo ne bodo le testirala, ampak tudi svetovala, kako jo izboljšati. Večina orodij CI/CD se lahko priključi na ta orodja in avtomatizira postopek.

Testiranje je razdeljeno na dva dela: testna ogrodja za pisanje in izvajanje testov ter orodja z namigi za izboljšanje kakovosti kode.

Testiranje okvirjev

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Orodja s kakovostnimi nasveti

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Večina teh orodij in ogrodij je napisanih za Javo, Python in JavaScript, ker sta C++ in C# lastniška (čeprav je GCC odprtokoden).

Uporabili smo orodja za testno pokritost in zdaj mora biti cevovod DevOps videti kot slika na začetku vadnice.

Dodatni koraki

Zabojniki

Kot sem že rekel, lahko aplikacijski strežnik gostuje v virtualnem stroju ali strežniku, vendar so vsebniki bolj priljubljeni.

Kaj so kontejnerji? Skratka, v virtualnem stroju operacijski sistem pogosto zavzame več prostora kot aplikacija in vsebnik običajno zadostuje z nekaj knjižnicami in konfiguracijo. V nekaterih primerih so virtualni stroji nepogrešljivi, vendar lahko vsebnik sprejme aplikacijo skupaj s strežnikom brez dodatnih stroškov.

Za vsebnike se običajno vzameta Docker in Kubernetes, čeprav obstajajo tudi druge možnosti.

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Preberite članke o Dockerju in Kubernetesu na opensource.com:

Orodja za avtomatizacijo vmesne programske opreme

Naša veriga DevOps je osredotočena na skupno gradnjo in dostavo aplikacije, vendar obstajajo druge zanimive stvari, ki jih lahko počnete z orodji DevOps. Uporabite na primer orodja Infrastructure as Code (IaC), znana tudi kot orodja za avtomatizacijo vmesne programske opreme. Ta orodja pomagajo avtomatizirati namestitev, upravljanje in druge naloge za vmesno programsko opremo. Orodje za avtomatizacijo lahko na primer sprejme aplikacije (strežnik spletnih aplikacij, baza podatkov, orodja za spremljanje) s pravilnimi konfiguracijami in jih potisne na strežnik aplikacij.

Tukaj je nekaj možnosti za odprta orodja za avtomatizacijo vmesne programske opreme:

Vodnik za telebane: Gradnja verig DevOps z odprtokodnimi orodji

Podrobnosti v člankih opensource.com:

In kaj zdaj?

To je le vrh ledene gore. Veriga DevOps lahko naredi veliko več. Začnite z orodjem CI/CD in poglejte, kaj lahko še avtomatizirate, da si olajšate delo. Ne pozabi na odprta komunikacijska orodja za učinkovito sodelovanje.

Tukaj je še nekaj dobrih člankov o DevOps za začetnike:

DevOps lahko integrirate tudi z odprtimi agilnimi orodji:

Vir: www.habr.com

Dodaj komentar