Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Če ste novi v DevOps, si oglejte ta vodnik v petih korakih za ustvarjanje vašega prvega cevovoda.

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

DevOps je postal standardna rešitev za popravljanje počasnih, nepovezanih ali pokvarjenih procesov razvoja programske opreme. Težava je v tem, da če ste novi v DevOps in ne veste, kje začeti, morda ne razumete teh tehnik. Ta članek bo obravnaval definicijo cevovoda DevOps in zagotovil tudi navodila v petih korakih za njegovo ustvarjanje. Čeprav ta vadnica ni izčrpna, bi vam morala dati osnovo za začetek vaše poti in razširitev vašega znanja v prihodnosti. A začnimo z zgodovino.

Moje potovanje DevOps

Prej sem delal v ekipi za oblak Citi Group, ki je razvijala spletno aplikacijo Infrastructure-as-a-Service (IaaS) za upravljanje Citijeve infrastrukture v oblaku, vendar me je vedno zanimalo, kako narediti razvojni proces učinkovitejši in prinesti pozitivne kulturne spremembe v razvojna ekipa. Odgovor sem našel v knjigi, ki jo je priporočil Greg Lavender, tehnični direktor za arhitekturo in infrastrukturo v oblaku pri Citi. Knjiga se je imenovala The Phoenix Project (Projekt Phoenix) in razlaga načela DevOps, vendar se bere kot roman.

Tabela na zadnji strani knjige prikazuje, kako pogosto različna podjetja uporabljajo svoje sisteme v okolju izdaje:

Amazon: 23 na dan
Google: 5 na dan
Netflix: 500 na dan
Facebook: Enkrat na dan
Twitter: 3-krat na teden
Tipično podjetje: enkrat na 9 mesecev

Kako so frekvence Amazon, Google in Netflix sploh možne? To je zato, ker so ta podjetja ugotovila, kako ustvariti skoraj popoln cevovod DevOps.

Bili smo daleč od tega, dokler nismo implementirali DevOps v Citi. Takrat je imela moja ekipa drugačna okolja, vendar je bila uvedba na razvojnem strežniku povsem ročna. Vsi razvijalci so imeli dostop samo do enega razvojnega strežnika, ki temelji na IBM WebSphere Application Server Community Edition. Težava je bila v tem, da se je strežnik zaustavil vsakič, ko je poskušalo uvesti več uporabnikov hkrati, zato so morali razvijalci drug drugemu sporočati svoje namere, kar je bilo precej težko. Poleg tega so bile težave s pokritostjo testne kode na nizki ravni, okornimi postopki ročnega uvajanja in nezmožnostjo sledenja uvajanju kode, povezane z določeno nalogo ali uporabniško zgodbo.

Ugotovil sem, da je treba nekaj narediti in našel somišljenika. Odločila sva se, da bova sodelovala pri izgradnji začetnega cevovoda DevOps – on je postavil navidezni stroj Tomcat in aplikacijski strežnik, medtem ko sem jaz delal na Jenkinsu, integriral Atlassian Jira in BitBucket ter delal na pokritosti testne kode. Ta stranski projekt je bil zelo uspešen: skoraj popolnoma smo avtomatizirali številne procese, dosegli skoraj 100-odstotno delovanje našega razvojnega strežnika, zagotovili sledenje in izboljšano testno pokritost kode ter dodali možnost povezovanja vej Git s težavami ali uvajanji Jira. Večina orodij, ki smo jih uporabili za izgradnjo našega cevovoda DevOps, je bila odprtokodna.

Zdaj razumem, kako preprost je bil naš cevovod DevOps: nismo uporabljali razširitev, kot so datoteke Jenkins ali Ansible. Vendar je ta preprost cevovod dobro deloval, morda zaradi Paretovega načela (znanega tudi kot pravilo 80/20).

Kratek uvod v DevOps in cevovod CI/CD

Če vprašate več ljudi, "Kaj je DevOps?", boste verjetno dobili več različnih odgovorov. DevOps se je, tako kot Agile, razvil v številne različne discipline, vendar se bo večina ljudi strinjala o nekaj stvareh: DevOps je praksa razvoja programske opreme ali življenjski cikel razvoja programske opreme (SDLC), katerega osrednje načelo je spreminjanje kulture, v kateri razvijalci in ne- razvijalci obstajajo v okolju, v katerem:

Operacije, ki so se prej izvajale ročno, so avtomatizirane;
Vsak dela tisto, kar zna najbolje;
Število implementacij v določenem časovnem obdobju se poveča; Pretok se poveča;
Povečana razvojna fleksibilnost.

Čeprav prava programska orodja niso edina stvar, ki jo potrebujete za ustvarjanje okolja DevOps, so nekatera orodja nujna. Ključno orodje sta stalna integracija in stalna uvedba (CI/CD). V tem cevovodu imajo okolja različne stopnje (npr. DEV, INT, TST, QA, UAT, STG, PROD), številne operacije so avtomatizirane, razvijalci pa lahko napišejo visokokakovostno kodo, dosežejo agilnost razvoja in visoke stopnje uvajanja.

Ta članek opisuje pristop v petih korakih za ustvarjanje cevovoda DevOps, kot je prikazan na naslednjem diagramu, z uporabo odprtokodnih orodij.

1. korak: metode CI/CD

Prva stvar, ki jo potrebujete, je orodje CI/CD. Jenkins, odprtokodno orodje, ki temelji na Javi in ​​ima licenco MIT, je orodje, ki je populariziralo DevOps in je postalo de facto standard.

Kaj je torej Jenkins? Predstavljajte si ga kot nekakšen čarobni univerzalni daljinski upravljalnik, ki se lahko pogovarja in organizira različne storitve in orodja. Samo po sebi je orodje CI/CD, kot je Jenkins, neuporabno, vendar postane močnejše, ko se poveže z različnimi orodji in storitvami.

Jenkins je le eno od številnih odprtokodnih orodij CI/CD, ki jih lahko uporabite za izgradnjo svojega cevovoda DevOps.

Jenkins: Creative Commons in MIT
Travis CI: MIT
Tempomat: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU

Tako izgledajo procesi DevOps z orodjem CI/CD:

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Imate orodje CI/CD, ki se izvaja na vašem lokalnem gostitelju, vendar trenutno ne morete narediti veliko. Pojdimo na naslednjo stopnjo poti DevOps.

2. korak: Upravljajte sisteme za nadzor vira

Najboljši (in morda najlažji) način za preverjanje, ali lahko vaše orodje CI/CD naredi svojo čarobnost, je integracija z orodjem za nadzor izvorne kode (SCM). Zakaj potrebujete nadzor vira? Recimo, da razvijate aplikacijo. Kadarkoli ustvarite aplikacijo, programirate in ni pomembno, ali uporabljate Javo, Python, C++, Go, Ruby, JavaScript ali katerega koli od zilljonov programskih jezikov. Koda, ki jo napišete, se imenuje izvorna koda. Na začetku, zlasti ko delate sami, je verjetno v redu, če vse shranite v lokalni imenik. Ko pa projekt postaja večji in k sodelovanju povabite druge ljudi, potrebujete način za preprečevanje konfliktov ob učinkoviti delitvi sprememb. Potrebujete tudi način za obnovitev prejšnjih različic, ker ustvarjanje varnostnih kopij in kopiranje/lepljenje vanje postaja zastarelo. Vi (in vaši soigralci) potrebujete nekaj boljšega.

Tukaj nadzor izvorne kode postane skoraj nujen. To orodje shrani vašo kodo v repozitorije, spremlja različice in usklajuje delo udeležencev projekta.

Čeprav je na voljo veliko orodij za nadzor vira, je Git standard, in prav je tako. Zelo priporočam uporabo Gita, čeprav obstajajo tudi druge odprtokodne možnosti, če želite.

Git: GPLv2 in LGPL v2.1
Subverzija: Apache 2.0
Sistem sočasnih različic (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Tako izgleda cevovod DevOps z dodatkom kontrolnikov izvorne kode.

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Orodje CI/CD lahko avtomatizira procese pregleda, pridobivanja izvorne kode in sodelovanja med člani. Ni slabo? Toda kako ga spremeniti v delujočo aplikacijo, da jo bodo lahko uporabljale in cenile milijarde ljudi?

3. korak: Ustvarite orodje za avtomatizacijo gradnje

Super! Lahko pregledate kodo in spremenite nadzor vira ter povabite svoje prijatelje, da sodelujejo pri razvoju. Vendar še niste ustvarili aplikacije. Če želite izdelati spletno aplikacijo, jo je treba prevesti in zapakirati v razmestitveni paketni format ali zagnati kot izvršljivo datoteko. (Upoštevajte, da razloženega programskega jezika, kot je JavaScript ali PHP, ni treba prevesti).

Uporabite orodje za avtomatizacijo gradnje. Ne glede na to, katero orodje za avtomatizacijo gradnje se odločite uporabiti, imajo vsa isti cilj: zgraditi izvorno kodo v določeno želeno obliko in avtomatizirati nalogo čiščenja, prevajanja, testiranja in uvajanja v določeno okolje. Orodja za gradnjo se razlikujejo glede na vaš programski jezik, vendar je tukaj nekaj pogostih odprtokodnih možnosti.

Ime
Licenca
Programski jezik

Maven
Apache 2.0
Java

Mravlja
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java

Poskrbite
GNU
N / A

grunt
MIT
JavaScript

Opiti
MIT
JavaScript

Gradbenik
Apache
Ruby

Rake
MIT
Ruby

AAP
GNU
Python

SCons
MIT
Python

BitBake
GPLv2
Python

Torta
MIT
C#

ASDF
Izseljenec (MIT)
LISP

Cabal
BSD
Haskell

Super! Konfiguracijske datoteke orodja za avtomatizacijo gradnje lahko vstavite v svoj sistem za nadzor vira in pustite, da vaše orodje CI/CD vse združi.

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Vse je v redu, kajne? Toda kje namestiti svojo aplikacijo?

4. korak: Strežnik spletnih aplikacij

Za zdaj imate zapakirano datoteko, ki je lahko izvedljiva ali namestiljiva. Da bi bila katera koli aplikacija resnično uporabna, mora zagotavljati neke vrste storitev ali vmesnik, vendar potrebujete vsebnik za gostovanje vaše aplikacije.

Strežnik spletnih aplikacij je prav tak vsebnik. Strežnik zagotavlja okolje, v katerem je mogoče definirati logiko paketa, ki se uvaja. Strežnik ponuja tudi vmesnik in ponuja spletne storitve z izpostavljanjem vtičnic zunanjemu svetu. Potrebujete strežnik HTTP in nekaj okolja (na primer virtualni stroj), da ga namestite. Zaenkrat predpostavimo, da boste izvedeli več o tem (čeprav bom spodaj obravnaval vsebnike).

Obstaja več odprtokodnih strežnikov spletnih aplikacij.

Ime
Licenca
Programski jezik

Tomcat
Apache 2.0
Java

pomol
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

GlassFish
CDDL & GNU manj javno
Java

Django
3-člen BSD
Python

Tornado
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Tračnice
MIT
Ruby

Node.js
MIT
Javascript

Vaš cevovod DevOps je skoraj pripravljen za uporabo. Dobro opravljeno!

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Medtem ko se lahko ustavite pri tem in sami poskrbite za integracijo, je kakovost kode pomembna stvar, ki mora razvijalca aplikacij skrbeti.

5. korak: Pokritost testiranja kode

Izvajanje testov je lahko še ena okorna zahteva, vendar morajo razvijalci zgodaj odkriti morebitne napake v aplikaciji in izboljšati kakovost kode, da zagotovijo zadovoljstvo končnih uporabnikov. Na srečo obstaja veliko odprtokodnih orodij za testiranje vaše kode in dajanje priporočil za izboljšanje njene kakovosti. Še bolje pa je, da se večina orodij CI/CD lahko poveže s temi orodji in avtomatizira postopek.

Testiranje kode je sestavljeno iz dveh delov: okvirov za testiranje kode, ki vam pomagajo pri pisanju in izvajanju testov, in orodij za predloge, ki vam pomagajo izboljšati kakovost kode.

Sistemi za testiranje kod

Ime
Licenca
Programski jezik

JUnit
Eclipse Public License
Java

EasyMock
Apache
Java

mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Hipoteza
Mozilla
Python

tox
MIT
Python

Sistemi priporočil za izboljšanje kode

Ime
Licenca
Programski jezik

Pokritost
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Pokritost.py
Apache 2.0
Python

Emma
Skupna javna licenca
Java

JaCoCo
Eclipse Public License
Java

Hipoteza
Mozilla
Python

tox
MIT
Python

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

mocha
MIT
JavaScript

obstaja
MIT
JavaScript

Upoštevajte, da je večina zgoraj omenjenih orodij in ogrodij napisanih za Javo, Python in JavaScript, saj sta C++ in C# lastniška programska jezika (čeprav je GCC odprtokoden).

Zdaj, ko ste implementirali orodja za pokritost testov, bi moral biti vaš cevovod DevOps podoben diagramu, prikazanemu na začetku te vadnice.

Dodatni koraki

Zabojniki

Kot sem rekel, lahko svoj strežnik gostite na virtualnem stroju ali strežniku, vendar so kontejnerji priljubljena rešitev.

Kaj so kontejnerji? Kratka razlaga je, da virtualni stroj potrebuje ogromno pomnilnika operacijskega sistema, ki presega velikost aplikacije, medtem ko vsebnik potrebuje le nekaj knjižnic in konfiguracij za izvajanje aplikacije. Očitno še vedno obstajajo pomembne uporabe za virtualni stroj, vendar je vsebnik lahka rešitev za gostovanje aplikacije, vključno z aplikacijskim strežnikom.

Čeprav obstajajo druge možnosti vsebnikov, sta najbolj priljubljena Docker in Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Orodja za vmesno avtomatizacijo

Naš program DevOps je osredotočen predvsem na skupno ustvarjanje in uvajanje aplikacij, vendar je z orodji DevOps mogoče narediti še veliko drugih stvari. Eden od njih je uporaba orodij Infrastructure as Code (IaC), ki so znana tudi kot orodja za avtomatizacijo vmesne programske opreme. Ta orodja pomagajo avtomatizirati namestitev, upravljanje in druge naloge za vmesno programsko opremo. Tako lahko na primer orodje za avtomatizacijo ekstrahira aplikacije, kot so strežnik spletnih aplikacij, baza podatkov in orodje za spremljanje, s pravilnimi konfiguracijami in jih namesti na strežnik aplikacij.

Tukaj je nekaj odprtokodnih orodij za avtomatizacijo vmesne programske opreme:

Ansible: GNU Public
SaltStack: Apache 2.0
Kuhar: Apache 2.0
Lutka: Apache ali GPL

Vodnik za začetnike: Ustvarjanje cevovoda DevOps

Poiščite podrobnosti o tem, kako pridobiti iskan poklic od začetka ali navzgor v smislu spretnosti in plače z obiskovanjem plačljivih spletnih tečajev SkillFactory:

več tečajev

Koristno

Vir: www.habr.com

Dodaj komentar