Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Kana iwe uri mutsva kuDevOps, tarisa iyi nhanho-nhanho nhanho yekugadzira yako yekutanga pombi.

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

DevOps yave mhinduro yakajairwa yekugadzirisa inononoka, isina kubatana kana yakatyoka magadzirirwo esoftware. Dambudziko nderekuti kana uri mutsva kuDevOps uye usingazive pekutangira, unogona kushaya kunzwisisa kwemaitiro aya. Ichi chinyorwa chichakurukura tsananguro yepombi yeDevOps uye ichapawo nhanho-nhanho mirairo yekugadzira imwe. Kunyange ichi chidzidzo chisina kupera, chinofanira kukupa hwaro hwekutanga rwendo rwako uye kuwedzera ruzivo rwako mune ramangwana. Asi ngatitange nenhoroondo.

Rwendo rwangu rweDevOps

Ini ndakamboshanda paCiti Group cloud team kugadzira Infrastructure-as-a-Service (IaaS) web application yekugadzirisa Citi's cloud infrastructure, asi ndaigara ndichifarira maitiro ekuita kuti hurongwa hwekuvandudza hunyatsoshanda uye kuunza shanduko yakanaka yetsika kune timu yebudiriro. Ndakawana mhinduro mubhuku rakakurudzirwa naGreg Lavender, CTO weCloud Architecture uye Infrastructure kuCiti. Bhuku racho rainzi The Phoenix Project (Iyo Phoenix Project), uye inotsanangura misimboti yeDevOps, asi inoverenga senge novel.

Tafura iri kuseri kwebhuku inoratidza kuti kangani makambani akasiyana anoisa masisitimu avo munzvimbo yekuburitsa:

Amazon: 23 pazuva
Google: 5 pazuva
Netflix: 500 pazuva
Facebook: Kamwe pazuva
Twitter: Katatu pasvondo
Yakajairika kambani: Kamwe chete mwedzi ye9

Ko Amazon, Google neNetflix ma frequency anogoneka sei? Izvi zvinodaro nekuti makambani aya akafunga nzira yekugadzira inenge yakakwana DevOps pombi.

Isu taive kure neizvi kusvika taita DevOps kuCiti. Kare ikako, timu yangu yaive nemhoteredzo dzakasiyana, asi kutumirwa pane server yekuvandudza kwaive nemanyorero. Vese vagadziri vaikwanisa kuwana imwe chete sevha yekusimudzira yakavakirwa paIBM WebSphere Application Server Community Edition. Dambudziko nderekuti sevha yaivhara pese paiedza vashandisi vakawanda kuisa panguva imwe chete, saka vanogadzira vaifanira kutaurirana vavariro yavo kune mumwe nemumwe, izvo zvairwadza. Pamusoro pezvo, pakanga paine nyaya neiyo yakaderera-level test code coverage, inorema manyorerwo ekuisa manyorerwo maitiro, uye kusakwanisa kutevedzera kutumirwa kwekodhi ine chekuita neramwe basa kana nyaya yemushandisi.

Ndakaona kuti pane zvaifanira kuitwa ndokubva ndawana mumwe wandaishanda naye ane pfungwa dzakafanana. Takafunga kushandirapamwe pakuvaka pombi yekutanga yeDevOps - akamisa Tomcat virtual muchina uye application server ini ndichishanda paJenkins, yakabatanidza Atlassian Jira neBitBucket, uye ndikashanda pabvunzo kodhi yekuvhara. Iri purojekiti yeparutivi yakabudirira kwazvo: isu takapotsa taita otomatiki akawanda maitiro, takawana ingangoita 100% uptime pane yedu yekuvandudza server, yakapihwa yekutevera uye yakagadziridzwa bvunzo kufukidzwa kwekodhi, uye takawedzera kugona kubatanidza matavi eGit kune nyaya dzeJira kana deployments. Zvizhinji zvezvishandiso zvatakashandisa kuvaka pombi yedu yeDevOps yaive yakavhurika sosi.

Ikozvino ini ndinonzwisisa kuti yakapusa sei pombi yedu yeDevOps: isu hatina kushandisa ekuwedzera seJenkins mafaera kana Ansible. Zvisinei, iyi pombi iri nyore yakashanda zvakanaka, zvichida nekuda kwePareto musimboti (unozivikanwawo semutemo we80/20).

Sumo Ipfupi kune DevOps uye iyo CI/CD Pipeline

Kana iwe ukabvunza vanhu vakati wandei, "Chii chinonzi DevOps?", Unogona kuwana akati wandei mhinduro dzakasiyana. DevOps, seAgile, yakashanduka kuti ienderane nedzidziso dzakasiyana siyana, asi vanhu vazhinji vanobvumirana pazvinhu zvishoma: DevOps inzira yekuvandudza software kana software yekuvandudza hupenyu kutenderera (SDLC) iyo yepakati tenet iri kushandura tsika umo vanogadzira nevasiri-. vagadziri varipo munzvimbo umo:

Mashandisirwo aimboitwa nemaoko ave otomatiki;
Munhu wose anoita zvaanoita zvakanakisisa;
Nhamba yekushandiswa pane imwe nguva yenguva inowedzera; Kupinda kunowedzera;
Kuwedzera kushanduka kwekusimudzira.

Nepo kuve neakakodzera maturusi esoftware handicho chete chinhu chaunoda kugadzira nharaunda yeDevOps, mamwe maturusi akakosha. Chishandiso chakakosha ndechekuenderera mberi nekubatanidzwa uye kuenderera mberi kwekutumira (CI / CD). Mune iyi pombi, nharaunda dzine nhanho dzakasiyana (semuenzaniso DEV, INT, TST, QA, UAT, STG, PROD), mabasa mazhinji anongoitwa otomatiki, uye vanogadzira vanogona kunyora emhando yepamusoro kodhi, kuwana budiriro agility, uye yakakwirira deployment rates.

Ichi chinyorwa chinotsanangura nzira nhanho shanu dzekugadzira pombi yeDevOps senge inoratidzwa mudhayagiramu inotevera uchishandisa yakavhurika sosi maturusi.

Danho 1: CI/CD Nzira

Chinhu chekutanga chaunoda iCI/CD chishandiso. Jenkins, chishandiso chakavhurika sosi yakavakirwa paJava uye ine rezinesi pasi peMIT rezenisi, ndicho chishandiso chakakurumbira DevOps uye chave chiyero che de facto.

Saka chii chinonzi Jenkins? Funga nezvayo seimwe mhando yemashiripiti yepasirese kure kure inogona kutaura uye kuronga akasiyana masevhisi uye maturusi. Payo pachayo, CI/CD chishandiso chakaita seJenkins hachibatsiri, asi chinova chakanyanya simba sezvo chichibatanidza kune akasiyana maturusi nemasevhisi.

Jenkins ingori imwe yeakawanda akavhurika sosi CI/CD maturusi aunogona kushandisa kuvaka yako DevOps pombi.

Jenkins: Creative Commons uye MIT
Travis CI: MIT
CruiseControl:BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU

Hezvino izvo DevOps maitiro anotaridzika neCI/CD chishandiso:

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Iwe une CI/CD chishandiso chinomhanya pane yako localhost, asi hapana zvakawanda zvaunogona kuita panguva ino. Ngatiendererei kune inotevera nhanho yerwendo rweDevOps.

Danho 2: Tonga Source Kudzora Systems

Iyo yakanakisa (uye pamwe iri nyore) nzira yekuona kuti yako CI/CD chishandiso chinogona kuita mashiripiti ayo ndeyekubatanidza neye source code control (SCM) chishandiso. Sei uchida sosi control? Ngatiti uri kugadzira application. Pese paunogadzira application, unenge uchironga, uye hazvina basa kuti unoshandisa Java, Python, C++, Go, Ruby, JavaScript, kana chero mazillion emitauro yekuronga. Kodhi yaunonyora inonzi source code. Pakutanga, kunyanya kana uchishanda wega, zvingangove zvakanaka kuisa zvese mudhairekitori renzvimbo. Asi sezvo purojekiti inokura uye iwe uchikoka vamwe vanhu kuti vabatane, iwe unoda nzira yekudzivirira kusawirirana uku uchinyatso kugovera zvigadziriso. Iwe zvakare unoda nzira yekudzoreredza mavhezheni apfuura, nekuti kugadzira backups uye kukopa / kunamira mazviri kuri kuita kusashanda. Iwe (uye vaunoshanda navo) vanoda chimwe chinhu chiri nani.

Apa ndipo panobva kodhi kudzora kunova chinhu chinodiwa. Ichi chishandiso chinochengeta kodhi yako mumatura, chinochengeta chinyorwa cheshanduro, uye chinoronga basa revatori vechikamu chepurojekiti.

Kunyange paine akawanda sosi ekudzora maturusi kunze uko, Git ndiyo chiyero, uye ndizvozvo. Ini ndinokurudzira kushandisa Git, kunyangwe paine mamwe akavhurika sosi sarudzo kana uchida.

Git: GPLv2 uye LGPL v2.1
Kushandura: Apache 2.0
Concurrent Versions System (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Izvi ndizvo zvinoita pombi yeDevOps nekuwedzera kweiyo source code control.

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Chishandiso cheCI/CD chinogona kuita otomatiki maitiro ekudzokorora, kutora kodhi kodhi, uye kubatana pakati penhengo. Kusaipa? Asi unochishandura sei kuita chishandiso chekushanda kuitira kuti mabhiriyoni evanhu ashandise nekuchikoshesa?

Nhanho 3: Gadzira Kuvaka otomatiki Tool

Hukuru! Iwe unogona kuongorora kodhi uye kuita shanduko kune sosi kutonga, uye kukoka shamwari dzako kuti dzibatane mukusimudzira. Asi hausati wagadzira application. Kuti uite webhu application, inofanirwa kuunganidzwa uye kurongedzerwa mune deployable batch fomati kana kumhanya senge faira rinogoneka. (Cherechedza kuti mutauro wechirongwa wakadudzirwa wakaita seJavaScript kana PHP haudi kuunganidzwa).

Shandisa kuvaka otomatiki chishandiso. Hazvina mhosva kuti ndechipi chekuvaka otomatiki chishandiso chaunosarudza kushandisa, vese vane chinangwa chakafanana: kuvaka kodhi kodhi mune imwe fomati inodiwa uye otomatiki basa rekuchenesa, kuunganidza, kuyedza, uye kuendesa kune yakatarwa nharaunda. Kuvaka maturusi anosiyana zvichienderana nemutauro wako wechirongwa, asi heano mamwe akajairika akavhurwa sosi sarudzo.

Title
License
Mutauro wepurogiramu

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

bazel
Apache 2.0
Java

Ita
GNU
N / A

Kugunun'una
with
JavaScript

gulp
with
JavaScript

Muvaki
Apache
Ruby

rakes
with
Ruby

AAP
GNU
Python

SCons
with
Python

BitBake
GPLv2
Python

keke
with
C#

ASDF
Expat (MIT)
LISP

Chaizvoizvo
BSD
Haskell

Hukuru! Iwe unogona kuisa iyo yekuvaka otomatiki chishandiso chekugadzirisa mafaera mune yako sosi yekudzora sisitimu uye rega yako CI/CD chishandiso isa zvese pamwechete.

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Zvose zvakanaka, handizvo here? Asi kupi kwekuendesa application yako?

Nhanho 4: Webhu Yekushandisa Server

Parizvino, une faira rakapetwa rinogona kuitwa kana kugadzika. Kuti chero application inyatso batsira, inofanirwa kupa imwe mhando yebasa kana interface, asi iwe unoda mudziyo kuti utore application yako.

A web application server inongova mudziyo wakadaro. Sevha inopa nharaunda umo iyo logic yepakeji iri kuiswa inogona kutsanangurwa. Iyo sevha zvakare inopa chinongedzo uye inopa webhu masevhisi nekufumura zvigadziko kune kunze kwenyika. Unoda sevha yeHTTP, pamwe neimwe nharaunda (senge muchina chaiwo) kuti uiise. Parizvino, ngatifungei kuti uchadzidza zvakawanda nezve izvi (kunyangwe ini ndichavhara midziyo pazasi).

Kune akati wandei akavhurwa sosi yewebhu application maseva.

Title
License
Mutauro wepurogiramu

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Vashoma Veruzhinji
Java

GlassFish
CDDL & GNU Zvishoma Paruzhinji
Java

Django
3-Chikamu BSD
Python

dutu
Apache 2.0
Python

gunicorn
with
Python

Python
with
Python

Rails
with
Ruby

Node.js
with
JavaScript

Yako pombi yeDevOps yave kutogadzirira kushandisa. Basa rakanaka!

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Nepo iwe uchigona kumira ipapo uye kubata iyo yekubatanidza iwe pachako, kodhi mhando chinhu chakakosha kuti mugadziri weapp anetseke nezvazvo.

Nhanho 5: Code Testing Coverage

Kuita bvunzo kunogona kuve chimwe chinodikanwa chinorema, asi vanogadzira vanofanirwa kubata chero tsikidzi mukushandisa nekukurumidza uye nekuvandudza mhando yekodhi kuona kuti vashandisi vekupedzisira vagutsikana. Sezvineiwo, kune akawanda akavhurika sosi maturusi ekuyedza kodhi yako uye kuita kurudziro yekuvandudza kunaka kwayo. Chiri nani ndechekuti maturusi mazhinji eCI/CD anogona kubatana kune aya maturusi uye otomatiki maitiro.

Kuyedzwa kwekodhi kunosanganisira zvikamu zviviri: kodhi yekuyedza masisitimu ayo anokubatsira kunyora nekumhanyisa bvunzo, uye mazano ezvishandiso anokubatsira kuvandudza kunaka kwekodhi yako.

Code test systems

Title
License
Mutauro wepurogiramu

JUnit
Eclipse Public License
Java

EasyMock
Apache
Java

mockito
with
Java

PowerMock
Apache 2.0
Java

Pytest
with
Python

Kufungidzira
Mozilla
Python

tox
with
Python

Kurudziro masisitimu ekuvandudza kodhi

Title
License
Mutauro wepurogiramu

Cobertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Common Public License
Java

JaCoCo
Eclipse Public License
Java

Kufungidzira
Mozilla
Python

tox
with
Python

Jasmine
with
JavaScript

Karma
with
JavaScript

Mocha
with
JavaScript

Jest
with
JavaScript

Ziva kuti mazhinji ezvishandiso nemafuremu ataurwa pamusoro akanyorerwa Java, Python neJavaScript, sezvo C++ neC# iri mitauro yemapurogiramu epamhepo (kunyangwe GCC yakavhurika sosi).

Zvino zvawaita maturusi ekuvhara bvunzo, pombi yako yeDevOps inofanirwa kutaridzika yakafanana nedhayagiramu yakaratidzwa pakutanga kwechidzidzo ichi.

Mamwe Matanho

Containers

Sezvandakataura, unogona kugamuchira sevha yako pamushini chaiwo kana sevha, asi midziyo ndiyo yakakurumbira mhinduro.

Ko midziyo chii? Tsananguro pfupi ndeyekuti muchina chaiwo unoda huwandu hukuru hwekushandisa system memory, inodarika saizi yechishandiso, nepo mudziyo unongoda mashoma maraibhurari uye zvigadziriso zvekushandisa application. Zviripachena, kuchine kwakakosha kushandiswa kwemuchina chaiwo, asi mudziyo imhinduro yakareruka yekuitisa application, kusanganisira sevha yekushandisa.

Kunyange paine dzimwe sarudzo dzemidziyo, dzinonyanya kufarirwa ndeye Docker uye Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Zvepakati otomatiki zvishandiso

Yedu yeDevOps pombi yakatarisana nekubatana kwekushandisa kwekugadzira uye kutumira, asi kune zvimwe zvinhu zvakawanda zvinogona kuitwa neDevOps maturusi. Imwe yacho kushandiswa kweInfrastructure seCode (IaC) maturusi, ayo anonziwo middleware otomatiki maturusi. Aya maturusi anobatsira otomatiki kuisirwa, manejimendi, uye mamwe mabasa epakati. Saka, semuenzaniso, otomatiki chishandiso chinogona kuburitsa zvikumbiro sewebhu application server, dhatabhesi, uye chekutarisa chishandiso chine magadzirirwo chaiwo uye wozviendesa kune server application.

Heano mamwe akavhurika sosi middleware otomatiki maturusi:

Zvinogoneka: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Chipopi: Apache kana GPL

Nhungamiro Yevatangi: Kugadzira DevOps Pipeline

Tsvaga ruzivo rwekuti ungawana sei basa rinotsvakwa kubva pakutanga kana Level Up maererano nehunyanzvi uye muhoro nekutora akabhadharwa online makosi kubva kuSkillFactory:

mamwe makosi

Zvinoshanda

Source: www.habr.com

Voeg