Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda
Izgradnja vašeg prvog DevOps lanca u pet koraka za početnike.

DevOps je postao lijek za prespore, nepovezane i inače problematične razvojne procese. Ali trebate minimalno znanje o DevOps-u. Pokrivaće koncepte kao što je DevOps lanac i kako stvoriti jedan u pet koraka. Ovo nije potpuni vodič, već samo "riba" koja se može proširiti. Počnimo sa istorijom.

Moj uvod u DevOps

Radio sam sa oblacima u Citi Grupi i razvijao IaaS web aplikaciju za upravljanje Citijevom cloud infrastrukturom, ali me oduvek zanimalo kako da optimizujem razvojni lanac i unapredim kulturu među programerima. Greg Lavender, naš CTO za Cloud arhitekturu i infrastrukturu, preporučio mi je ovu knjigu. Phoenix Project. Predivno objašnjava principe DevOps-a i čita se kao roman.

Tabela na poleđini pokazuje koliko često kompanije uvode nove verzije:

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Kako Amazon, Google i Netflix uspijevaju da uvedu toliko toga? I jednostavno je: smislili su kako stvoriti gotovo savršen DevOps lanac.

Stvari su bile sasvim drugačije za nas u Citiju sve dok nismo prešli na DevOps. Tada je moj tim imao različita okruženja, ali smo isporuku na razvojni server obavljali ručno. Svi programeri su imali pristup samo jednom razvojnom poslužitelju baziranom na IBM WebSphere Application Server Community Edition. Uz istovremeni pokušaj isporuke, server je „pao“, a svaki put smo morali „bolno“ da se dogovaramo među sobom. Takođe smo imali nedovoljnu pokrivenost koda testovima, dugotrajan ručni proces isporuke i nikakav način da pratimo isporuku koda uz pomoć nekog zadatka ili zahtjeva klijenta.

Bilo je jasno da nešto hitno treba uraditi i našao sam kolegu istomišljenika. Odlučili smo da zajedno kreiramo prvi DevOps lanac – on je postavio virtuelnu mašinu i Tomcat server aplikacija, a ja sam se pobrinuo za Jenkinsa, integraciju sa Atlassian Jira i BitBucket, kao i pokrivanje koda testovima. Projekat je bio uspješan: u potpunosti smo automatizirali razvojni lanac, postigli skoro 100% neprekidnog rada na razvojnom serveru, bili smo u mogućnosti da pratimo i poboljšamo pokrivenost koda pomoću testova, a Git grana je mogla biti vezana za Jira isporuku i problem. I skoro svi alati koje smo koristili za izgradnju DevOps lanca bili su otvorenog koda.

U stvari, lanac je bio pojednostavljen, jer nismo ni primijenili napredne konfiguracije koristeći Jenkins ili Ansible. Ali uspjeli smo. Možda je to posljedica principa Pareto (poznato i kao pravilo 80/20).

Kratak opis DevOps i CI/CD lanca

DevOps ima različite definicije. DevOps, kao i Agile, uključuje različite discipline. Ali većina će se složiti sa sljedećom definicijom: DevOps je metoda ili životni ciklus razvoja softvera, čiji je glavni princip stvaranje kulture u kojoj su programeri i drugi zaposlenici „na istoj talasnoj dužini“, ručni rad je automatiziran, svako radi ono u čemu je najbolji, povećava se učestalost isporuka, povećava se produktivnost rada, povećava se fleksibilnost.

Iako sami alati nisu dovoljni za stvaranje DevOps okruženja, oni su neophodni. Najvažnija od njih je kontinuirana integracija i kontinuirana isporuka (CI/CD). Postoje različite faze u lancu za svako okruženje (npr. DEV (razvoj), INT (integracija), TST (testiranje), QA (osiguranje kvaliteta), UAT (testiranje prihvatanja korisnika), STG (priprema), PROD (upotreba)) , ručni zadaci su automatizirani, programeri mogu napraviti kvalitetan kod, isporučiti ga i lako ga rekonstruirati.

Ova napomena opisuje kako kreirati DevOps lanac u pet koraka, kao što je prikazano na slici ispod, koristeći alate otvorenog koda.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Hajdemo na posao.

Korak 1: CI/CD platforma

Prije svega, potreban vam je CI/CD alat. Jenkins je CI/CD alat otvorenog koda sa licencom MIT-a napisan u Javi koji je popularizirao DevOps pokret i postao de facto standard za CICD.

Šta je Dženkins? Zamislite da imate magičnu kontrolnu tablu za razne usluge i alate. Sam po sebi, CI/CD alat poput Jenkinsa je beskorisan, ali s različitim alatima i uslugama postaje svemoćan.

Osim Jenkinsa, postoji mnogo drugih alata otvorenog koda, odaberite bilo koji.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Evo kako DevOps proces izgleda sa CI/CD alatom

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Imate CI/CD alat u localhost-u, ali još nema puno toga za napraviti. Idemo na sljedeći korak.

Korak 2: Kontrola verzija

Najbolji (i vjerovatno najlakši) način da testirate magiju CI/CD alata je da ga integrirate sa alatom za upravljanje izvornom kontrolom (SCM). Zašto vam je potrebna kontrola verzija? Recimo da pravite aplikaciju. Pišete ga na Javi, Pythonu, C++, Go, Ruby, JavaScriptu ili bilo kom drugom jeziku koji je vagon i mala kolica. Ono što pišete zove se izvorni kod. U početku, posebno ako radite sami, možete sve spremiti u lokalni direktorij. Ali kako projekat raste i sve više ljudi se pridružuje, potreban vam je način da dijelite promjene koda, ali izbjegavate sukobe prilikom spajanja promjena. I također morate nekako vratiti prethodne verzije bez korištenja sigurnosnih kopija i korištenja metode kopiranja i lijepljenja za datoteke koda.

I ovdje bez SCM-a nigdje. SCM pohranjuje kod u spremišta, upravlja njegovim verzijama i koordinira ga među programerima.

Postoji mnogo SCM alata, ali Git je zasluženo postao de facto standard. Savjetujem vam da ga koristite, ali postoje i druge opcije.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Evo kako izgleda DevOps cevovod nakon dodavanja SCM-a.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

CI/CD alat može automatizirati prijenos i preuzimanje izvornog koda i timsku suradnju. Nije loše? Ali kako sada od ovoga napraviti funkcionalnu aplikaciju, koju vole milijarde korisnika?

Korak 3: Napravite alat za automatizaciju

Sve ide kako treba. Možete učitati kod i unijeti promjene u izvornu kontrolu, te pozvati prijatelje da rade s vama. Ali još uvijek nemate aplikaciju. Da bi ovo bila web aplikacija, mora biti kompajlirana i upakovana za distribuciju ili pokrenuta kao izvršna. (Interpretirani programski jezik kao što je JavaScript ili PHP ne mora biti preveden.)

Koristite alat za automatizaciju izgradnje. Koji god alat da odaberete, on će sastaviti kod u pravom formatu i automatizirati čišćenje, kompilaciju, testiranje i isporuku. Alati za pravljenje razlikuju se u zavisnosti od jezika, ali se obično koriste sljedeće opcije otvorenog koda.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Savršeno! Sada ubacimo konfiguracijske datoteke alata za automatizaciju izgradnje u kontrolu izvora tako da ih CI/CD alat napravi.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Dobro je. Ali gdje je sve to sada izbaciti?

Korak 4: Server web aplikacija

Dakle, imate upakovanu datoteku koja se može izvršiti ili pokrenuti. Da bi aplikacija bila zaista korisna, mora imati neku vrstu servisa ili interfejsa, ali sve to morate negdje staviti.

Web aplikacija može biti smještena na serveru web aplikacija. Server aplikacija pruža okruženje u kojem možete izvršavati upakovanu logiku, renderirati sučelja i izlagati web servise preko utičnice. Potreban vam je HTTP server i nekoliko drugih okruženja (virtuelna mašina, na primer) da biste instalirali server aplikacija. Za sada, hajde da se pretvaramo da se nosite sa svim ovim dok idete (iako ću o kontejnerima govoriti u nastavku).

Postoji nekoliko otvorenih servera web aplikacija.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Već imamo skoro funkcionalan DevOps lanac. Odličan posao!

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

U principu, možete stati ovdje, onda se možete sami nositi, ali vrijedi razgovarati o kvaliteti koda.

Korak 5: Testirajte pokrivenost

Testiranje oduzima puno vremena i truda, ali bolje je odmah pronaći greške i poboljšati kod kako bi zadovoljio krajnje korisnike. U tu svrhu postoji mnogo otvorenih alata koji ne samo da će testirati kod, već i savjetovati kako ga poboljšati. Većina CI/CD alata može se priključiti na ove alate i automatizirati proces.

Testiranje je podijeljeno na dva dijela: testiranje okvira za pisanje i izvršavanje testova i alate sa savjetima za poboljšanje kvaliteta koda.

Testing Frameworks

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Alati s kvalitetnim savjetima

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Većina ovih alata i okvira napisana je za Javu, Python i JavaScript jer su C++ i C# vlasnički (iako je GCC open source).

Primijenili smo alate za pokrivanje testa i sada bi DevOps cevovod trebao izgledati kao na slici na početku tutorijala.

Dodatni koraci

Kontejneri

Kao što sam već rekao, server aplikacija može biti hostovan u virtuelnoj mašini ili serveru, ali kontejneri su popularniji.

Šta su kontejneri? Ukratko, u virtuelnoj mašini operativni sistem često zauzima više prostora od aplikacije, a kontejner je obično dovoljan sa nekoliko biblioteka i konfiguracija. U nekim slučajevima, virtuelne mašine su neophodne, ali kontejner može da primi aplikaciju zajedno sa serverom bez dodatnih troškova.

Za kontejnere se obično uzimaju Docker i Kubernetes, iako postoje i druge opcije.

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Pročitajte članke o Dockeru i Kubernetesu na opensource.com:

Alati za automatizaciju srednjeg softvera

Naš DevOps lanac fokusiran je na zajedničku izgradnju i isporuku aplikacije, ali postoje i druge zanimljive stvari koje možete učiniti s DevOps alatima. Na primjer, koristite alate Infrastructure as Code (IaC), također poznate kao alati za automatizaciju međuvera. Ovi alati pomažu u automatizaciji instalacije, upravljanja i drugih zadataka za međuverski softver. Na primjer, alat za automatizaciju može preuzeti aplikacije (server web aplikacija, baza podataka, alati za praćenje) s ispravnim konfiguracijama i gurnuti ih na poslužitelj aplikacija.

Evo nekoliko opcija za otvorene alate za automatizaciju međuvera:

Vodič za lutke: Izgradnja DevOps lanaca pomoću alata otvorenog koda

Detalji u člancima opensource.com:

A šta sada?

Ovo je samo vrh ledenog brega. DevOps lanac može učiniti mnogo više. Počnite s CI/CD alatom i pogledajte šta još možete automatizirati da biste olakšali svoj posao. Ne zaboravi otvoreni komunikacijski alati za efektivnu saradnju.

Evo još nekoliko dobrih DevOps članaka za početnike:

Također možete integrirati DevOps s otvorenim agilnim alatima:

izvor: www.habr.com

Dodajte komentar