Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Kung bag-o ka sa DevOps, tan-awa kini nga giya sa paghimo sa imong una nga lima ka lakang nga pipeline.

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Ang DevOps nahimong sumbanan nga solusyon alang sa pag-ayo sa hinay, pagkaputol, o guba nga mga proseso sa pagpalambo sa software. Ang problema mao nga kung bag-o ka sa DevOps ug wala ka mahibal-an kung asa magsugod, mahimo’g kulang ka sa pagsabut niini nga mga pamaagi. Kini nga artikulo magpunting sa pagtino sa usa ka pipeline sa DevOps, ug maghatag usab mga panudlo kung giunsa kini paghimo sa lima ka mga lakang. Bisan kung kini nga panudlo dili kompleto, kinahanglan kini maghatag kanimo usa ka pundasyon aron makasugod ug mapalapad ang imong kahibalo sa umaabot. Apan magsugod kita sa kasaysayan.

Akong Panaw sa DevOps

Nagtrabaho ko kaniadto sa Citi Group cloud team nga nag-develop og Infrastructure-as-a-Service (IaaS) web application aron pagdumala sa cloud infrastructure sa Citi, apan kanunay kong interesado kon unsaon paghimo sa proseso sa pagpalambo nga mas episyente ug magdala og positibo nga kausaban sa kultura. ngadto sa development team. Akong nakit-an ang tubag sa usa ka libro nga girekomenda ni Greg Lavender, Citi's CTO for Cloud Architecture and Infrastructure. Ang libro gitawag nga "The Phoenix Project" (Proyekto sa Phoenix) ug gipatin-aw ang mga prinsipyo sa DevOps samtang nagbasa sama sa usa ka nobela.

Ang lamesa sa likod sa libro nagpakita kung unsa ka sagad ang lainlaing mga kompanya nga nag-deploy sa ilang mga sistema sa usa ka palibot sa pagpagawas:

Amazon: 23 kada adlaw
Google: 5 kada adlaw
Netflix: 500 kada adlaw
Facebook: Kausa sa usa ka adlaw
Twitter: 3 beses sa usa ka semana
Kasagaran nga kompanya: Kausa matag 9 ka bulan

Sa unsang paagi posible ang mga frequency sa Amazon, Google ug Netflix? Kini tungod kay nahibal-an sa kini nga mga kompanya kung giunsa paghimo ang usa ka hapit hingpit nga pipeline sa DevOps.

Layo kami niini hangtod nga among gipatuman ang DevOps sa Citi. Niadtong panahona, ang akong team adunay lain-laing mga palibot, apan ang pag-deploy sa development server kay manwal. Ang tanang developers adunay access sa usa lang ka development server base sa IBM WebSphere Application Server Community Edition. Ang problema mao nga ang server magsira sa matag higayon nga daghang mga tiggamit ang mosulay sa pag-deploy sa parehas nga oras, mao nga ang mga developer kinahanglan nga ipahibalo sa usag usa ang ilang mga intensyon, nga medyo sakit. Dugang pa, adunay mga problema sa ubos nga lebel sa pagsakup sa pagsulay sa code, lisud nga mga proseso sa pag-deploy sa manual, ug ang kawalay katakus sa pagsubay sa pagpadala sa code nga may kalabutan sa usa ka partikular nga buluhaton o istorya sa gumagamit.

Narealisar ko nga may dapat himuon, kag nakakita ako sing pareho sing panghunahuna nga kaupod. Nakahukom kami nga magtinabangay sa pagtukod sa inisyal nga pipeline sa DevOps - nag-set up siya og Tomcat virtual machine ug application server samtang nagtrabaho ko sa Jenkins, integrated Atlassian Jira ug BitBucket, ug nagtrabaho sa code test coverage. Kini nga proyekto sa kilid malampuson kaayo: halos hingpit namong gi-automate ang daghang mga proseso, nakaabot sa halos 100% nga uptime sa among development server, naghatag og tracking ug gipaayo nga code test coverage, ug gidugang ang abilidad sa pag-link sa mga branch sa Git sa mga isyu sa Jira o deployment. Kadaghanan sa mga himan nga among gigamit sa pagtukod sa among DevOps pipeline kay open source.

Karon nasabtan nako kung unsa kadali ang among pipeline sa DevOps: wala kami mogamit mga extension sama sa mga file sa Jenkins o Ansible. Bisan pa, kini nga yano nga pipeline nagtrabaho og maayo, tingali salamat sa prinsipyo sa Pareto (nailhan usab nga 80/20 nga lagda).

Usa ka Mubo nga Pasiuna sa DevOps ug ang CI/CD Pipeline

Kung mangutana ka sa pipila ka mga tawo "Unsa ang DevOps?" tingali makakuha ka pipila ka lainlaing mga tubag. Ang DevOps, sama sa Agile, milambo nga naglangkob sa daghang lain-laing mga disiplina, apan kadaghanan sa mga tawo mouyon sa pipila ka mga butang: Ang DevOps usa ka software development practice o software development life cycle (SDLC) kansang sentro nga prinsipyo mao ang pagbag-o sa kultura diin ang mga developers ug dili. -Ang mga developer anaa sa usa ka palibot diin:

Automated nga mga operasyon nga kaniadto gihimo sa mano-mano;
Ang matag usa nagbuhat sa iyang labing maayo;
Ang gidaghanon sa mga pagpatuman alang sa usa ka piho nga yugto sa panahon nagdugang; Dugang nga throughput;
Dugang nga pagka-flexible sa pag-uswag.

Samtang ang pagbaton sa husto nga mga himan sa software dili lamang ang butang nga imong gikinahanglan sa paghimo sa usa ka DevOps nga palibot, ang pipila ka mga himan mahinungdanon. Ang yawe nga himan mao ang padayon nga panagsama ug padayon nga pag-deploy (CI/CD). Niini nga pipeline, ang mga palibot adunay lain-laing mga yugto (e.g. DEV, INT, TST, QA, UAT, STG, PROD), daghang mga operasyon ang awtomatiko, ug ang mga developers makasulat sa taas nga kalidad nga code, makab-ot ang kaabtik sa pag-uswag, ug taas nga frequency sa pag-deploy.

Kini nga artikulo naghulagway sa usa ka lima ka lakang nga pamaagi sa pagtukod sa usa ka DevOps pipeline nga susama sa gipakita sa mosunod nga diagram gamit ang open source nga mga himan.

Lakang 1: Mga Pamaagi sa CI/CD

Ang unang butang nga imong gikinahanglan mao ang usa ka himan sa CI/CD. Ang Jenkins, usa ka open source tool nga gibase sa Java ug lisensyado ubos sa lisensya sa MIT, mao ang himan nga nagpabantog sa DevOps ug nahimong de facto nga sumbanan.

Busa unsa ang Jenkins? Hunahunaa kini nga usa ka matang sa mahika nga universal remote control nga mahimong makig-istorya ug mag-organisar sa lainlaing mga serbisyo ug himan. Sa iyang kaugalingon, ang usa ka himan sa CI / CD sama sa Jenkins wala’y kapuslanan, apan kini labi ka kusog samtang kini nagkonektar sa lainlaing mga himan ug serbisyo.

Ang Jenkins usa lang sa daghang open source CI/CD nga mga himan nga imong magamit sa paghimo sa imong DevOps pipeline.

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

Ania kung unsa ang hitsura sa mga proseso sa DevOps sa usa ka himan sa CI / CD:

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Ikaw adunay usa ka CI / CD nga himan nga nagdagan sa imong localhost, apan wala'y daghan nga mahimo nimo sa pagkakaron. Mopadayon kita sa sunod nga lakang sa among pagbiyahe sa DevOps.

Lakang 2: Pagdumala sa mga sistema sa pagkontrol sa source code

Ang pinakamaayo (ug posible nga pinakasayon) nga paagi sa pagsulay nga ang imong CI/CD nga himan makahimo og salamangka mao ang pag-integrate sa source code control (SCM) nga himan. Nganong kinahanglan nimo ang source control? Ingnon ta nga nag-develop ka og aplikasyon. Kanus-a ka maghimo usa ka aplikasyon, nagprograma ka, bisan kung mogamit ka sa Java, Python, C++, Go, Ruby, JavaScript, o bisan unsang gazillion nga mga sinultian nga programming. Ang code nga imong gisulat gitawag nga source code. Sa sinugdanan, labi na kung nagtrabaho ka nga nag-inusara, tingali maayo nga ibutang ang tanan sa usa ka lokal nga direktoryo. Apan samtang nagkadako ang proyekto ug nagdapit ka sa ubang mga tawo sa pagtampo, kinahanglan nimo ang usa ka paagi aron malikayan ang mga panagbangi samtang epektibo nga nagpaambit sa mga pagbag-o. Kinahanglan usab nimo ang usa ka paagi aron mapasig-uli ang nangaging mga bersyon, tungod kay ang paghimo og mga backup ug pagkopya / pag-paste niini dili na magamit. Ikaw (ug ang imong mga kauban) nanginahanglan usa ka butang nga labi ka maayo.

Dinhi diin ang pagkontrol sa source code nahimong hapit usa ka kinahanglanon. Kini nga himan nagtipig sa imong code sa mga repository, nagsubay sa mga bersyon, ug nag-coordinate sa trabaho sa mga partisipante sa proyekto.

Samtang adunay daghang mga himan sa pagkontrol sa source code didto, ang Git mao ang sumbanan, ug sakto. Girekomenda nako ang paggamit sa Git, bisan kung adunay uban pang mga kapilian nga bukas nga gigikanan kung gusto nimo.

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

Kini ang hitsura sa usa ka pipeline sa DevOps uban ang pagdugang sa mga kontrol sa source code.

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Ang usa ka himan sa CI/CD mahimong mag-automate sa mga proseso sa pag-verify, pagkuha sa source code, ug kolaborasyon tali sa mga miyembro. Dili daotan? Apan giunsa nimo paghimo kini nga usa ka nagtrabaho nga aplikasyon aron ang binilyon nga mga tawo makagamit ug makadayeg niini?

Lakang 3: Paghimo og Build Automation Tool

Nindot! Mahimo nimong susihon ang code ug maghimo mga pagbag-o sa sistema sa pagkontrol sa source code, ingon man pagdapit sa imong mga higala sa pagtampo sa pag-uswag. Apan wala ka pa makahimo og aplikasyon. Aron makahimo og web application, kinahanglan kining i-compile ug i-package sa usa ka deployable package format o modagan isip executable file. (Timan-i nga ang usa ka gihubad nga programming language sama sa JavaScript o PHP dili kinahanglan nga i-compile.)

Gamit ug build automation tool. Dili igsapayan kung unsang himan sa paghimo sa automation ang imong gipili nga gamiton, silang tanan adunay parehas nga katuyoan: ang paghimo sa source code sa pipila nga gitinguha nga format ug awtomatiko ang tahas sa paglimpyo, pag-compile, pagsulay, ug pag-deploy sa usa ka piho nga palibot. Ang mga himan sa paghimo magkalainlain depende sa imong programming language, apan ania ang pipila ka sagad nga kapilian sa open source.

Titulo
Lisensya
Pinulongan sa programming

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java

Himoa nga
GNU
N / A

Pag-agulo
MIT
JavaScript

Gulp
MIT
JavaScript

Magtutukod
Apache
Ruby

mga rake
MIT
Ruby

AAP
GNU
Python

Mga SCON
MIT
Python

bitbake
GPLv2
Python

Cake
MIT
C#

ASDF
Expat (MIT)
LISP

Cabal
BSD
Haskell

Nindot! Mahimo nimong ibutang ang mga file sa pag-configure sa himan sa automation sa kontrol sa gigikanan ug tugoti ang imong CI / CD nga himan nga maghiusa sa tanan.

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Maayo ra ang tanan, dili ba? Apan asa ibutang ang imong aplikasyon?

Lakang 4: Web Application Server

Sa pagkakaron, ikaw adunay usa ka naka-package nga file nga mahimong ma-executable o ma-install. Aron ang bisan unsang aplikasyon mahimong tinuod nga mapuslanon, kinahanglan nga maghatag kini usa ka matang sa serbisyo o interface, apan kinahanglan nimo ang usa ka sudlanan aron ma-host ang imong aplikasyon.

Ang web application server usa ra ka sulud. Naghatag ang server og usa ka palibot diin ang lohika sa package nga gipakatap mahimong mahubit. Naghatag usab ang server ug interface ug nagtanyag mga serbisyo sa web pinaagi sa pag-abli sa mga socket sa gawas nga kalibutan. Kinahanglan nimo ang usa ka HTTP server ingon man ang pipila ka palibot (sama sa usa ka virtual machine) aron ma-set up kini. Sa pagkakaron, isipon nato nga makakat-on pa ka bahin niini (bisan pa nga tabonan nako ang mga sudlanan sa ubos).

Adunay daghang mga open source web application server.

Titulo
Lisensya
Pinulongan sa programming

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

baso nga isda
CDDL ug GNU Dili kaayo Publiko
Java

Django
3-ClauseBSD
Python

buhawi
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Mga riles
MIT
Ruby

Node.js
MIT
Javascript

Ang imong DevOps pipeline hapit na magamit. Maayong trabaho!

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Samtang mahimo ka nga mohunong didto ug buhaton ang imong kaugalingon nga paghiusa, ang kalidad sa code usa ka hinungdanon nga butang alang sa usa ka developer sa aplikasyon nga mabalaka.

Lakang 5: Sakup sa pagsulay sa code

Ang pag-implementar sa mga pagsulay mahimo nga usa pa ka lisud nga kinahanglanon, apan ang mga developer kinahanglan nga makakuha sa bisan unsang mga bug sa aplikasyon nga sayo ug pauswagon ang kalidad sa code aron masiguro nga ang mga end user matagbaw. Maayo na lang, adunay daghang mga himan nga bukas nga gigikanan nga magamit aron masulayan ang imong code ug maghimo mga rekomendasyon aron mapauswag ang kalidad niini. Mas maayo pa, kadaghanan sa mga gamit sa CI / CD mahimong ma-plug sa kini nga mga himan ug ma-automate ang proseso.

Ang pagsulay sa code adunay duha ka bahin: mga framework sa pagsulay sa code nga makatabang kanimo sa pagsulat ug pagpadagan sa mga pagsulay, ug mga himan sa sugyot nga makatabang sa pagpauswag sa kalidad sa code.

Mga sistema sa pagsulay sa code

Titulo
Lisensya
Pinulongan sa programming

JUnit
Eclipse Public License
Java

Sayon nga Pagbiaybiay
Apache
Java

mockito
MIT
Java

powermock
Apache 2.0
Java

Pytest
MIT
Python

Hipotesis
Mozilla
Python

hilo
MIT
Python

Mga sistema sa rekomendasyon sa pagpaayo sa code

Titulo
Lisensya
Pinulongan sa programming

Cobertura
GNU
Java

codecover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Komon nga Public License
Java

JaCoCo
Eclipse Public License
Java

Hipotesis
Mozilla
Python

hilo
MIT
Python

Jasmine
MIT
JavaScript

karma
MIT
JavaScript

Mocha
MIT
JavaScript

adunay
MIT
JavaScript

Timan-i nga kadaghanan sa mga himan ug mga balangkas nga gihisgutan sa ibabaw gisulat alang sa Java, Python, ug JavaScript, tungod kay ang C ++ ug C # mga proprietary programming language (bisan pa ang GCC open source).

Karon nga imong gipatuman ang mga himan sa pagsakup sa code, ang imong pipeline sa DevOps kinahanglan nga susama sa diagram nga gipakita sa sinugdanan sa kini nga panudlo.

Dugang nga mga lakang

Mga sudlanan

Sama sa akong giingon kaniadto, mahimo nimong i-host ang imong server sa usa ka virtual machine o server, apan ang mga sulud usa ka sikat nga solusyon.

Unsa ang mga sudlanan? Ang mubo nga katin-awan mao nga ang usa ka virtual nga makina nanginahanglan usa ka dako nga kantidad sa memorya sa operating system, labaw pa sa gidak-on sa usa ka aplikasyon, samtang ang usa ka sudlanan nanginahanglan lamang og pipila ka mga librarya ug mga pag-configure aron makadagan ang usa ka aplikasyon. Dayag, aduna gihapoy importanteng gamit alang sa usa ka virtual machine, apan ang usa ka sudlanan kay gaan nga solusyon alang sa pag-host sa usa ka aplikasyon, lakip ang usa ka server sa aplikasyon.

Samtang adunay ubang mga kapilian sa sudlanan, ang Docker ug Kubernetes ang labing inila.

Docker: Apache 2.0
Mga Kubernet: Apache 2.0

Intermediate Automation Tools

Ang among DevOps pipeline nag-una nga naka-focus sa pagtinabangay sa paghimo ug pag-deploy sa mga aplikasyon, apan adunay daghang uban pang mga butang nga mahimo nimo sa mga himan sa DevOps. Usa niini mao ang paggamit sa Infrastructure as Code (IaC) nga mga himan, nga nailhan usab nga middleware automation tools. Kini nga mga himan makatabang sa pag-automate sa pag-instalar, pagdumala, ug uban pang mga buluhaton alang sa middleware. Mao nga, pananglitan, ang usa ka himan sa automation mahimo’g makuha ang mga aplikasyon sama sa usa ka server sa aplikasyon sa web, usa ka database, ug usa ka himan sa pag-monitor nga adunay husto nga mga pag-configure ug i-deploy kini sa usa ka server sa aplikasyon.

Ania ang pipila ka open source middleware automation tools:

Mahimo: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache o GPL

Giya sa Nagsugod: Pagtukod og DevOps Pipeline

Hibal-i ang mga detalye kung giunsa pagkuha ang usa ka gipangita nga propesyon gikan sa wala o Level Up sa mga termino sa kahanas ug suweldo pinaagi sa pagkompleto sa SkillFactory bayad nga mga kurso sa online:

dugang nga mga kurso

Mapuslanon

Source: www.habr.com

Idugang sa usa ka comment