Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Yog tias koj tshiab rau DevOps, saib cov lus qhia tsib kauj ruam no los tsim koj thawj cov kav dej.

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

DevOps tau dhau los ua tus qauv kev daws teeb meem rau kev txhim kho cov txheej txheem tsim kho software qeeb, tsis sib xws lossis tawg. Qhov teeb meem yog tias koj yog tus tshiab rau DevOps thiab tsis paub yuav pib qhov twg, koj yuav tsis nkag siab txog cov tswv yim no. Kab lus no yuav tham txog lub ntsiab lus ntawm DevOps pipeline thiab tseem yuav muab tsib-kauj ruam cov lus qhia rau kev tsim ib qho. Txawm hais tias qhov kev qhia no tsis yog tag nrho, nws yuav tsum muab lub hauv paus rau koj pib koj txoj kev taug thiab nthuav koj txoj kev paub yav tom ntej. Tab sis cia peb pib nrog keeb kwm.

Kuv DevOps Taug Kev

Yav dhau los kuv tau ua haujlwm ntawm Citi Group huab pab pawg tsim kho Infrastructure-as-a-Service (IaaS) lub vev xaib los tswj Citi cov huab vaj tse, tab sis kuv ib txwm xav paub yuav ua li cas ua kom txoj kev loj hlob zoo dua thiab coj cov kev hloov pauv kev coj noj coj ua zoo rau lub pab neeg txhim kho. Kuv pom cov lus teb hauv ib phau ntawv pom zoo los ntawm Greg Lavender, CTO ntawm Huab Architecture thiab Infrastructure ntawm Citi. Phau ntawv hu ua The Phoenix Project (Phoenix Project), thiab nws piav qhia cov ntsiab lus ntawm DevOps, tab sis nws nyeem zoo li ib qho tshiab.

Cov lus nyob tom qab ntawm phau ntawv qhia tias ntau npaum li cas cov tuam txhab sib txawv siv lawv cov tshuab hauv qhov chaw tso tawm:

Amazon: 23 ib hnub
Google: 5 ib hnub
Netflix: 500 ib hnub
Facebook: Ib hnub ib zaug
Twitter: 3 zaug hauv ib lub lis piam
Lub tuam txhab raug: Ib zaug txhua 9 lub hlis

Amazon, Google thiab Netflix zaus txawm ua tau li cas? Qhov no yog vim tias cov tuam txhab no tau txheeb xyuas yuav ua li cas los tsim ib lub raj xa dej DevOps yuav luag zoo meej.

Peb nyob deb ntawm qhov no mus txog thaum peb siv DevOps ntawm Citi. Rov qab thaum ntawd, kuv pab neeg muaj ib puag ncig sib txawv, tab sis kev xa mus rau kev txhim kho server yog phau ntawv qhia tag nrho. Txhua tus neeg tsim khoom tau nkag mus rau tsuas yog ib qho kev txhim kho server raws li IBM WebSphere Application Server Community Edition. Qhov teeb meem yog tias tus neeg rau zaub mov yuav kaw thaum twg ntau tus neeg siv sim siv tib lub sijhawm, yog li cov neeg tsim khoom yuav tsum sib txuas lus lawv cov kev xav rau ib leeg, uas yog qhov mob heev. Tsis tas li ntawd, muaj teeb meem nrog cov lej ntsuas qis qis, cov txheej txheem ntawm kev xa tawm cov txheej txheem cumbersome, thiab tsis muaj peev xwm taug qab kev xa tawm ntawm cov lej cuam tshuam nrog cov haujlwm tshwj xeeb lossis cov neeg siv dab neeg.

Kuv pom tau hais tias ib yam dab tsi yuav tsum tau ua thiab nrhiav tau ib tug zoo li-minded colleague. Peb tau txiav txim siab los koom tes hauv kev tsim qhov pib DevOps raj xa dej - nws teeb tsa Tomcat virtual tshuab thiab daim ntawv thov server thaum kuv ua haujlwm ntawm Jenkins, kev koom ua ke Atlassian Jira thiab BitBucket, thiab ua haujlwm ntawm cov lej xeem. Qhov kev ua haujlwm sab no tau ua tiav zoo: peb yuav luag tag nrho cov txheej txheem ntau lawm, ua tiav yuav luag 100% uptime ntawm peb cov neeg rau zaub mov kev loj hlob, muab kev taug qab thiab txhim kho kev sim ntawm cov cai, thiab ntxiv lub peev xwm los txuas Git ceg rau Jira teeb meem lossis kev xa tawm. Feem ntau ntawm cov cuab yeej peb siv los tsim peb lub raj xa dej DevOps yog qhib qhov chaw.

Tam sim no kuv nkag siab qhov yooj yim npaum li cas peb cov raj xa dej DevOps yog: peb tsis tau siv txuas ntxiv xws li Jenkins cov ntaub ntawv lossis Ansible. Txawm li cas los xij, cov kav dej yooj yim no ua haujlwm tau zoo, tej zaum vim yog txoj cai Pareto (tseem hu ua txoj cai 80/20).

Qhia luv luv rau DevOps thiab CI/CD Pipeline

Yog tias koj nug ntau tus neeg, "DevOps yog dab tsi?", koj yuav tau txais ntau cov lus teb sib txawv. DevOps, zoo li Agile, tau hloov zuj zus mus rau ntau qhov kev qhuab qhia sib txawv, tab sis cov neeg feem coob yuav pom zoo rau ob peb yam: DevOps yog kev txhim kho software lossis software txhim kho lub neej voj voog (SDLC) uas nws lub ntsiab lus tseem ceeb yog hloov cov kab lis kev cai uas cov tsim tawm thiab tsis yog. developers muaj nyob rau hauv ib puag ncig uas:

Cov haujlwm uas yav tas los ua manually tau ua haujlwm;
Txhua tus ua qhov lawv ua tau zoo tshaj plaws;
Tus naj npawb ntawm kev siv nyob rau hauv ib lub sij hawm ntawm lub sij hawm nce; Kev nce ntxiv;
Ntxiv kev txhim kho yooj.

Thaum muaj cov cuab yeej software zoo tsis yog qhov koj xav tau los tsim ib puag ncig DevOps, qee cov cuab yeej tseem ceeb. Ib qho cuab yeej tseem ceeb yog kev sib koom ua ke thiab kev xa mus tas li (CI / CD). Nyob rau hauv cov kav dej no, ib puag ncig muaj ntau theem (xws li DEV, INT, TST, QA, UAT, STG, PROD), ntau qhov kev ua haujlwm yog automated, thiab cov neeg tsim khoom tuaj yeem sau cov lej zoo, ua tiav kev txhim kho agility, thiab kev xa tawm siab.

Kab lus no piav qhia txog tsib kauj ruam los tsim kom muaj DevOps cov raj xa dej zoo li ib qho uas pom hauv daim duab hauv qab no siv cov cuab yeej qhib.

Kauj Ruam 1: Txoj Kev CI/CD

Thawj qhov koj xav tau yog lub cuab yeej CI / CD. Jenkins, lub cuab yeej qhib raws li Java thiab tau tso cai raws li MIT daim ntawv tso cai, yog lub cuab yeej uas nrov DevOps thiab tau dhau los ua tus qauv de facto.

Yog li Jenkins yog dab tsi? Xav tias nws yog ib yam ntawm tej yam yees siv universal tswj chaw taws teeb uas muaj peev xwm tham nrog thiab npaj ntau yam kev pab cuam thiab cov cuab yeej. Ntawm nws tus kheej, lub cuab yeej CI / CD zoo li Jenkins tsis muaj txiaj ntsig, tab sis nws muaj zog dua vim nws txuas rau cov cuab yeej sib txawv thiab cov kev pabcuam.

Jenkins tsuas yog ib qho ntawm ntau qhov qhib CI / CD cov cuab yeej uas koj tuaj yeem siv los tsim koj lub raj xa dej DevOps.

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

Nov yog dab tsi DevOps cov txheej txheem zoo li nrog CI / CD cuab yeej:

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Koj muaj lub cuab yeej CI / CD khiav ntawm koj lub localhost, tab sis tsis muaj ntau yam koj tuaj yeem ua tam sim no. Cia peb mus rau theem tom ntej ntawm DevOps taug kev.

Kauj ruam 2: Tswj Qhov Chaw Tswj Systems

Qhov zoo tshaj plaws (thiab tej zaum yooj yim tshaj) txoj hauv kev los xyuas kom meej tias koj lub cuab yeej CI / CD tuaj yeem ua nws cov khawv koob yog kev koom ua ke nrog cov cai tswj hwm (SCM) cov cuab yeej. Vim li cas koj thiaj xav tau qhov chaw tswj? Wb hais tias koj tab tom tsim ib daim ntawv thov. Thaum twg koj tsim ib daim ntawv thov, koj tab tom programming, thiab nws tsis muaj teeb meem txawm tias koj siv Java, Python, C ++, Mus, Ruby, JavaScript, lossis ib qho ntawm ntau lab ntawm cov lus programming. Tus lej koj sau yog hu ua qhov chaws. Thaum pib, tshwj xeeb tshaj yog thaum koj ua haujlwm ib leeg, nws yog qhov zoo rau muab txhua yam rau hauv cov npe hauv zos. Tab sis raws li qhov project loj dua thiab koj caw lwm tus neeg los koom tes, koj xav tau ib txoj hauv kev los tiv thaiv kev tsis sib haum xeeb thaum sib koom kev hloov kho kom zoo. Koj kuj xav tau ib txoj hauv kev los kho cov ntawv dhau los, vim tias tsim cov thaub qab thiab luam / muab tso rau hauv lawv tau dhau los lawm. Koj (thiab koj cov phooj ywg) xav tau qee yam zoo dua.

Qhov no yog qhov chaw tswj qhov chaws yuav luag yog qhov tsim nyog. Cov cuab yeej no khaws koj cov cai hauv cov chaw khaws cia, khaws cov ntawv hloov pauv, thiab tswj xyuas cov haujlwm ntawm cov neeg koom tes ua haujlwm.

Thaum muaj ntau qhov chaw tswj cov cuab yeej tawm muaj, Git yog tus qauv, thiab yog li ntawd. Kuv pom zoo kom siv Git, txawm hais tias muaj lwm qhov kev xaiv qhib yog tias koj nyiam.

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

Qhov no yog dab tsi DevOps pipeline zoo li nrog qhov sib ntxiv ntawm cov cai tswj hwm.

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Ib lub cuab yeej CI/CD tuaj yeem ua haujlwm rau cov txheej txheem ntawm kev tshuaj xyuas, qhov chaw tau txais cov cai, thiab kev sib koom tes ntawm cov tswv cuab. Tsis phem? Tab sis koj yuav ua li cas hloov nws mus rau hauv daim ntawv thov ua haujlwm kom ntau txhiab tus neeg tuaj yeem siv thiab txaus siab rau nws?

Kauj Ruam 3: Tsim Cov Khoom Siv Automation

Zoo heev! Koj tuaj yeem tshuaj xyuas cov cai thiab hloov pauv rau kev tswj hwm qhov chaw, thiab caw koj cov phooj ywg los koom tes hauv kev txhim kho. Tab sis koj tseem tsis tau tsim ib daim ntawv thov. Txhawm rau ua ib daim ntawv thov web, nws yuav tsum tau muab tso ua ke thiab ntim rau hauv ib qho kev xa tawm batch los yog khiav ua cov ntaub ntawv executable. (Nco ntsoov tias cov lus txhais lus xws li JavaScript lossis PHP tsis tas yuav muab tso ua ke).

Siv cov cuab yeej tsim automation. Txawm hais tias tsim cov cuab yeej automation uas koj txiav txim siab siv, lawv txhua tus muaj lub hom phiaj tib yam: tsim cov cai hauv qee hom ntawv uas xav tau thiab ua kom lub luag haujlwm ntawm kev tu, sau, sim, thiab xa mus rau ib puag ncig tshwj xeeb. Tsim cov cuab yeej yuav sib txawv nyob ntawm koj cov lus programming, tab sis ntawm no yog qee qhov kev xaiv qhib.

Lub npe
Daim ntawv tso cai
Programming lus

Maven
Apache 2.0
Java

Ntsaum
Apache 2.0
Java

Khub
Apache 2.0
Java

Npauj Npaim
Apache 2.0
Java

ua
GNU
N / A

Ntxhoo
MIT
JavaScript

Gulp
MIT
JavaScript

Tus tsim
Apache
Ruby

Lub ncuav
MIT
Ruby

AAP
GNU
Nab hab sej

SCons
MIT
Nab hab sej

BitBake
GPLv2
Nab hab sej

Ncuav mog qab zib
MIT
C#

ASDF
Expat (MIT)
LISP

Cabal
BSD
Haskell

Zoo heev! Koj tuaj yeem muab cov cuab yeej tsim cov cuab yeej teeb tsa rau hauv koj qhov kev tswj hwm qhov system thiab cia koj cov cuab yeej CI / CD tso txhua yam ua ke.

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Txhua yam zoo, puas yog? Tab sis qhov twg yuav xa koj daim ntawv thov?

Kauj ruam 4: Web Application Server

Txog tam sim no, koj muaj cov ntaub ntawv ntim uas tuaj yeem ua tiav lossis nruab tau. Rau txhua daim ntawv thov kom muaj txiaj ntsig zoo, nws yuav tsum muab qee yam kev pabcuam lossis kev sib txuas, tab sis koj xav tau lub thawv los tuav koj daim ntawv thov.

Lub web thov server tsuas yog lub thawv zoo li no xwb. Tus neeg rau zaub mov muab ib puag ncig uas lub logic ntawm lub pob raug xa tawm tuaj yeem txhais tau. Tus neeg rau zaub mov tseem muab kev sib txuas thiab muab cov kev pabcuam hauv lub vev xaib los ntawm kev nthuav tawm cov qhov (socket) rau lub ntiaj teb sab nraud. Koj xav tau HTTP server, nrog rau qee qhov chaw (zoo li lub tshuab virtual) los nruab nws. Txog tam sim no, cia peb xav tias koj yuav kawm ntxiv txog qhov no (txawm tias kuv yuav npog cov ntim hauv qab).

Muaj ntau qhov chaw qhib web thov servers.

Lub npe
Daim ntawv tso cai
Programming lus

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

Cawv iav
CDDL & GNU Less Public
Java

Django
3-Clause BSD
Nab hab sej

cua daj cua dub
Apache 2.0
Nab hab sej

Phom nyoom
MIT
Nab hab sej

Nab hab sej
MIT
Nab hab sej

Ntsia
MIT
Ruby

node.js
MIT
Javascript

Koj lub raj xa dej DevOps yuav luag npaj siv. Ua haujlwm zoo!

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Thaum koj tuaj yeem nres qhov ntawd thiab tswj kev sib koom ua ke koj tus kheej, cov lej zoo yog qhov tseem ceeb rau tus tsim tawm app txhawj txog.

Kauj Ruam 5: Kev Xeem Kev Pabcuam Code

Kev siv cov kev ntsuam xyuas tuaj yeem yog lwm qhov yuav tsum tau ua, tab sis cov neeg tsim khoom yuav tsum ntes cov kab laum hauv daim ntawv thov ntxov thiab txhim kho qhov zoo ntawm cov cai kom ntseeg tau tias cov neeg siv kawg txaus siab. Luckily, muaj ntau cov cuab yeej qhib rau kev sim koj cov cai thiab ua cov lus pom zoo los txhim kho nws qhov zoo. Dab tsi yog qhov zoo dua yog tias cov cuab yeej CI / CD feem ntau tuaj yeem txuas rau cov cuab yeej no thiab ua kom cov txheej txheem automate.

Kev xeem lej muaj ob ntu: cov qauv ntsuas kev ntsuas uas pab koj sau thiab khiav cov kev xeem, thiab cov cuab yeej tawm tswv yim uas pab koj txhim kho koj cov lej zoo.

Code xeem systems

Lub npe
Daim ntawv tso cai
Programming lus

JUnit
Dab Tseg Tsoomfwv Tso Cai
Java

EasyMock
Apache
Java

thuam
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Nab hab sej

Kwv txiaj
Mozilla
Nab hab sej

tshuaj lom
MIT
Nab hab sej

Kev pom zoo systems rau kev txhim kho code

Lub npe
Daim ntawv tso cai
Programming lus

Cobertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Nab hab sej

Emma
Common Public License
Java

JaCov
Dab Tseg Tsoomfwv Tso Cai
Java

Kwv txiaj
Mozilla
Nab hab sej

tshuaj lom
MIT
Nab hab sej

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

muaj
MIT
JavaScript

Nco ntsoov tias feem ntau ntawm cov cuab yeej thiab lub moj khaum uas tau hais los saum no yog sau rau Java, Python thiab JavaScript, txij li C ++ thiab C# yog hom lus programming (txawm tias GCC yog qhov qhib).

Tam sim no koj tau siv cov cuab yeej ntsuas ntsuas, koj lub raj xa dej DevOps yuav tsum zoo ib yam li daim duab qhia thaum pib ntawm qhov kev qhia no.

Cov kauj ruam ntxiv

Ntim

Raws li kuv tau hais, koj tuaj yeem tuav koj cov neeg rau zaub mov ntawm lub tshuab virtual lossis lub server, tab sis cov thawv ntim yog cov tshuaj nrov.

Cov thawv ntim khoom yog dab tsi? Cov lus piav qhia luv luv yog tias lub tshuab virtual xav tau ntau qhov kev ua haujlwm nco, tshaj qhov loj ntawm daim ntawv thov, thaum lub thawv tsuas xav tau ob peb lub tsev qiv ntawv thiab teeb tsa los khiav daim ntawv thov. Pom tseeb, tseem muaj kev siv tseem ceeb rau lub tshuab virtual, tab sis lub thawv yog lub teeb yuag rau hosting daim ntawv thov, suav nrog daim ntawv thov server.

Thaum muaj lwm cov thawv xaiv, cov nyiam tshaj plaws yog Docker thiab Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Cov cuab yeej nruab nrab automation

Peb lub raj xa dej DevOps feem ntau yog tsom rau kev sib koom tes ntawm daim ntawv thov tsim thiab xa mus, tab sis muaj ntau yam uas tuaj yeem ua nrog DevOps cov cuab yeej. Ib ntawm lawv yog kev siv Infrastructure li Code (IaC) cov cuab yeej, uas tseem hu ua Middleware automation cov cuab yeej. Cov cuab yeej no pab automate installation, tswj, thiab lwm yam dej num rau nruab nrab. Yog li, piv txwv li, cov cuab yeej automation tuaj yeem rho tawm cov ntawv thov xws li lub vev xaib thov server, database, thiab cov cuab yeej saib xyuas nrog cov teeb tsa raug thiab xa mus rau daim ntawv thov server.

Nov yog qee qhov qhib qhov nruab nrab automation cov cuab yeej:

Ansible: GNU Public
SaltStack: Apache 2.0
Kws ua zaub mov: Apache 2.0
Puppet: Apache lossis GPL

Pib Phau Ntawv Qhia: Tsim DevOps Pipeline

Tshawb nrhiav cov ntsiab lus ntawm yuav ua li cas thiaj li tau txais txoj haujlwm nrhiav haujlwm los ntawm kos lossis Qib Up raws li kev txawj thiab nyiaj hli los ntawm kev kawm online them nyiaj los ntawm SkillFactory:

cov chav kawm ntxiv

Pab tau

Tau qhov twg los: www.hab.com

Ntxiv ib saib