Ti o ba jẹ tuntun si DevOps, wo itọsọna igbesẹ marun-un yii si ṣiṣẹda opo gigun ti epo akọkọ rẹ.
DevOps ti di ojuutu boṣewa fun titunṣe awọn ilana idagbasoke sọfitiwia ti o lọra, pipin tabi fifọ. Iṣoro naa ni pe ti o ba jẹ tuntun si DevOps ati pe ko mọ ibiti o bẹrẹ, o le ni oye ti awọn ilana wọnyi. Nkan yii yoo jiroro itumọ ti opo gigun ti epo DevOps ati pe yoo tun pese awọn ilana igbesẹ marun fun ṣiṣẹda ọkan. Lakoko ti ikẹkọ yii ko pari, o yẹ ki o fun ọ ni ipilẹ lati bẹrẹ irin-ajo rẹ ati faagun imọ rẹ ni ọjọ iwaju. Ṣugbọn jẹ ki a bẹrẹ pẹlu itan.
Irin-ajo DevOps Mi
Mo ti ṣiṣẹ tẹlẹ lori ẹgbẹ Citi Group awọsanma ti ndagba ohun elo wẹẹbu Amayederun-as-a-iṣẹ (IaaS) lati ṣakoso awọn amayederun awọsanma Citi, ṣugbọn Mo nifẹ nigbagbogbo bi o ṣe le ṣe ilana idagbasoke daradara siwaju sii ati mu iyipada aṣa rere si egbe idagbasoke. Mo ti ri idahun ninu iwe ti a ṣe iṣeduro nipasẹ Greg Lafenda, CTO ti Cloud Architecture ati Infrastructure ni Citi. Iwe naa ni a npe ni The Phoenix Project (The Phoenix Project), ati pe o ṣe alaye awọn ilana ti DevOps, ṣugbọn o ka bi aramada.
Tabili ti o wa ni ẹhin iwe fihan bi igbagbogbo awọn ile-iṣẹ oriṣiriṣi ṣe nfi awọn eto wọn ṣiṣẹ ni agbegbe itusilẹ:
Amazon: 23 fun ọjọ kan
Google: 5 fun ọjọ kan
Netflix: 500 fun ọjọ kan
Facebook: Ni ẹẹkan ọjọ kan
Twitter: 3 igba kan ọsẹ
Ile-iṣẹ aṣoju: lẹẹkan ni gbogbo oṣu 9
Bawo ni Amazon, Google ati Netflix awọn igbohunsafẹfẹ paapaa ṣee ṣe? Eyi jẹ nitori awọn ile-iṣẹ wọnyi ti pinnu bi o ṣe le ṣẹda opo gigun ti epo DevOps pipe.
A jinna si eyi titi ti a fi ṣe imuse DevOps ni Citi. Ni akoko yẹn, ẹgbẹ mi ni awọn agbegbe oriṣiriṣi, ṣugbọn imuṣiṣẹ lori olupin idagbasoke jẹ afọwọṣe patapata. Gbogbo awọn olupilẹṣẹ ni iraye si olupin idagbasoke kan ṣoṣo ti o da lori IBM WebSphere Application Server Community Edition. Iṣoro naa ni pe olupin naa yoo ku nigbakugba ti awọn olumulo lọpọlọpọ gbiyanju lati fi ranṣẹ ni akoko kanna, nitorinaa awọn olupilẹṣẹ ni lati sọ awọn ero wọn si ara wọn, eyiti o jẹ irora pupọ. Ni afikun, awọn ọran wa pẹlu aabo koodu idanwo ipele-kekere, awọn ilana imuṣiṣẹ afọwọṣe ti o buruju, ati ailagbara lati tọpa imuṣiṣẹ koodu ti o ni nkan ṣe pẹlu iṣẹ-ṣiṣe kan pato tabi itan olumulo.
Mo wá rí i pé ohun kan ní láti ṣe, mo sì rí alábàákẹ́gbẹ́ tó nífẹ̀ẹ́ sí. A pinnu lati ṣe ifowosowopo lori kikọ opo gigun ti DevOps akọkọ - o ṣeto ẹrọ foju Tomcat kan ati olupin ohun elo lakoko ti Mo ṣiṣẹ lori Jenkins, Integrated Atlassian Jira ati BitBucket, ati ṣiṣẹ lori agbegbe koodu idanwo. Ise agbese ẹgbẹ yii ṣaṣeyọri pupọ: a fẹrẹ ṣe adaṣe ni kikun awọn ilana pupọ, ṣaṣeyọri fere 100% uptime lori olupin idagbasoke wa, pese ipasẹ ati imudara agbegbe idanwo ti koodu, ati ṣafikun agbara lati sopọ awọn ẹka Git si awọn ọran Jira tabi awọn imuṣiṣẹ. Pupọ julọ awọn irinṣẹ ti a lo lati kọ opo gigun ti epo DevOps jẹ orisun ṣiṣi.
Bayi Mo loye bawo ni opo gigun ti epo DevOps ṣe rọrun: a ko lo awọn amugbooro bii awọn faili Jenkins tabi Ansible. Sibẹsibẹ, opo gigun ti o rọrun yii ṣiṣẹ daradara, boya nitori ilana Pareto (ti a tun mọ ni ofin 80/20).
Ifihan kukuru kan si DevOps ati Pipeline CI/CD
Ti o ba beere lọwọ ọpọlọpọ eniyan, “Kini DevOps?”, O ṣee ṣe ki o gba ọpọlọpọ awọn idahun oriṣiriṣi. DevOps, bii Agile, ti wa lati tan ọpọlọpọ awọn ipele oriṣiriṣi, ṣugbọn ọpọlọpọ eniyan yoo gba lori awọn nkan diẹ: DevOps jẹ adaṣe idagbasoke sọfitiwia tabi igbesi aye idagbasoke sọfitiwia (SDLC) eyiti ipilẹ aringbungbun n yi aṣa pada ninu eyiti awọn olupilẹṣẹ ati ti kii ṣe- awọn olupilẹṣẹ wa ni agbegbe nibiti:
Awọn iṣẹ ṣiṣe ti a ti ṣe tẹlẹ pẹlu ọwọ ti jẹ adaṣe;
Gbogbo eniyan ṣe ohun ti wọn ṣe julọ;
Nọmba awọn imuse lori akoko kan pọ si; Ilọsiwaju gbigbe;
Alekun idagbasoke ni irọrun.
Lakoko ti nini awọn irinṣẹ sọfitiwia ti o tọ kii ṣe ohun kan ṣoṣo ti o nilo lati ṣẹda agbegbe DevOps, diẹ ninu awọn irinṣẹ jẹ pataki. Ọpa bọtini jẹ isọpọ igbagbogbo ati imuṣiṣẹ lemọlemọfún (CI/CD). Ninu opo gigun ti epo yii, awọn agbegbe ni awọn ipele oriṣiriṣi (fun apẹẹrẹ DEV, INT, TST, QA, UAT, STG, PROD), ọpọlọpọ awọn iṣẹ ṣiṣe adaṣe, ati awọn olupilẹṣẹ le kọ koodu didara to gaju, ṣaṣeyọri agility idagbasoke, ati awọn oṣuwọn imuṣiṣẹ giga.
Nkan yii ṣe apejuwe ọna igbesẹ marun-un si ṣiṣẹda opo gigun ti epo DevOps bii eyiti o han ninu aworan atọka atẹle nipa lilo awọn irinṣẹ orisun ṣiṣi.
Igbesẹ 1: Awọn ọna CI/CD
Ohun akọkọ ti o nilo ni ohun elo CI / CD kan. Jenkins, ohun elo orisun ṣiṣi ti o da lori Java ti o ni iwe-aṣẹ labẹ iwe-aṣẹ MIT, jẹ ohun elo ti o gbajumọ DevOps ati pe o ti di boṣewa de facto.
Nitorina kini Jenkins? Ronu nipa rẹ bi iru iṣakoso isakoṣo latọna jijin ti idan ti o le sọrọ si ati ṣeto awọn iṣẹ ati awọn irinṣẹ lọpọlọpọ. Lori ara rẹ, ohun elo CI / CD bi Jenkins jẹ asan, ṣugbọn o di alagbara diẹ sii bi o ti sopọ si awọn irinṣẹ ati awọn iṣẹ oriṣiriṣi.
Jenkins jẹ ọkan ninu ọpọlọpọ awọn irinṣẹ CI/CD orisun ṣiṣi ti o le lo lati kọ opo gigun ti epo DevOps rẹ.
Jenkins: Creative Commons ati MIT
Travis CI: MIT
CruiseControl: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Kabi: GNU
Eyi ni kini awọn ilana DevOps dabi pẹlu ohun elo CI/CD:
O ni ohun elo CI/CD ti n ṣiṣẹ lori agbegbe agbegbe rẹ, ṣugbọn ko si pupọ ti o le ṣe ni akoko yii. Jẹ ki a lọ si ipele atẹle ti irin-ajo DevOps.
Igbesẹ 2: Ṣakoso Awọn Eto Iṣakoso orisun
Ọna ti o dara julọ (ati boya o rọrun julọ) lati rii daju pe ohun elo CI/CD rẹ le ṣe idan rẹ ni lati ṣepọ pẹlu irinṣẹ iṣakoso koodu orisun (SCM). Kini idi ti o nilo iṣakoso orisun? Jẹ ká sọ pé o ti wa ni sese ohun elo. Nigbakugba ti o ba ṣẹda ohun elo kan, o jẹ siseto, ati pe ko ṣe pataki boya o lo Java, Python, C++, Go, Ruby, JavaScript, tabi eyikeyi awọn zillions ti awọn ede siseto. Awọn koodu ti o kọ ni a npe ni koodu orisun. Ni ibẹrẹ, paapaa nigbati o ba n ṣiṣẹ nikan, o ṣee ṣe dara lati fi ohun gbogbo sinu ilana agbegbe kan. Ṣugbọn bi iṣẹ akanṣe n pọ si ati pe o pe awọn eniyan miiran lati ṣe ifowosowopo, o nilo ọna kan lati ṣe idiwọ awọn ija lakoko pinpin awọn iyipada ni imunadoko. O tun nilo ọna kan lati mu pada awọn ẹya ti tẹlẹ, nitori ṣiṣẹda awọn afẹyinti ati didakọ / sisẹ sinu wọn ti di igba atijọ. Iwọ (ati awọn ẹlẹgbẹ rẹ) nilo nkan ti o dara julọ.
Eyi ni ibi ti iṣakoso koodu orisun ti fẹrẹ jẹ dandan. Ọpa yii tọju koodu rẹ sinu awọn ibi ipamọ, tọju abala awọn ẹya, ati ipoidojuko iṣẹ awọn olukopa iṣẹ akanṣe.
Lakoko ti ọpọlọpọ awọn irinṣẹ iṣakoso orisun wa nibẹ, Git jẹ boṣewa, ati pe o tọ. Mo ṣeduro gaan ni lilo Git, botilẹjẹpe awọn aṣayan orisun ṣiṣi miiran wa ti o ba fẹ.
Git: GPLv2 ati LGPL v2.1
Iyipada: Apache 2.0
Eto Awọn ẹya nigbakanna (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+
Eyi ni ohun ti opo gigun ti epo DevOps dabi pẹlu afikun ti awọn iṣakoso koodu orisun.
Ọpa CI/CD le ṣe adaṣe awọn ilana atunyẹwo, gbigba koodu orisun, ati ifowosowopo laarin awọn ọmọ ẹgbẹ. Ko buru? Ṣugbọn bawo ni o ṣe sọ di ohun elo ti n ṣiṣẹ ki awọn ọkẹ àìmọye eniyan le lo ati riri rẹ?
Igbesẹ 3: Ṣẹda Ọpa Automation Kọ kan
Nla! O le ṣe ayẹwo koodu ati ṣe awọn ayipada si iṣakoso orisun, ati pe awọn ọrẹ rẹ lati ṣe ifowosowopo lori idagbasoke. Ṣugbọn o ko ti ṣẹda ohun elo kan sibẹsibẹ. Lati ṣe ohun elo wẹẹbu kan, o gbọdọ ṣe akopọ ati ṣajọpọ ni ọna kika ipele ti o le fi ranṣẹ tabi ṣiṣẹ bi faili ti o le ṣiṣẹ. (Akiyesi pe ede siseto ti a tumọ gẹgẹbi JavaScript tabi PHP ko nilo lati ṣe akopọ).
Lo ohun elo adaṣe adaṣe kan. Laibikita iru ohun elo adaṣe adaṣe ti o pinnu lati lo, gbogbo wọn ni ibi-afẹde kanna: kọ koodu orisun sinu ọna kika ti o fẹ ki o ṣe adaṣe iṣẹ ṣiṣe ti mimọ, ikojọpọ, idanwo, ati gbigbe lọ si agbegbe kan pato. Awọn irinṣẹ kọ yoo yatọ si da lori ede siseto rẹ, ṣugbọn nibi ni diẹ ninu awọn aṣayan orisun ṣiṣi ti o wọpọ.
Akọle
Iwe-aṣẹ
Ede siseto
maven
Afun 2.0
Java
Ant
Afun 2.0
Java
Atilẹyin
Afun 2.0
Java
bazel
Afun 2.0
Java
ṣe
GNU
N / A
Ibinujẹ
MIT
JavaScript
gulp
MIT
JavaScript
Akole
afun
Ruby
Rọ
MIT
Ruby
AAP
GNU
Python
SCons
MIT
Python
BitBake
GPLV2
Python
oyinbo
MIT
C#
ASDF
Expat (MIT)
LISP
Kaadi
BSD
Haskell
Nla! O le fi awọn faili atunto irinṣẹ adaṣe adaṣe sinu eto iṣakoso orisun rẹ ki o jẹ ki ohun elo CI / CD rẹ fi ohun gbogbo papọ.
Ohun gbogbo dara, ṣe kii ṣe bẹẹ? Ṣugbọn nibo ni lati lo ohun elo rẹ?
Igbesẹ 4: Olupin Ohun elo Ayelujara
Ni bayi, o ni faili ti o ṣajọpọ ti o le jẹ boya ṣiṣe tabi fifi sori ẹrọ. Fun eyikeyi ohun elo lati wulo nitootọ, o gbọdọ pese iru iṣẹ kan tabi wiwo, ṣugbọn o nilo eiyan kan lati gbalejo ohun elo rẹ.
Olupin ohun elo wẹẹbu kan jẹ iru eiyan kan. Olupin naa n pese agbegbe kan ninu eyiti o le ṣe asọye ọgbọn ti package ti a gbe lọ. Olupin naa tun pese wiwo ati nfunni awọn iṣẹ wẹẹbu nipa ṣiṣafihan awọn iho si agbaye ita. O nilo olupin HTTP kan, bakanna bi agbegbe kan (bii ẹrọ foju) lati fi sii. Ni bayi, jẹ ki a ro pe iwọ yoo ni imọ siwaju sii nipa eyi (botilẹjẹpe Emi yoo bo awọn apoti ni isalẹ).
Orisii awọn olupin ohun elo wẹẹbu orisun ṣiṣi wa.
Akọle
Iwe-aṣẹ
Ede siseto
Tomcat
Afun 2.0
Java
Jetty
Afun 2.0
Java
WildFly
GNU ti o kere ju gbangba
Java
GilasiFish
CDDL & GNU Kere Gbangba
Java
Django
3-Abala BSD
Python
Orisun
Afun 2.0
Python
gunicorn
MIT
Python
Python
MIT
Python
Awọn ẹipa
MIT
Ruby
Node.js
MIT
JavaScript
Opo opo gigun ti epo DevOps ti fẹrẹ ṣetan lati lo. Iṣẹ to dara!
Lakoko ti o le duro sibẹ ki o mu isọpọ funrararẹ, didara koodu jẹ ohun pataki fun olupilẹṣẹ ohun elo lati ṣe aniyan nipa.
Igbesẹ 5: Ibori Idanwo koodu
Ṣiṣe awọn idanwo le jẹ ibeere miiran ti o lewu, ṣugbọn awọn olupilẹṣẹ gbọdọ yẹ eyikeyi awọn idun ninu ohun elo ni kutukutu ati mu didara koodu naa dara lati rii daju pe awọn olumulo ipari ni itẹlọrun. Ni Oriire, ọpọlọpọ awọn irinṣẹ orisun ṣiṣi wa fun idanwo koodu rẹ ati ṣiṣe awọn iṣeduro fun imudarasi didara rẹ. Ohun ti o dara julọ paapaa ni pe ọpọlọpọ awọn irinṣẹ CI/CD le sopọ si awọn irinṣẹ wọnyi ati ṣe adaṣe ilana naa.
Idanwo koodu ni awọn ẹya meji: awọn ilana idanwo koodu ti o ṣe iranlọwọ fun ọ lati kọ ati ṣiṣe awọn idanwo, ati awọn irinṣẹ aba ti o ṣe iranlọwọ fun ọ lati mu didara koodu rẹ dara si.
Awọn ọna ṣiṣe idanwo koodu
Akọle
Iwe-aṣẹ
Ede siseto
JUnit
Iwe-aṣẹ Ìṣirò ti Oṣupa
Java
EasyMock
afun
Java
Mockito
MIT
Java
PowerMock
Afun 2.0
Java
Pytest
MIT
Python
Kokoro
Mozilla
Python
Majele
MIT
Python
Awọn ọna ṣiṣe iṣeduro fun ilọsiwaju koodu
Akọle
Iwe-aṣẹ
Ede siseto
Cobertura
GNU
Java
CodeCover
Gbangba Eclipse (EPL)
Java
Ibora.py
Afun 2.0
Python
Emma
Wọpọ Public License
Java
JaCoCo
Iwe-aṣẹ Ìṣirò ti Oṣupa
Java
Kokoro
Mozilla
Python
Majele
MIT
Python
Jasmine
MIT
JavaScript
Karma
MIT
JavaScript
Mocha
MIT
JavaScript
Jest
MIT
JavaScript
Ṣe akiyesi pe pupọ julọ awọn irinṣẹ ati awọn ilana ti a mẹnuba loke ni a kọ fun Java, Python ati JavaScript, nitori C ++ ati C # jẹ awọn ede siseto ohun-ini (botilẹjẹpe GCC jẹ orisun ṣiṣi).
Ni bayi ti o ti ṣe imuse awọn irinṣẹ agbegbe idanwo, opo gigun ti epo DevOps yẹ ki o dabi iru aworan ti o han ni ibẹrẹ ikẹkọ yii.
Afikun Igbesẹ
Apoti
Gẹgẹbi Mo ti sọ, o le gbalejo olupin rẹ lori ẹrọ foju tabi olupin, ṣugbọn awọn apoti jẹ ojutu olokiki kan.
Kini awọn apoti? Alaye kukuru ni pe ẹrọ foju kan nilo iye nla ti iranti ẹrọ ṣiṣe, ti o kọja iwọn ohun elo naa, lakoko ti eiyan kan nilo awọn ile-ikawe diẹ ati awọn atunto lati ṣiṣẹ ohun elo naa. O han ni, awọn lilo pataki tun wa fun ẹrọ foju, ṣugbọn eiyan jẹ ojutu iwuwo fẹẹrẹ fun gbigbalejo ohun elo kan, pẹlu olupin ohun elo kan.
Lakoko ti awọn aṣayan eiyan miiran wa, olokiki julọ ni Docker ati Kubernetes.
Docker: Apache 2.0
Kubernetes: Apache 2.0
Awọn irinṣẹ adaṣe agbedemeji
Pipeline DevOps wa ni idojukọ akọkọ lori ṣiṣẹda ohun elo ifowosowopo ati imuṣiṣẹ, ṣugbọn ọpọlọpọ awọn ohun miiran wa ti o le ṣee ṣe pẹlu awọn irinṣẹ DevOps. Ọkan ninu wọn ni lilo awọn ohun elo amayederun bi koodu (IaC), eyiti a tun mọ ni awọn irinṣẹ adaṣe agbedemeji. Awọn irinṣẹ wọnyi ṣe iranlọwọ adaṣe adaṣe, iṣakoso, ati awọn iṣẹ-ṣiṣe miiran fun agbedemeji. Nitorinaa, fun apẹẹrẹ, ohun elo adaṣe le jade awọn ohun elo bii olupin ohun elo wẹẹbu kan, ibi ipamọ data, ati ohun elo ibojuwo pẹlu awọn atunto to tọ ati gbe wọn lọ si olupin ohun elo naa.
Eyi ni diẹ ninu awọn irinṣẹ adaṣe agbedemeji orisun ṣiṣi:
Ansible: GNU Public
SaltStack: Apache 2.0
Oluwanje: Apache 2.0
Puppet: Apache tabi GPL
Wa awọn alaye lori bii o ṣe le gba oojọ ti a nwa lati ibere tabi Ipele Up ni awọn ofin ti awọn ọgbọn ati owo-oṣu nipa gbigbe awọn iṣẹ ori ayelujara ti o sanwo lati SkillFactory: