Canllaw i Ddechreuwyr: Creu Piblinell DevOps

Os ydych chi'n newydd i DevOps, edrychwch ar y canllaw pum cam hwn i greu eich piblinell gyntaf.

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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:

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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.

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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.

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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!

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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

Canllaw i Ddechreuwyr: Creu Piblinell DevOps

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:

mwy o gyrsiau

Defnyddiol

Ffynhonnell: hab.com

Ychwanegu sylw