Os ydych chi'n newydd i DevOps, edrychwch ar y canllaw pum cam hwn i greu eich piblinell gyntaf.
Mae DevOps wedi dod yn ateb safonol ar gyfer trwsio prosesau datblygu meddalwedd araf, datgymalog neu doredig. Y broblem yw, os ydych chi'n newydd i DevOps ac nad ydych chi'n gwybod ble i ddechrau, efallai nad oes gennych chi ddealltwriaeth o'r technegau hyn. Bydd yr erthygl hon yn trafod diffiniad piblinell DevOps a bydd hefyd yn darparu cyfarwyddiadau pum cam ar gyfer creu un. Er nad yw'r tiwtorial hwn yn gynhwysfawr, dylai roi sylfaen i chi i ddechrau ar eich taith ac ehangu eich gwybodaeth yn y dyfodol. Ond gadewch i ni ddechrau gyda hanes.
Fy Nhaith DevOps
Bûm yn gweithio o'r blaen ar dîm cwmwl Citi Group yn datblygu cymhwysiad gwe Isadeiledd-fel-Gwasanaeth (IaaS) i reoli seilwaith cwmwl Citi, ond roedd gennyf ddiddordeb bob amser mewn sut i wneud y broses ddatblygu yn fwy effeithlon a dod â newid diwylliannol cadarnhaol i'r tîm datblygu. Cefais yr ateb mewn llyfr a argymhellwyd gan Greg Lavender, CTO o Cloud Architecture and Infrastructure yn Citi. Enw'r llyfr oedd The Phoenix Project (Prosiect Phoenix), ac mae'n esbonio egwyddorion DevOps, ond mae'n darllen fel nofel.
Mae’r tabl yng nghefn y llyfr yn dangos pa mor aml mae cwmnïau gwahanol yn defnyddio eu systemau mewn amgylchedd rhyddhau:
Amazon: 23 y dydd
Google: 5 y dydd
Netflix: 500 y dydd
Facebook: Unwaith y dydd
Twitter: 3 gwaith yr wythnos
Cwmni nodweddiadol: Unwaith bob 9 mis
Sut mae amlder Amazon, Google a Netflix hyd yn oed yn bosibl? Mae hyn oherwydd bod y cwmnïau hyn wedi darganfod sut i greu piblinell DevOps bron yn berffaith.
Roeddem ymhell o hyn nes i ni weithredu DevOps yn Citi. Yn ôl wedyn, roedd gan fy nhîm amgylcheddau gwahanol, ond roedd y defnydd ar y gweinydd datblygu yn gwbl â llaw. Dim ond un gweinydd datblygu oedd gan bob datblygwr yn seiliedig ar IBM WebSphere Application Server Community Edition. Y broblem oedd y byddai'r gweinydd yn cau pan fyddai defnyddwyr lluosog yn ceisio defnyddio ar yr un pryd, felly roedd yn rhaid i'r datblygwyr gyfathrebu eu bwriadau i'w gilydd, a oedd yn dipyn o boen. Yn ogystal, roedd problemau gyda chwmpas cod prawf lefel isel, prosesau gosod â llaw feichus, a'r anallu i olrhain y defnydd o god sy'n gysylltiedig â thasg benodol neu stori defnyddiwr.
Sylweddolais fod angen gwneud rhywbeth a daeth o hyd i gydweithiwr o'r un anian. Fe benderfynon ni gydweithio ar adeiladu'r biblinell DevOps gychwynnol - sefydlodd beiriant rhithwir Tomcat a gweinydd cais tra roeddwn i'n gweithio ar Jenkins, integredig Atlassian Jira a BitBucket, a gweithio ar sylw cod prawf. Roedd y prosiect ochr hwn yn llwyddiannus iawn: fe wnaethom bron yn gyfan gwbl awtomeiddio llawer o brosesau, cyflawni bron i 100% uptime ar ein gweinydd datblygu, darparu olrhain a gwell cwmpas prawf o'r cod, ac ychwanegu'r gallu i gysylltu canghennau Git â materion neu leoliadau Jira. Roedd y rhan fwyaf o'r offer a ddefnyddiwyd gennym i adeiladu ein piblinell DevOps yn ffynhonnell agored.
Nawr rwy'n deall pa mor syml oedd ein piblinell DevOps: ni wnaethom ddefnyddio estyniadau fel ffeiliau Jenkins neu Ansible. Fodd bynnag, gweithiodd y biblinell syml hon yn dda, efallai oherwydd egwyddor Pareto (a elwir hefyd yn rheol 80/20).
Cyflwyniad Byr i DevOps a'r Piblinell CI/CD
Os gofynnwch i sawl person, “Beth yw DevOps?”, mae'n debyg y byddwch chi'n cael sawl ateb gwahanol. Mae DevOps, fel Agile, wedi esblygu i gwmpasu llawer o wahanol ddisgyblaethau, ond bydd y rhan fwyaf o bobl yn cytuno ar ychydig o bethau: DevOps yw ymarfer datblygu meddalwedd neu gylch bywyd datblygu meddalwedd (SDLC) y mae ei egwyddor ganolog yn newid y diwylliant y mae datblygwyr a phobl nad ydynt yn datblygu meddalwedd ynddo yn newid. mae datblygwyr yn bodoli mewn amgylchedd lle:
Mae gweithrediadau a gyflawnwyd â llaw yn flaenorol wedi'u hawtomeiddio;
Mae pawb yn gwneud yr hyn a wnânt orau;
Mae nifer y gweithrediadau dros gyfnod penodol o amser yn cynyddu; Cynnydd trwybwn;
Mwy o hyblygrwydd datblygu.
Er nad cael yr offer meddalwedd cywir yw'r unig beth sydd ei angen arnoch i greu amgylchedd DevOps, mae rhai offer yn hanfodol. Offeryn allweddol yw integreiddio parhaus a defnydd parhaus (CI/CD). Ar y gweill, mae gan amgylcheddau wahanol gamau (e.e. DEV, INT, TST, QA, UAT, STG, PROD), mae llawer o weithrediadau yn awtomataidd, a gall datblygwyr ysgrifennu cod o ansawdd uchel, cyflawni ystwythder datblygu, a chyfraddau defnyddio uchel.
Mae'r erthygl hon yn disgrifio dull pum cam o greu piblinell DevOps fel yr un a ddangosir yn y diagram canlynol gan ddefnyddio offer ffynhonnell agored.
Cam 1: Dulliau CI/CD
Y peth cyntaf sydd ei angen arnoch chi yw teclyn CI/CD. Jenkins, offeryn ffynhonnell agored yn seiliedig ar Java ac sydd wedi'i drwyddedu o dan y drwydded MIT, yw'r offeryn a boblogodd DevOps ac sydd wedi dod yn safon de facto.
Felly beth yw Jenkins? Meddyliwch amdano fel rhyw fath o reolaeth bell gyffredinol hudolus sy'n gallu siarad â gwahanol wasanaethau ac offer a'u trefnu. Ar ei ben ei hun, mae teclyn CI/CD fel Jenkins yn ddiwerth, ond mae'n dod yn fwy pwerus wrth iddo gysylltu â gwahanol offer a gwasanaethau.
Mae Jenkins yn un yn unig o lawer o offer CI / CD ffynhonnell agored y gallwch eu defnyddio i adeiladu eich piblinell DevOps.
Jenkins: Creative Commons a MIT
Travis CI: MIT
Rheoli Mordaith: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU
Dyma sut olwg sydd ar brosesau DevOps gydag offeryn CI/CD:
Mae gennych offeryn CI/CD yn rhedeg ar eich localhost, ond nid oes llawer y gallwch ei wneud ar hyn o bryd. Gadewch i ni symud ymlaen i gam nesaf taith DevOps.
Cam 2: Rheoli Systemau Rheoli Ffynhonnell
Y ffordd orau (ac efallai hawsaf) o wirio y gall eich offeryn CI / CD wneud ei hud yw integreiddio ag offeryn rheoli cod ffynhonnell (SCM). Pam mae angen rheolaeth ffynhonnell arnoch chi? Gadewch i ni ddweud eich bod yn datblygu cais. Pryd bynnag y byddwch chi'n creu cymhwysiad, rydych chi'n rhaglennu, a does dim ots a ydych chi'n defnyddio Java, Python, C++, Go, Ruby, JavaScript, neu unrhyw un o'r zillions o ieithoedd rhaglennu. Gelwir y cod a ysgrifennwch yn god ffynhonnell. Yn y dechrau, yn enwedig pan fyddwch chi'n gweithio ar eich pen eich hun, mae'n debyg ei bod hi'n iawn rhoi popeth mewn cyfeiriadur lleol. Ond wrth i'r prosiect fynd yn fwy a'ch bod yn gwahodd pobl eraill i gydweithio, mae angen ffordd arnoch i atal gwrthdaro wrth rannu addasiadau i bob pwrpas. Mae angen ffordd arnoch hefyd i adfer fersiynau blaenorol, oherwydd mae creu copïau wrth gefn a'u copïo / gludo ynddynt yn dod yn hen ffasiwn. Mae angen rhywbeth gwell arnoch chi (a'ch cyd-chwaraewyr).
Dyma lle mae rheolaeth cod ffynhonnell bron yn anghenraid. Mae'r offeryn hwn yn storio'ch cod mewn ystorfeydd, yn cadw golwg ar fersiynau, ac yn cydlynu gwaith cyfranogwyr y prosiect.
Er bod llawer o offer rheoli ffynhonnell ar gael, Git yw'r safon, ac yn gywir felly. Rwy'n argymell defnyddio Git yn fawr, er bod opsiynau ffynhonnell agored eraill os yw'n well gennych.
Git: GPLv2 a LGPL v2.1
Tanseilio: Apache 2.0
System Fersiynau Cydamserol (CVS): GNU
Vesta: LGPL
Mercwri: GNU GPL v2+
Dyma sut olwg sydd ar biblinell DevOps gydag ychwanegu rheolyddion cod ffynhonnell.
Gall offeryn CI/CD awtomeiddio'r prosesau adolygu, caffael cod ffynhonnell, a chydweithio ymhlith aelodau. Ddim yn ddrwg? Ond sut ydych chi'n ei droi'n gymhwysiad gweithredol fel y gall biliynau o bobl ei ddefnyddio a'i werthfawrogi?
Cam 3: Creu Offeryn Adeiladu Automation
Gwych! Gallwch adolygu cod a gwneud newidiadau i reolaeth ffynhonnell, a gwahodd eich ffrindiau i gydweithio ar ddatblygiad. Ond nid ydych wedi creu cais eto. I wneud cymhwysiad gwe, rhaid iddo gael ei lunio a'i becynnu mewn fformat swp y gellir ei ddefnyddio neu ei redeg fel ffeil gweithredadwy. (Sylwer nad oes angen llunio iaith raglennu wedi'i dehongli fel JavaScript neu PHP).
Defnyddiwch offeryn awtomeiddio adeiladu. Ni waeth pa offeryn awtomeiddio adeiladu rydych chi'n penderfynu ei ddefnyddio, mae ganddyn nhw i gyd yr un nod: adeiladu'r cod ffynhonnell i ryw fformat dymunol ac awtomeiddio'r dasg o lanhau, llunio, profi, a'i ddefnyddio i amgylchedd penodol. Bydd offer adeiladu yn amrywio yn dibynnu ar eich iaith raglennu, ond dyma rai opsiynau ffynhonnell agored cyffredin.
Enw
Trwydded
Iaith rhaglennu
Maven
Apache 2.0
Java
Ant
Apache 2.0
Java
Graddle
Apache 2.0
Java
Bazel
Apache 2.0
Java
gwneud
GNU
Dim
grunt
MIT
Javascript
hyfed
MIT
Javascript
Adeiladwr
Apache
Ruby
Rake
MIT
Ruby
AAP
GNU
Python
SCons
MIT
Python
BitBake
GPLv2
Python
cacen
MIT
C#
ASDF
Expat (MIT)
LISP
Cabal
BSD
Haskell
Gwych! Gallwch chi roi'r ffeiliau ffurfweddu offeryn awtomeiddio adeiladu yn eich system rheoli ffynhonnell a gadael i'ch teclyn CI / CD roi popeth at ei gilydd.
Mae popeth yn iawn, ynte? Ond ble i ddefnyddio'ch cais?
Cam 4: Gweinydd Cais Gwe
Am y tro, mae gennych ffeil wedi'i becynnu y gellir ei gweithredu neu ei gosod. Er mwyn i unrhyw raglen fod yn wirioneddol ddefnyddiol, rhaid iddo ddarparu rhyw fath o wasanaeth neu ryngwyneb, ond mae angen cynhwysydd arnoch i gynnal eich cais.
Dim ond cynhwysydd o'r fath yw gweinydd cymhwysiad gwe. Mae'r gweinydd yn darparu amgylchedd lle gellir diffinio rhesymeg y pecyn sy'n cael ei ddefnyddio. Mae'r gweinydd hefyd yn darparu rhyngwyneb ac yn cynnig gwasanaethau gwe trwy amlygu socedi i'r byd y tu allan. Mae angen gweinydd HTTP arnoch chi, yn ogystal â rhywfaint o amgylchedd (fel peiriant rhithwir) i'w osod. Am y tro, gadewch i ni dybio y byddwch chi'n dysgu mwy am hyn (er y byddaf yn gorchuddio cynwysyddion isod).
Mae yna nifer o weinyddion cymhwysiad gwe ffynhonnell agored.
Enw
Trwydded
Iaith rhaglennu
Tomcat
Apache 2.0
Java
Glanfa
Apache 2.0
Java
WildFly
GNU Cyhoeddus Llai
Java
Pysgod Gwydr
CDDL & GNU Llai Cyhoeddus
Java
Django
3-Cymal BSD
Python
Tornado
Apache 2.0
Python
gwnicorn
MIT
Python
Python
MIT
Python
Rheiliau
MIT
Ruby
Node.js
MIT
Javascript
Mae eich piblinell DevOps bron yn barod i'w defnyddio. Swydd da!
Er y gallwch chi stopio yno a thrin yr integreiddio eich hun, mae ansawdd cod yn beth pwysig i ddatblygwr app boeni amdano.
Cam 5: Cwmpas Profi Cod
Gall gweithredu profion fod yn ofyniad beichus arall, ond rhaid i ddatblygwyr ddal unrhyw fygiau yn y cais yn gynnar a gwella ansawdd y cod i sicrhau bod defnyddwyr terfynol yn fodlon. Yn ffodus, mae yna lawer o offer ffynhonnell agored ar gyfer profi eich cod a gwneud argymhellion ar gyfer gwella ei ansawdd. Yr hyn sydd hyd yn oed yn well yw y gall y rhan fwyaf o offer CI / CD gysylltu â'r offer hyn ac awtomeiddio'r broses.
Mae profi cod yn cynnwys dwy ran: fframweithiau profi cod sy'n eich helpu i ysgrifennu a rhedeg profion, ac offer awgrymiadau sy'n eich helpu i wella ansawdd eich cod.
Systemau profi cod
Enw
Trwydded
Iaith rhaglennu
JUnit
Trwydded Gyhoeddus Eclipse
Java
HawddMock
Apache
Java
ffug
MIT
Java
PowerMock
Apache 2.0
Java
Pytest
MIT
Python
Rhagdybiaeth
Mozilla
Python
Tocs
MIT
Python
Systemau argymell ar gyfer gwella cod
Enw
Trwydded
Iaith rhaglennu
Cwmpas
GNU
Java
Clawr Cod
Eclipse Cyhoeddus (EPL)
Java
Coverage.py
Apache 2.0
Python
Emma
Trwydded Gyhoeddus Gyffredin
Java
JaCoCo
Trwydded Gyhoeddus Eclipse
Java
Rhagdybiaeth
Mozilla
Python
Tocs
MIT
Python
Jasmine
MIT
Javascript
Karma
MIT
Javascript
Mocha
MIT
Javascript
mae
MIT
Javascript
Sylwch fod y rhan fwyaf o'r offer a'r fframweithiau a grybwyllir uchod wedi'u hysgrifennu ar gyfer Java, Python a JavaScript, gan fod C++ a C# yn ieithoedd rhaglennu perchnogol (er bod GCC yn ffynhonnell agored).
Nawr eich bod wedi gweithredu offer darlledu prawf, dylai eich piblinell DevOps edrych yn debyg i'r diagram a ddangosir ar ddechrau'r tiwtorial hwn.
Camau ychwanegol
Cynhwyswyr
Fel y dywedais, gallwch chi gynnal eich gweinydd ar beiriant rhithwir neu weinydd, ond mae cynwysyddion yn ateb poblogaidd.
Beth yw cynwysyddion? Yr esboniad byr yw bod angen llawer iawn o gof system weithredu ar beiriant rhithwir, sy'n fwy na maint y cais, tra mai dim ond ychydig o lyfrgelloedd a chyfluniadau sydd eu hangen ar gynhwysydd i redeg y cais. Yn amlwg, mae yna ddefnyddiau pwysig o hyd ar gyfer peiriant rhithwir, ond mae cynhwysydd yn ateb ysgafn ar gyfer cynnal cais, gan gynnwys gweinydd cais.
Er bod opsiynau cynhwysydd eraill, y rhai mwyaf poblogaidd yw Docker a Kubernetes.
Dociwr: Apache 2.0
Kubernetes: Apache 2.0
Offer awtomeiddio canolradd
Mae ein piblinell DevOps yn canolbwyntio'n bennaf ar adeiladu a defnyddio cymwysiadau ar y cyd, ond mae yna lawer o bethau eraill y gallwch chi eu gwneud gydag offer DevOps. Un ohonynt yw'r defnydd o offer Isadeiledd fel Cod (IaC), a elwir hefyd yn offer awtomeiddio canolwedd. Mae'r offer hyn yn helpu i awtomeiddio gosod, rheoli a thasgau eraill ar gyfer nwyddau canol. Felly, er enghraifft, gall offeryn awtomeiddio echdynnu cymwysiadau fel gweinydd cymwysiadau gwe, cronfa ddata, ac offeryn monitro gyda'r ffurfweddiadau cywir a'u defnyddio i weinydd y rhaglen.
Dyma rai offer awtomeiddio canolwedd ffynhonnell agored:
Atebol: GNU Public
SaltStack: Apache 2.0
Cogydd: Apache 2.0
Pyped: Apache neu GPL
Darganfyddwch fanylion ar sut i gael proffesiwn y mae galw mawr amdano o'r dechrau neu Lefel Up o ran sgiliau a chyflog trwy ddilyn cyrsiau ar-lein â thâl gan SkillFactory: