Leiðbeiningar fyrir byrjendur: Að búa til DevOps leiðslu
Ef þú ert nýr í DevOps skaltu skoða þessa fimm þrepa leiðbeiningar til að búa til fyrstu leiðsluna þína.
DevOps er orðin staðlað lausn til að laga hæga, sundurlausa eða bilaða hugbúnaðarþróunarferli. Vandamálið er að ef þú ert nýr í DevOps og veist ekki hvar þú átt að byrja gætirðu skortir skilning á þessum aðferðum. Þessi grein mun fjalla um skilgreiningu á DevOps leiðslu og mun einnig veita fimm þrepa leiðbeiningar um að búa til eina. Þó að þessi kennsla sé ekki tæmandi ætti hún að gefa þér grunn til að hefja ferð þína og auka þekkingu þína í framtíðinni. En við skulum byrja á sögunni.
DevOps ferðin mín
Ég vann áður í skýjateyminu Citi Group við að þróa Infrastructure-as-a-Service (IaaS) vefforrit til að stjórna skýjainnviðum Citi, en ég hafði alltaf áhuga á því hvernig hægt væri að gera þróunarferlið skilvirkara og koma jákvæðum menningarbreytingum á þróunarteymi. Ég fann svarið í bók sem Greg Lavender, tæknistjóri Cloud Architecture and Infrastructure hjá Citi mælir með. Bókin hét The Phoenix Project (Phoenix verkefnið), og það útskýrir meginreglur DevOps, en það er eins og skáldsaga.
Taflan aftast í bókinni sýnir hversu oft mismunandi fyrirtæki nota kerfi sín í útgáfuumhverfi:
Amazon: 23 á dag
Google: 5 á dag
Netflix: 500 á dag
Facebook: Einu sinni á dag
Twitter: 3 sinnum í viku
Dæmigert fyrirtæki: Einu sinni á 9 mánaða fresti
Hvernig eru Amazon, Google og Netflix tíðni jafnvel möguleg? Þetta er vegna þess að þessi fyrirtæki hafa fundið út hvernig á að búa til næstum fullkomna DevOps leiðslu.
Við vorum langt frá þessu þar til við innleiddum DevOps hjá Citi. Þá var liðið mitt með mismunandi umhverfi, en uppsetningin á þróunarþjóninum var algjörlega handvirk. Allir þróunaraðilar höfðu aðgang að aðeins einum þróunarþjóni sem byggður var á IBM WebSphere Application Server Community Edition. Vandamálið var að þjónninn lokaðist alltaf þegar margir notendur reyndu að dreifa á sama tíma, þannig að þróunaraðilar þurftu að koma áformum sínum á framfæri hver við annan, sem var frekar sársaukafullt. Að auki voru vandamál með umfang prófkóða á lágu stigi, fyrirferðarmikil handvirk dreifingarferli og vanhæfni til að fylgjast með uppsetningu kóða sem tengist tilteknu verkefni eða notendasögu.
Ég áttaði mig á því að eitthvað þyrfti að gera og fann mér samstarfsmann með sama hugarfari. Við ákváðum að vinna saman að því að byggja upp upphaflegu DevOps leiðsluna - hann setti upp Tomcat sýndarvél og forritaþjón á meðan ég vann á Jenkins, samþætti Atlassian Jira og BitBucket og vann við umfang prófkóða. Þetta hliðarverkefni heppnaðist mjög vel: við gerðum næstum algjörlega sjálfvirkan fjölda ferla, náðum næstum 100% spennutíma á þróunarþjóninum okkar, veittum rakningu og bættum prófum umfang kóðans og bættum við möguleikanum á að tengja Git útibú við Jira málefni eða dreifingu. Flest verkfærin sem við notuðum til að byggja upp DevOps leiðsluna okkar voru opinn uppspretta.
Nú skil ég hversu einföld DevOps leiðslan okkar var: við notuðum ekki viðbætur eins og Jenkins skrár eða Ansible. Hins vegar virkaði þessi einfalda leiðsla vel, kannski vegna Pareto meginreglunnar (einnig þekkt sem 80/20 reglan).
Stutt kynning á DevOps og CI/CD leiðslunni
Ef þú spyrð marga, „Hvað er DevOps?“ færðu líklega nokkur mismunandi svör. DevOps, eins og Agile, hefur þróast til að spanna margar mismunandi greinar, en flestir eru sammála um nokkur atriði: DevOps er hugbúnaðarþróunaraðferð eða hugbúnaðarþróunarlífsferill (SDLC) sem miðar að því að breyta menningu þar sem þróunaraðilar og ekki- þróunaraðilar eru til í umhverfi þar sem:
Aðgerðir sem áður voru framkvæmdar handvirkt hafa verið sjálfvirkar;
Allir gera það sem þeir gera best;
Útfærslum á tilteknu tímabili fjölgar; Afköst eykst;
Aukinn sveigjanleiki í þróun.
Þó að hafa réttu hugbúnaðarverkfærin sé ekki það eina sem þú þarft til að búa til DevOps umhverfi, eru sum verkfæri nauðsynleg. Lykiltæki er samfelld samþætting og stöðug dreifing (CI/CD). Í þessari leiðslu hafa umhverfi mismunandi stig (t.d. DEV, INT, TST, QA, UAT, STG, PROD), margar aðgerðir eru sjálfvirkar og forritarar geta skrifað hágæða kóða, náð lipurð í þróun og hátt dreifingarhlutfall.
Þessi grein lýsir fimm þrepa nálgun til að búa til DevOps leiðslu eins og þá sem sýnd er á eftirfarandi skýringarmynd með því að nota opinn hugbúnað.
Skref 1: CI/CD aðferðir
Það fyrsta sem þú þarft er CI/CD tól. Jenkins, opinn uppspretta tól byggt á Java og með leyfi samkvæmt MIT leyfinu, er tólið sem gerði DevOps vinsælt og hefur orðið raunverulegur staðall.
Svo hvað er Jenkins? Hugsaðu um það sem einhvers konar töfrandi alhliða fjarstýringu sem getur talað við og skipulagt ýmsa þjónustu og verkfæri. Eitt og sér er CI/CD tól eins og Jenkins gagnslaust, en það verður öflugra þar sem það tengist mismunandi verkfærum og þjónustu.
Jenkins er aðeins eitt af mörgum opnum CI/CD verkfærum sem þú getur notað til að byggja upp DevOps leiðsluna þína.
Jenkins: Creative Commons og MIT
Travis CI: MIT
Cruise Control: BSD
Byggingarbotni: GPL
Apache Gump: Apache 2.0
Cabie: GNU
Svona líta DevOps ferlar út með CI/CD tóli:
Þú ert með CI/CD tól í gangi á localhost þínum, en það er ekki mikið sem þú getur gert í augnablikinu. Við skulum halda áfram á næsta stig DevOps ferðarinnar.
Skref 2: Stjórna heimildastýringarkerfum
Besta (og kannski auðveldasta) leiðin til að sannreyna að CI/CD tólið þitt geti gert töfra sína er að samþætta við frumkóðastýringu (SCM) tól. Af hverju þarftu heimildastýringu? Segjum að þú sért að þróa forrit. Alltaf þegar þú býrð til forrit ertu að forrita og það skiptir ekki máli hvort þú notar Java, Python, C++, Go, Ruby, JavaScript eða eitthvert af óteljandi forritunarmálum. Kóðinn sem þú skrifar er kallaður frumkóði. Í upphafi, sérstaklega þegar þú ert að vinna einn, er líklega í lagi að setja allt í staðbundna möppu. En þegar verkefnið stækkar og þú býður öðru fólki til samstarfs þarftu leið til að koma í veg fyrir árekstra á sama tíma og þú deilir breytingum á áhrifaríkan hátt. Þú þarft líka leið til að endurheimta fyrri útgáfur, því að búa til afrit og afrita/líma inn í þær er að verða úrelt. Þú (og liðsfélagar þínir) þarft eitthvað betra.
Þetta er þar sem stjórnun frumkóða verður nánast nauðsyn. Þetta tól geymir kóðann þinn í geymslum, heldur utan um útgáfur og samhæfir vinnu þátttakenda verkefnisins.
Þó að það séu mörg heimildarstýringartæki þarna úti, þá er Git staðallinn, og það með réttu. Ég mæli eindregið með því að nota Git, þó að það séu aðrir opinn uppspretta valkostir ef þú vilt.
Git: GPLv2 og LGPL v2.1
Subversion: Apache 2.0
Samhliða útgáfukerfi (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+
Svona lítur DevOps leiðsla út með því að bæta við frumkóðastýringum.
CI/CD tól getur gert sjálfvirkan ferla endurskoðunar, öflun frumkóða og samvinnu meðal meðlima. Ekki slæmt? En hvernig breytir þú því í virkt forrit svo að milljarðar manna geti notað það og metið það?
Skref 3: Búðu til smíða sjálfvirkniverkfæri
Frábært! Þú getur skoðað kóðann og gert breytingar á upprunastýringu og boðið vinum þínum að vinna saman að þróun. En þú hefur ekki búið til forrit ennþá. Til að búa til vefforrit verður það að vera sett saman og pakkað á útfæranlegt lotusnið eða keyra sem keyrsluskrá. (Athugið að túlkað forritunarmál eins og JavaScript eða PHP þarf ekki að setja saman).
Notaðu sjálfvirkni tól fyrir byggingu. Sama hvaða smíði sjálfvirkni tól þú ákveður að nota, þau hafa öll sama markmið: byggja frumkóðann í eitthvert æskilegt snið og gera sjálfvirkt verkefni að þrífa, setja saman, prófa og dreifa í tiltekið umhverfi. Byggingartæki eru mismunandi eftir forritunarmálinu þínu, en hér eru nokkrir algengir opinn uppspretta valkostir.
Nafn
Leyfi
Forritunarmál
Maven
Apache 2.0
Java
Ant
Apache 2.0
Java
stigi
Apache 2.0
Java
Bazel
Apache 2.0
Java
Gera
GNU
N / A
Grunt
MIT
JavaScript
Gulp
MIT
JavaScript
Byggingaraðili
Apache
Ruby
Rake
MIT
Ruby
AAP
GNU
Python
SCons
MIT
Python
BitBake
GPLv2
Python
Kaka
MIT
C#
ASDF
Expat (MIT)
LISP
Cabal
BSD
Haskell
Frábært! Þú getur sett uppsetningarskrár fyrir sjálfvirkni tólið í frumstýringarkerfið þitt og látið CI/CD tólið þitt setja allt saman.
Allt er í lagi, er það ekki? En hvar á að dreifa forritinu þínu?
Skref 4: Vefforritaþjónn
Í bili ertu með pakkaða skrá sem getur verið annað hvort keyranleg eða uppsetning. Til að hvaða forrit sem er til að vera raunverulega gagnlegt verður það að veita einhvers konar þjónustu eða viðmót, en þú þarft ílát til að hýsa forritið þitt.
Vefforritaþjónn er einmitt slíkur gámur. Miðlarinn býður upp á umhverfi þar sem hægt er að skilgreina rökfræði pakkans sem verið er að dreifa. Miðlarinn býður einnig upp á viðmót og býður upp á vefþjónustu með því að afhjúpa innstungur fyrir umheiminum. Þú þarft HTTP netþjón, sem og umhverfi (eins og sýndarvél) til að setja hann upp. Í bili skulum við gera ráð fyrir að þú lærir meira um þetta (þó ég hylji ílát hér að neðan).
Það eru nokkrir opinn uppspretta vefforritaþjónar.
Nafn
Leyfi
Forritunarmál
Tomcat
Apache 2.0
Java
Bryggju
Apache 2.0
Java
WildFly
GNU Lesser Public
Java
Glerfiskur
CDDL & GNU minna opinbert
Java
Django
3-liður BSD
Python
Tornado
Apache 2.0
Python
byssuhorn
MIT
Python
Python
MIT
Python
Teinn
MIT
Ruby
Node.js
MIT
Javascript
DevOps leiðslan þín er næstum tilbúin til notkunar. Gott starf!
Þó að þú getir stoppað þar og séð um samþættinguna sjálfur, eru kóðagæði mikilvægur hlutur fyrir forritara að hafa áhyggjur af.
Skref 5: Umfang kóðaprófunar
Innleiðing prófa getur verið önnur fyrirferðarmikil krafa, en forritarar verða að ná öllum villum í forritinu snemma og bæta gæði kóðans til að tryggja að endanotendur séu ánægðir. Sem betur fer eru mörg opinn hugbúnaður til að prófa kóðann þinn og gera tillögur til að bæta gæði hans. Það sem er enn betra er að flest CI/CD verkfæri geta tengst þessum verkfærum og gert ferlið sjálfvirkt.
Kóðaprófun samanstendur af tveimur hlutum: Kóðaprófunarramma sem hjálpa þér að skrifa og keyra próf, og tillöguverkfæri sem hjálpa þér að bæta gæði kóðans þíns.
Kóðaprófunarkerfi
Nafn
Leyfi
Forritunarmál
JUnit
Eclipse Public License
Java
EasyMock
Apache
Java
mockito
MIT
Java
PowerMock
Apache 2.0
Java
Pytest
MIT
Python
Tilgáta
Mozilla
Python
Eiturefni
MIT
Python
Meðmælakerfi til að bæta kóða
Nafn
Leyfi
Forritunarmál
Umfjöllun
GNU
Java
CodeCover
Eclipse Public (EPL)
Java
Coverage.py
Apache 2.0
Python
Emma
Common Public License
Java
JaCoCo
Eclipse Public License
Java
Tilgáta
Mozilla
Python
Eiturefni
MIT
Python
jasmine
MIT
JavaScript
Karma
MIT
JavaScript
Mokka
MIT
JavaScript
það er
MIT
JavaScript
Athugaðu að flest verkfærin og rammana sem nefnd eru hér að ofan eru skrifuð fyrir Java, Python og JavaScript, þar sem C++ og C# eru sér forritunarmál (þó GCC sé opinn uppspretta).
Nú þegar þú hefur innleitt prufuþekjuverkfæri ætti DevOps leiðslan þín að líta svipað út og skýringarmyndin sem sýnd er í upphafi þessarar kennslu.
Viðbótarskref
Ílát
Eins og ég sagði geturðu hýst netþjóninn þinn á sýndarvél eða netþjóni, en gámar eru vinsæl lausn.
Hvað eru ílát? Stutta skýringin er sú að sýndarvél þarf mikið magn af stýrikerfisminni, sem er umfram stærð forritsins, á meðan ílát þarf aðeins nokkur bókasöfn og stillingar til að keyra forritið. Augljóslega eru enn mikilvæg not fyrir sýndarvél, en gámur er létt lausn til að hýsa forrit, þar á meðal forritaþjón.
Þó að það séu aðrir gámavalkostir, eru þeir vinsælustu Docker og Kubernetes.
Docker: Apache 2.0
Kubernetes: Apache 2.0
Verkfæri fyrir millistig sjálfvirkni
DevOps leiðslan okkar er fyrst og fremst lögð áhersla á samvinnu forritagerð og uppsetningu, en það er margt annað sem hægt er að gera með DevOps verkfærum. Ein þeirra er notkun innviða sem kóða (IaC) verkfæri, sem einnig eru þekkt sem sjálfvirkniverkfæri millihugbúnaðar. Þessi verkfæri hjálpa til við að gera sjálfvirkan uppsetningu, stjórnun og önnur verkefni fyrir millihugbúnað. Svo, til dæmis, getur sjálfvirkni tól dregið út forrit eins og vefforritaþjón, gagnagrunn og eftirlitstæki með réttar stillingar og dreift þeim á forritaþjóninn.
Hér eru nokkur opinn hugbúnaður sjálfvirkniverkfæri:
Ansible: GNU Public
SaltStack: Apache 2.0
Matreiðslumaður: Apache 2.0
Brúða: Apache eða GPL
Finndu út upplýsingar um hvernig á að fá eftirsótta starfsgrein frá grunni eða Level Up hvað varðar færni og laun með því að taka greitt netnámskeið frá SkillFactory: