Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Jekk int ġdid għal DevOps, agħti ħarsa lejn din il-gwida f'ħames passi biex toħloq l-ewwel pipeline tiegħek.

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

DevOps sar is-soluzzjoni standard biex jiġu ffissati proċessi ta 'żvilupp ta' softwer bil-mod, magħqudin jew imkissrin. Il-problema hija li jekk int ġdid DevOps u ma tafx minn fejn tibda, jista 'jkun li ma tifhimx dawn it-tekniki. Dan l-artikolu ser jiddiskuti d-definizzjoni ta 'pipeline DevOps u se jipprovdi wkoll struzzjonijiet f'ħames passi għall-ħolqien ta' wieħed. Filwaqt li dan it-tutorja mhuwiex eżawrjenti, għandu jagħtik pedament biex tibda l-vjaġġ tiegħek u tespandi l-għarfien tiegħek fil-futur. Imma ejja nibdew bl-istorja.

Il-Vjaġġ tiegħi tad-DevOps

Preċedentement ħdimt fuq it-tim tal-cloud ta’ Citi Group li qed jiżviluppa applikazzjoni tal-web ta’ Infrastructure-as-a-Service (IaaS) biex timmaniġġja l-infrastruttura tal-cloud ta’ Citi, iżda dejjem kont interessat f’kif nagħmel il-proċess ta’ żvilupp aktar effiċjenti u nġib bidla kulturali pożittiva għall- tim ta' żvilupp. Sibt it-tweġiba fi ktieb rakkomandat minn Greg Lavender, CTO ta 'Cloud Architecture and Infrastructure f'Citi. Il-ktieb kien jismu The Phoenix Project (Il-Proġett Phoenix), u jispjega l-prinċipji ta 'DevOps, iżda jaqra bħal rumanz.

It-tabella fuq wara tal-ktieb turi kemm-il darba kumpaniji differenti jużaw is-sistemi tagħhom f'ambjent ta 'rilaxx:

Amazon: 23 kuljum
Google: 5 kuljum
Netflix: 500 kuljum
Facebook: Darba kuljum
Twitter: 3 darbiet fil-ġimgħa
Kumpanija tipika: Darba kull 9 xhur

Kif huma possibbli l-frekwenzi tal-Amazon, Google u Netflix? Dan għaliex dawn il-kumpaniji dehret kif joħolqu pipeline DevOps kważi perfett.

Konna 'l bogħod minn dan sakemm implimentajna DevOps f'Citi. Dakinhar, it-tim tiegħi kellu ambjenti differenti, iżda l-iskjerament fuq is-server tal-iżvilupp kien kompletament manwali. L-iżviluppaturi kollha kellhom aċċess għal server ta' żvilupp wieħed biss ibbażat fuq IBM WebSphere Application Server Community Edition. Il-problema kienet li s-server jintefa kull meta utenti multipli ppruvaw jużaw fl-istess ħin, għalhekk l-iżviluppaturi kellhom jikkomunikaw l-intenzjonijiet tagħhom lil xulxin, li kien pjuttost uġigħ. Barra minn hekk, kien hemm kwistjonijiet b'kopertura ta 'kodiċi tat-test ta' livell baxx, proċessi ta 'skjerament manwali ingombranti, u l-inkapaċità li jiġi segwit l-iskjerament ta' kodiċi assoċjat ma 'kompitu speċifiku jew storja ta' utent.

Irrealizzajt li hemm bżonn li ssir xi ħaġa u sibt kollega tal-istess ħsieb. Iddeċidejna li nikkollaboraw fuq il-bini tal-pipeline DevOps inizjali - huwa waqqaf magna virtwali Tomcat u server tal-applikazzjoni waqt li ħdimt fuq Jenkins, integrat Atlassian Jira u BitBucket, u ħdimt fuq il-kopertura tal-kodiċi tat-test. Dan il-proġett sekondarju kellu suċċess kbir: kważi awtomatizzajna kompletament ħafna proċessi, ksibna kważi 100% uptime fuq is-server tal-iżvilupp tagħna, ipprovda traċċar u kopertura tat-test imtejba tal-kodiċi, u żidna l-abbiltà li torbot fergħat Git ma 'kwistjonijiet jew skjeramenti Jira. Ħafna mill-għodod li użajna biex nibnu l-pipeline DevOps tagħna kienu sors miftuħ.

Issa nifhem kemm kien sempliċi l-pipeline DevOps tagħna: ma użajnax estensjonijiet bħal fajls Jenkins jew Ansible. Madankollu, dan il-pipeline sempliċi ħadem tajjeb, forsi minħabba l-prinċipju Pareto (magħruf ukoll bħala r-regola 80/20).

Introduzzjoni qasira għad-DevOps u s-CI/CD Pipeline

Jekk tistaqsi lil bosta nies, "X'inhu DevOps?", probabilment ikollok diversi tweġibiet differenti. DevOps, bħal Agile, evolviet biex ikopri ħafna dixxiplini differenti, iżda ħafna nies se jaqblu fuq ftit affarijiet: DevOps hija prattika ta 'żvilupp ta' softwer jew ċiklu tal-ħajja ta 'żvilupp ta' softwer (SDLC) li l-prinċipju ċentrali tiegħu huwa li jibdel il-kultura li fiha l-iżviluppaturi u dawk li mhumiex. l-iżviluppaturi jeżistu f'ambjent li fih:

Operazzjonijiet li qabel kienu mwettqa manwalment ġew awtomatizzati;
Kulħadd jagħmel dak li jagħmel l-aħjar;
In-numru ta 'implimentazzjonijiet fuq ċertu perjodu ta' żmien jiżdied; It-throughput jiżdied;
Flessibilità akbar fl-iżvilupp.

Filwaqt li jkollok l-għodda tas-softwer it-tajba mhix l-unika ħaġa li għandek bżonn biex toħloq ambjent DevOps, xi għodod huma essenzjali. Għodda ewlenija hija l-integrazzjoni kontinwa u l-iskjerament kontinwu (CI/CD). F'dan il-pipeline, l-ambjenti għandhom stadji differenti (eż. DEV, INT, TST, QA, UAT, STG, PROD), ħafna operazzjonijiet huma awtomatizzati, u l-iżviluppaturi jistgħu jiktbu kodiċi ta 'kwalità għolja, jiksbu b'aġilità ta' żvilupp u rati ta 'skjerament għoljin.

Dan l-artikolu jiddeskrivi approċċ f'ħames passi biex jinħoloq pipeline DevOps bħal dak muri fid-dijagramma li ġejja bl-użu ta 'għodod ta' sors miftuħ.

Pass 1: Metodi CI/CD

L-ewwel ħaġa li għandek bżonn hija għodda CI/CD. Jenkins, għodda open source bbażata fuq Java u liċenzjata taħt il-liċenzja MIT, hija l-għodda li popolarizzat DevOps u saret l-istandard de facto.

Allura x'inhu Jenkins? Aħseb fih bħala xi tip ta 'kontroll remot universali maġiku li jista' jitkellem u jorganizza diversi servizzi u għodod. Waħedha, għodda CI/CD bħal Jenkins hija inutli, iżda ssir aktar qawwija hekk kif tgħaqqad ma 'għodod u servizzi differenti.

Jenkins hija biss waħda mill-ħafna għodod CI/CD ta’ sors miftuħ li tista’ tuża biex tibni l-pipeline DevOps tiegħek.

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

Hawn kif jidhru l-proċessi DevOps b'għodda CI/CD:

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Għandek għodda CI/CD taħdem fuq il-localhost tiegħek, iżda m'hemmx ħafna li tista' tagħmel bħalissa. Ejja ngħaddu għall-istadju li jmiss tal-vjaġġ DevOps.

Pass 2: Immaniġġja Sistemi ta 'Kontroll tas-Sors

L-aħjar mod (u forsi l-aktar faċli) biex tivverifika li l-għodda CI/CD tiegħek tista 'tagħmel il-maġija tagħha huwa li tintegra ma' għodda ta 'kontroll tal-kodiċi tas-sors (SCM). Għaliex għandek bżonn kontroll tas-sors? Ejja ngħidu li qed tiżviluppa applikazzjoni. Kull meta toħloq applikazzjoni, tkun qed tipprogramma, u ma jimpurtax jekk tużax Java, Python, C++, Go, Ruby, JavaScript, jew kwalunkwe miż-żiljuni ta' lingwi ta' programmar. Il-kodiċi li tikteb jissejjaħ kodiċi tas-sors. Fil-bidu, speċjalment meta tkun qed taħdem waħdu, probabbilment huwa ok li tpoġġi kollox f'direttorju lokali. Iżda hekk kif il-proġett jikber u tistieden nies oħra biex jikkollaboraw, għandek bżonn mod kif tevita l-kunflitti filwaqt li taqsam il-modifiki b'mod effettiv. Għandek bżonn ukoll mod kif tirrestawra l-verżjonijiet preċedenti, minħabba li l-ħolqien ta 'backups u l-ikkuppjar/pejst fihom qed isir skadut. Int (u sħabek) għandek bżonn xi ħaġa aħjar.

Dan huwa fejn il-kontroll tal-kodiċi tas-sors isir kważi neċessità. Din l-għodda taħżen il-kodiċi tiegħek f'repożitorji, iżżomm kont tal-verżjonijiet, u tikkoordina l-ħidma tal-parteċipanti tal-proġett.

Filwaqt li hemm ħafna għodod ta 'kontroll tas-sors hemmhekk, Git huwa l-istandard, u bir-raġun. Nirrakkomanda ħafna li tuża Git, għalkemm hemm għażliet oħra ta 'sors miftuħ jekk tippreferi.

Git: GPLv2 u LGPL v2.1
Subversion: Apache 2.0
Sistema ta' Verżjonijiet Konkorrenti (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Dan huwa kif jidher pipeline DevOps biż-żieda ta 'kontrolli tal-kodiċi tas-sors.

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Għodda CI/CD tista 'awtomatizza l-proċessi ta' reviżjoni, akkwist tal-kodiċi tas-sors, u kollaborazzjoni fost il-membri. Mhux ħażin? Imma kif tibdelha f’applikazzjoni li taħdem sabiex biljuni ta’ nies ikunu jistgħu jużawha u japprezzaw?

Pass 3: Oħloq Għodda tal-Awtomazzjoni tal-Bini

Kbir! Tista' tirrevedi l-kodiċi u tagħmel bidliet fil-kontroll tas-sors, u tistieden lill-ħbieb tiegħek biex jikkollaboraw fl-iżvilupp. Imma għadek ma ħloqtx applikazzjoni. Biex tagħmel applikazzjoni tal-web, trid tiġi kkompilata u ppakkjata f'format ta 'lott li jista' jiġi skjerat jew titħaddem bħala fajl eżekutibbli. (Innota li lingwa ta' programmar interpretata bħal JavaScript jew PHP m'għandhiex għalfejn tiġi kkompilata).

Uża għodda ta 'awtomazzjoni tal-bini. Ma jimpurtax liema għodda ta 'awtomazzjoni tal-bini tiddeċiedi li tuża, kollha għandhom l-istess għan: jibnu l-kodiċi tas-sors f'xi format mixtieq u awtomatizzaw il-kompitu tat-tindif, il-kompilazzjoni, l-ittestjar u l-iskjerament f'ambjent speċifiku. L-għodod tal-bini se jvarjaw skont il-lingwa tal-ipprogrammar tiegħek, iżda hawn xi għażliet komuni ta' sors miftuħ.

Isem
Liċenzja
Lingwa tal-ipprogrammar

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java

Agħmel
GNU
MHUX APPLIKABBLI

Grunt
MIT
JavaScript

Gulp
MIT
JavaScript

Bennej
Apache
Ruby

Inklinazzjoni
MIT
Ruby

AAP
GNU
Python

SCons
MIT
Python

BitBake
GPLv2
Python

Kejk
MIT
C#

ASDF
Espatrijat (MIT)
LISP

Eżatt
BSD
Haskell

Kbir! Tista 'tpoġġi l-fajls tal-konfigurazzjoni tal-għodda tal-awtomazzjoni tal-bini fis-sistema ta' kontroll tas-sors tiegħek u ħalli l-għodda CI/CD tiegħek tpoġġi kollox flimkien.

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Kollox tajjeb, hux? Imma fejn għandek tuża l-applikazzjoni tiegħek?

Pass 4: Web Application Server

Għalissa, għandek fajl ippakkjat li jista 'jkun jew eżekutibbli jew jistallabbli. Biex kwalunkwe applikazzjoni tkun tassew utli, trid tipprovdi xi tip ta' servizz jew interface, iżda għandek bżonn kontenitur biex tospita l-applikazzjoni tiegħek.

A web application server huwa biss tali kontenitur. Is-server jipprovdi ambjent li fih il-loġika tal-pakkett li qed jiġi skjerat tista' tiġi definita. Is-server jipprovdi wkoll interface u joffri servizzi tal-web billi jesponi sokits għad-dinja ta 'barra. Għandek bżonn server HTTP, kif ukoll xi ambjent (bħal magna virtwali) biex tinstallah. Għalissa, ejja nassumu li inti ser titgħallem aktar dwar dan (għalkemm jien ser tkopri kontenituri hawn taħt).

Hemm diversi servers ta' applikazzjoni tal-web ta' sors miftuħ.

Isem
Liċenzja
Lingwa tal-ipprogrammar

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

Ħut tal-Ħġieġ
CDDL & GNU Inqas Pubbliku
Java

Django
3-Klawżola BSD
Python

Tornado
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Binarji
MIT
Ruby

Node.js
MIT
Javascript

Il-pipeline DevOps tiegħek huwa kważi lest biex jintuża. Xogħol tajjeb!

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Filwaqt li tista' tieqaf hemm u timmaniġġja l-integrazzjoni lilek innifsek, il-kwalità tal-kodiċi hija ħaġa importanti li l-iżviluppatur tal-apps għandu jinkwieta dwarha.

Pass 5: Kopertura tal-Ittestjar tal-Kodiċi

L-implimentazzjoni tat-testijiet tista 'tkun rekwiżit ieħor ingombranti, iżda l-iżviluppaturi għandhom jaqbdu kwalunkwe bug fl-applikazzjoni kmieni u jtejbu l-kwalità tal-kodiċi biex jiżguraw li l-utenti finali jkunu sodisfatti. Fortunatament, hemm ħafna għodod open source għall-ittestjar tal-kodiċi tiegħek u jagħmlu rakkomandazzjonijiet għat-titjib tal-kwalità tiegħu. X'inhu saħansitra aħjar huwa li l-biċċa l-kbira tal-għodod CI/CD jistgħu jgħaqqdu ma 'dawn l-għodod u awtomatizzaw il-proċess.

L-ittestjar tal-kodiċi jikkonsisti f’żewġ partijiet: oqfsa tal-ittestjar tal-kodiċi li jgħinuk tikteb u tmexxi testijiet, u għodod ta’ suġġeriment li jgħinuk ittejjeb il-kwalità tal-kodiċi tiegħek.

Sistemi ta' ttestjar tal-kodiċi

Isem
Liċenzja
Lingwa tal-ipprogrammar

JUnit
Liċenzja Pubblika Eclipse
Java

EasyMock
Apache
Java

Mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Ipoteżi
Mozilla
Python

tox
MIT
Python

Sistemi ta' rakkomandazzjoni għat-titjib tal-kodiċi

Isem
Liċenzja
Lingwa tal-ipprogrammar

Kopertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Liċenzja Pubblika Komuni
Java

JaCoCo
Liċenzja Pubblika Eclipse
Java

Ipoteżi
Mozilla
Python

tox
MIT
Python

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

ġest
MIT
JavaScript

Innota li ħafna mill-għodod u l-oqfsa msemmija hawn fuq huma miktuba għal Java, Python u JavaScript, peress li C++ u C# huma lingwi ta’ programmar proprjetarji (għalkemm GCC huwa sors miftuħ).

Issa li implimentajt għodod ta 'kopertura tat-test, il-pipeline DevOps tiegħek għandu jidher simili għad-dijagramma murija fil-bidu ta' dan it-tutorja.

Passi Addizzjonali

Kontenituri

Kif għedt, tista 'tospita s-server tiegħek fuq magna virtwali jew server, iżda l-kontenituri huma soluzzjoni popolari.

X'inhuma l-kontenituri? L-ispjegazzjoni qasira hija li magna virtwali teħtieġ ammont kbir ta 'memorja tas-sistema operattiva, li taqbeż id-daqs tal-applikazzjoni, filwaqt li kontenitur jeħtieġ biss ftit libreriji u konfigurazzjonijiet biex iħaddem l-applikazzjoni. Ovvjament, għad hemm użi importanti għal magna virtwali, iżda kontenitur huwa soluzzjoni ħafifa biex tospita applikazzjoni, inkluż server ta 'applikazzjoni.

Filwaqt li hemm għażliet oħra ta 'kontenitur, l-aktar popolari huma Docker u Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Għodod intermedji ta 'awtomazzjoni

Il-pipeline DevOps tagħna huwa ffukat primarjament fuq il-ħolqien u l-iskjerament ta’ applikazzjonijiet kollaborattivi, iżda hemm ħafna affarijiet oħra li jistgħu jsiru bl-għodod DevOps. Waħda minnhom hija l-użu tal-għodod tal-Infrastruttura bħala Kodiċi (IaC), li huma magħrufa wkoll bħala għodod tal-awtomazzjoni tal-middleware. Dawn l-għodod jgħinu fl-awtomatizzazzjoni tal-installazzjoni, il-ġestjoni, u kompiti oħra għall-middleware. Allura, pereżempju, għodda ta 'awtomazzjoni tista' testrat applikazzjonijiet bħal server ta 'applikazzjoni tal-web, database, u għodda ta' monitoraġġ bil-konfigurazzjonijiet korretti u tiskjerahom fis-server tal-applikazzjoni.

Hawn huma xi għodod ta' awtomazzjoni middleware open source:

Ansible: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache jew GPL

Gwida għall-Bidu: Il-ħolqien ta' Pipeline DevOps

Skopri dettalji dwar kif tikseb professjoni mfittxija mill-bidu jew Level Up f'termini ta' ħiliet u salarju billi tieħu korsijiet onlajn imħallsa minn SkillFactory:

aktar korsijiet

Utli

Sors: www.habr.com

Żid kumment