8.7

Gweld yn Saesneg

8.7 Systemau adeiladu a rheoli arteffactau

Trosolwg a chymhelliant

Yr adeiladu yw’r man lle mae eich cod ffynhonnell yn dod yn rhywbeth y gallwch ei anfon. Mae pob piblinell ym mhennod 8.1 yn dechrau yma: cyn y gallwch brofi, sganio, defnyddio, neu ddyrchafu unrhyw beth, rhaid i system adeiladu droi coeden o ffeiliau ffynhonnell yn arteffact pendant , deuaidd wedi’i grynhoi, pecyn, delwedd cynhwysydd, neu fwndel o asedau statig. Os yw’r cam cyntaf hwnnw’n araf, yn ansefydlog, neu’n amhosibl ei atgynhyrchu, mae pob cam sy’n dilyn yn etifeddu’r niwed. Mae adeiladu sy’n cynhyrchu allbwn gwahanol ar ddwy beiriant yn tanseilio pob prawf a redwch a phob cymeradwyaeth a gasglwch, gan nad yw’r hyn a wiriwyd yn brofadwy’r un peth â’r hyn a anfonir.

Mae’r bennod hon am y cam cyntaf hwnnw a’i allbwn: y system adeiladu sy’n adeiladu arteffactau, a’r rheolaeth arteffactau sy’n eu storio, eu fersiynu, eu diogelu, a’u dyrchafu. Mae’n fwriadol gulach na phennod 8.1, sy’n ymdrin â’r biblinell integreiddio parhaus a chyflenwi parhaus (CI/CD) gyfan. Yma, testun y drafodaeth yw’r adeiladu ei hun a’r arteffactau y mae’n eu cynhyrchu. Mae’n cydategu pennod 2.10 ar reoli ffurfweddiad meddalwedd, sy’n llywodraethu sut rydych yn olrhain ac yn rheoli’r mewnbynnau, a phennod 2.18 ar reoli dibyniaethau a’r gadwyn gyflenwi, sy’n llywodraethu’r cod trydydd parti a dynnwch i mewn. Yr adeiladu yw’r man lle mae’r mewnbynnau hynny’n cwrdd: eich ffynhonnell, eich dibyniaethau, a’ch ffurfweddiad, i gyd yn cydgyfarfod yn un allbwn digyfnewid.

I dimau mawr, mae’r goblygiadau’n bendant. Pan fydd cannoedd o beirianwyr yn aros am adeiladau sy’n cymryd sawl munud, sawl gwaith y dydd, mae’r amser a gollir yn gronnol yn fwy nag unrhyw gost peirianneg arall bron. Pan fydd arteffactau’n newidiadwy, heb eu holrhain, neu’n cael eu hailadeiladu ar gyfer pob amgylchedd, rydych yn colli’r gallu i ddweud yn hyderus beth sy’n rhedeg mewn cynhyrchiad. Mewn lleoliadau menter a llywodraeth, nid yw’r olrheiniadwyedd hwnnw’n ddewisol. Mae archwilwyr a swyddogion diogelwch angen tystiolaeth bod y deuaidd mewn cynhyrchiad wedi dod o ffynhonnell a adolygwyd, wedi’i adeiladu gan system ymddiriedus, gyda chadwyn gadwraeth wedi’i chofnodi. Mae arfer adeiladu a rheoli arteffactau disgybledig yn troi’r dystiolaeth honno’n sgil-effaith o waith arferol yn hytrach na sgrialu cyn pob archwiliad.

Egwyddorion allweddol

  • Yr adeiladu yw cam cyntaf cyflenwi: trinwch ei gyflymder a’i gywirdeb fel materion cynhyrchiad.
  • Anelwch at adeiladau atgynhyrchadwy ac, lle bo modd, hermetig: yr un mewnbynnau, yr un allbwn, bob tro.
  • Adeiladwch arteffact unwaith, yna dyrchafwch yr union arteffact hwnnw ar draws amgylcheddau.
  • Gwnewch arteffactau’n ddigyfnewid ac wedi’u cyfeirio yn ôl cynnwys, a’u fersiynu’n ystyrlon.
  • Storiwch arteffactau mewn ystorfa reoledig gyda chadwraeth, rheolaeth mynediad, a tharddiad.
  • Defnyddiwch storfeydd yn helaeth, ond trinwch y storfa fel ffin ddiogelwch, nid tric cyflymder yn unig.
  • Cofnodwch darddiad, llofnodion, a rhestr ddeunyddiau adeg adeiladu, nid ar ôl y ffaith.

Argymhellion

Trinwch yr adeiladu fel cam cyntaf cyflenwi

Mae eich system adeiladu yn seilwaith cynhyrchiad, a dylech ei hariannu a’i chynnal felly. Mae adeiladu arteffact yn gyflym ac yn gywir yn sylfaen y mae CI/CD (pennod 8.1) yn gorffwys arni. Pan fydd timau’n trin yr adeiladu fel ôl-ystyriaeth, pentwr o sgriptiau cragen nad oes neb yn berchen arnynt, maent yn talu amdano mewn piblinellau ansefydlog, namau dirgel “mae’n gweithio ar fy mheiriant i”, ac adborth araf sy’n erydu’r llif peirianneg cyfan a ddisgrifir yn Rhan 11. Rhowch berchennog i’r adeiladu, diffiniad a gedwir mewn rheolaeth fersiynau ochr yn ochr â’r cod (pennod 2.14 ar strwythur ystorfa), a’r un disgyblaeth adolygu ag unrhyw system dyngedfennol arall.

Gwnewch adeiladau’n atgynhyrchadwy ac, lle gallwch, yn hermetig

Mae adeiladwaith atgynhyrchadwy yn cynhyrchu allbwn union yr un fath, did-am-ddid, o’r un ffynhonnell, fel y gall unrhyw un ailadeiladu’n annibynnol a gwirio bod arteffact yn cyfateb i’w ffynhonnell. Dyma’r priodwedd sy’n eich galluogi i ymddiried nad ymyrrwyd â deuaidd rhwng y cyflwyniad (commit) a’r defnyddio. Golyga cyrraedd yno ddileu ffynonellau anbendantrwydd: stampiau amser mewnadeiledig, llwybrau ffeil absoliwt, hapusrwydd trefn adeiladu, ac ymofyniadau rhwydwaith y mae eu canlyniadau’n crwydro dros amser.

Mae adeiladwaith hermetig yn mynd ymhellach drwy ddatgan pob mewnbwn ymlaen llaw a rhedeg mewn amgylchedd ynysig na all gyrraedd y rhwydwaith na chyflwr amgylchynol y peiriant lletyol. Ni fydd dim yn mynd i mewn i’r adeiladu heblaw’r hyn a ddatganwyd gennych: fersiynau cadwyn arfau wedi’u pinio, dibyniaethau wedi’u pinio, ffeiliau ffynhonnell penodol. Hermetigedd yw’r hyn sy’n gwneud atgynhyrchadwyedd yn ddibynadwy yn hytrach na lwcus. Mae gan hermetigedd llawn gost wirioneddol o ran offer a disgyblaeth, felly trinwch ef fel cyfeiriad yn hytrach na chyflwr deuaidd. Mae hyd yn oed cynnydd rhannol ( pinio fersiwn eich crynhoydd, cynnwys copïau lleol o’ch dibyniaethau neu eu cloi, diosg stampiau amser ) yn prynu’r rhan fwyaf o’r ymddiriedaeth am ffracsiwn o’r ymdrech.

Datrys dibyniaethau’n ddeterministaidd gyda ffeiliau cloi

Mae pob adeiladu’n tynnu cod trydydd parti i mewn, a sut rydych yn ei ddatrys sy’n penderfynu a yw eich adeiladu’n ddeterministaidd. Mae ffeil gloi yn cofnodi union fersiwn a ddatryswyd, a hash cryptograffig, pob dibyniaeth uniongyrchol a throsiannol, fel bod adeiladu a wneir ymhen misoedd yn datrys i union yr un graff. Cyflwynwch y ffeil gloi, trinwch newidiadau iddi fel digwyddiadau i’w hadolygu, a gwiriwch hashys ar bob ymofyniad fel na all pecyn uwchffrwd wedi’i newid lithro i mewn heb i neb sylwi. Dyma wyneb-adeg-adeiladu’r ddisgyblaeth cadwyn gyflenwi ym mhennod 2.18. Heb ffeil gloi, nid yw “fe’i hadeiladwyd ddoe” yn dweud dim wrthych am yr hyn a adeiledir heddiw, gan y gall ystod fersiwn arnofiol dynnu rhyddhad newydd yn dawel, neu gall ymosodwr gyhoeddi un maleisus.

Defnyddiwch adeiladau cynyddrannol a storfeydd, yn lleol ac o bell

Ni ddylai neb ailadeiladu’r hyn nad yw wedi newid. Mae adeiladau cynyddrannol yn olrhain pa fewnbynnau sy’n bwydo pa allbynnau ac yn ailadeiladu dim ond y rhannau yr effeithir arnynt gan newid. Mae storfa adeiladu’n cadw allbynnau gwaith blaenorol wedi’u mynegeio gan hash eu mewnbynnau, fel bod targed heb newid yn cael ei nôl yn hytrach na’i ailgyfrifo. Mae storfa leol yn cyflymu dolen un datblygwr; mae storfa adeiladu bell neu ddosbarthedig yn rhannu canlyniadau ar draws y tîm cyfan a fflyd CI, fel bod y person cyntaf i adeiladu mewnbwn penodol yn talu’r gost a phawb arall yn cael trawiad storfa. Ar fonorepo mawr, dyma’r gwahaniaeth rhwng adeiladu deng munud ac un deng eiliad.

Yr enillion yw cyflymder adborth i ddatblygwyr, un o’r buddsoddiadau mwyaf trosoledd y gallwch ei wneud. Mae adborth cyflym a chywir yn cadw peirianwyr mewn llif ac yn byrhau’r ddolen rhwng ysgrifennu cod a gwybod a yw’n gweithio. Gwarchodwch gywirdeb y storfa’n ofalus, serch hynny: mae allwedd storfa sy’n hepgor mewnbwn go iawn (newidyn amgylchedd, fersiwn teclyn) yn cynhyrchu canlyniadau hen a diflas eu datrys. Nid yw’r storfa’n fwy dibynadwy na chyflawnrwydd ei mynegeio mewnbwn.

Dewiswch offer adeiladu sy’n cyfateb i’ch graddfa

Mae offer adeiladu’n eistedd ar sbectrwm. Ar y pen ysgafn, mae Make ac offer brodorol iaith yn modelu graff dibyniaeth syml ac yn ddigon ar gyfer un gwasanaeth neu ystorfa fach. Yn y canol, mae offer ecosystem fel Gradle a Maven ar gyfer byd Java, neu’r cadwyni arfau safonol ar gyfer Go, Rust, a JavaScript, yn ychwanegu datrys dibyniaethau a chonfensiynau. Ar y pen trwm, mae systemau seiliedig ar graff fel Bazel ac offer adeiladu monorepo tebyg yn modelu’r adeiladu cyfan fel graff cyfeiriedig didro mân-fanwl, hermetig, o dargedau, sy’n galluogi cynyddrannedd manwl gywir, storfa o bell, a gweithredu o bell ar draws cod-sylfaen mawr.

Mae offer trymach yn talu ar ei ganfed pan fydd gennych lawer o brosiectau rhyng-ddibynnol, monorepo mawr (pennod 2.14), neu amseroedd adeiladu sy’n tagu eich timau. Mae’n costio buddsoddiad gwirioneddol: cromlin ddysgu serth, ymdrech mudo, a thîm penodedig i gynnal diffiniadau’r adeiladu. Peidiwch â mabwysiadu offer dosbarth-Bazel am ei fod yn ffasiynol. Mabwysiadwch ef pan fydd eich graff adeiladu’n ddigon mawr fel bod storfeydd manwl a chydredoldeb yn adfer mwy o amser peirianneg nag y mae’r teclyn yn ei gostio i’w redeg. I’r rhan fwyaf o systemau bach a chanolig, mae teclyn ecosystem da gyda storfa o bell yn fan melys.

Storiwch arteffactau mewn ystorfa reoledig

Ar ôl i chi adeiladu arteffact, mae angen cartref arno. Mae ystorfa arteffactau (a elwir hefyd yn gofrestrfa) yn storio’ch pecynnau, delweddau cynhwysydd, a deuaidd gyda fersiynu, rheolaeth mynediad, a metadata. Mae’n gymar i’ch ystorfa ffynhonnell: ffynhonnell i mewn, arteffactau allan, y ddau wedi’u rheoli. Mae ystorfa dda’n rhoi un lle ymddiriedus i chi gyhoeddi ac adfer arteffactau mewnol, yn dirprwyo ac yn storio rhai allanol fel nad ydych yn estyn at y rhyngrwyd cyhoeddus ar bob adeiladu, ac yn cofnodi pwy gyhoeddodd beth a phryd. Mae gan ddelweddau cynhwysydd eu confensiynau cofrestrfa eu hunain, ac mae gan fathau pecyn eraill eu rhai hwy, ond yr un yw’r ddisgyblaeth: nid oes dim yn rhedeg mewn cynhyrchiad na ddaeth o storfa reoledig, â rheolaeth mynediad.

Fersiynwch arteffactau a’u gwneud yn ddigyfnewid ac wedi’u cyfeirio yn ôl cynnwys

Rhowch fersiwn ystyrlon i bob arteffact. Mae fersiynu semantig (mawr.mân.clwt) yn cyfleu natur newid i ddefnyddwyr: mae naid fawr yn arwyddo newid sy’n torri pethau, mae un fân yn ychwanegu nodweddion cydnaws, mae clwt yn trwsio namau. Ochr yn ochr â’r fersiwn darllenadwy gan bobl, nodwch bob arteffact gan hash cryptograffig o’i gynnwys, fel ei fod wedi’i gyfeirio yn ôl cynnwys. Mae cyfeiriad cynnwys, a elwir yn aml yn grynodeb, yn ôl bys sy’n newid os newidir un beit sengl, sy’n eich galluogi i gyfeirio at arteffact penodol yn ddiamwys a chanfod unrhyw ymyrryd.

Gwnewch arteffactau a gyhoeddwyd yn ddigyfnewid: pan gyhoeddir fersiwn, ni fydd byth yn newid. Mae ailgyhoeddi beitiau gwahanol o dan yr un fersiwn yn berygl cadwyn gyflenwi ac yn hunllef ddadfygio, gan y gall dau berson ddal “fersiwn 1.4.2” a chael meddalwedd gwahanol. Mae tagiau newidiadwy fel “latest” yn gyfleus i bobl ond rhaid iddynt bob amser ddatrys, ar gyfer unrhyw beth sy’n bwysig, i grynodeb digyfnewid penodol a gofnodwch. Defnyddiwch yn ôl crynodeb, nid tag arnofiol, fel bod yr hyn a brofwyd gennych yn brofadwy’r hyn a redwch.

Adeiladwch unwaith, dyrchafwch ym mhobman

Adeiladwch arteffact un tro, yna symudwch yr union arteffact hwnnw drwy eich amgylcheddau: datblygu, llwyfannu, cynhyrchu. Mae’r rheol “adeiladu unwaith, dyrchafu ym mhobman” hon yn arfer rheoli arteffactau pwysicaf oll. Os ailadeiladwch ar gyfer pob amgylchedd, rydych wedi taflu ymaith eich gwarant mai’r arteffact a brofwyd yw’r un a ddefnyddiwyd, gan y gall pob ailadeiladu dynnu dibyniaeth wahanol neu redeg ar beiriant ychydig yn wahanol. Mae dyrchafu’n weithrediad metadata: rydych yn marcio crynodeb sydd eisoes wedi’i adeiladu a’i brofi fel un a gymeradwywyd ar gyfer yr amgylchedd nesaf, ac rydych yn ei ffurfweddu ar gyfer yr amgylchedd hwnnw drwy ffurfweddiad allanoledig (pennod 2.10) yn hytrach na thrwy ailadeiladu. Mae hyn yn cadw’r deuaidd yn gyson a’r ffurfweddiad yn newidiol, sef yn union y gwahaniad a ddymunwch ar gyfer dibynadwyedd ac archwiliadwyedd fel ei gilydd.

Cofnodwch darddiad, llofnodwch arteffactau, a chynhyrchwch SBOM

Adeg adeiladu, cofnodwch o ble y daeth yr arteffact a phrofwch na newidiwyd ef. Mae tarddiad yn ddatganiad wedi’i lofnodi o sut yr adeiladwyd arteffact: pa gyflwyniad ffynhonnell, pa adeiladwr, pa fewnbynnau. Mae llofnodi arteffact yn caniatáu i ddefnyddwyr wirio dilysrwydd a chyfanrwydd cyn iddynt ei redeg, ac mae gwirio llofnodion adeg defnyddio’n cau’r ddolen. Mae rhestr ddeunyddiau meddalwedd (SBOM), rhestr gyflawn o’r cydrannau a’r dibyniaethau y tu mewn i arteffact, yn eich galluogi i ateb “a effeithir arnom?” o fewn munudau pan ddatgelir gwendid newydd, yn hytrach na threulio dyddiau’n chwilota drwy gofnodion adeiladu.

Mae fframweithiau fel SLSA (Supply-chain Levels for Software Artifacts) yn rhoi model graddedig i chi ar gyfer cyfanrwydd adeg adeiladu: mae lefelau uwch yn gofyn am adeiladau hermetig, ynysig, a tharddiad na ellir ei ffugio. Cynhyrchwch hyn i gyd yn yr adeiladu, lle mae’r wybodaeth yn awdurdodol ac yn rhad i’w chasglu, nid ei hail-lunio wedyn pan fo’n ddrud ac yn annibynadwy. Mae’r gwaith hwn yn gwasanaethu’n uniongyrchol gylchred bywyd datblygu meddalwedd diogel pennod 4.9 a phryderon cadwyn gyflenwi pennod 2.18.

Diogelwch y storfa a rheolwch gadwraeth a chost

Mae storfa adeiladu a rennir yn ffin ymddiriedaeth a rennir. Os gall ymosodwr ysgrifennu cofnod wedi’i wenwyno, mae pob defnyddiwr sy’n ei nôl yn rhedeg cod wedi’i beryglu, a daw’r fantais gyflymder yn arwyneb ymosod. Diogelwch y storfa gyda dilysiant, cwmpaswch fynediad ysgrifennu’n gul (yn aml dim ond CI ymddiriedus, byth liniaduron datblygwyr), a sicrhewch fod allweddi storfa’n hasio pob mewnbwn go iawn fel na all cofnod wedi’i wenwyno neu’n hen ffugio bod yn un dilys. Trinwch wenwyno storfa fel model bygythiad go iawn, yn enwedig ar gyfer storfeydd pell a rennir ar draws timau.

Mae arteffactau hefyd yn cronni cost. Mae delweddau cynhwysydd ac allbynnau adeiladu’n fawr, ac mae cofrestrfa ddiderfyn yn tyfu nes bod biliau storio a chwiliadau araf yn gorfodi’r mater. Diffiniwch bolisïau cadwraeth: cadwch bob arteffact a ddyrchafwyd i gynhyrchiad a phopeth y cyfeirir ato gan system sy’n rhedeg, dodwch derfyn amser i ddod â hen adeiladau datblygu a chais-tynnu i ben yn awtomatig, a chofnodwch beth a ddilewyd gennych. Y nod yw storfa sy’n cadw’r hyn sydd ei angen arnoch ar gyfer atgynhyrchadwyedd ac archwilio tra’n bwrw’r sŵn, am gost a ddewiswch yn ymwybodol yn hytrach nag un sy’n eich synnu.

Cyfaddawdau: manteision ac anfanteision

PenderfyniadManteisionAnfanteision
Teclyn adeiladu graff trwm (dosbarth Bazel)Cynyddrannedd manwl gywir, storfa a gweithredu o bell, yn graddio i fonorepos enfawrCromlin ddysgu serth, cost mudo, angen tîm adeiladu penodedig
Teclyn adeiladu ysgafn (Make, brodorol)Syml, gorbenion isel, cyflym i’w fabwysiaduCynyddrannedd a storfeydd gwael ar raddfa, hermetigedd gwan
Storfa adeiladu bell/ddosbarthedigCanlyniadau a rennir, cyflymiadau dramatig ar draws y fflydArwyneb gwenwyno storfa, mae cywirdeb yn dibynnu ar hasio mewnbwn cyflawn
Adeiladau hermetig llawnAtgynhyrchadwyedd dibynadwy, tarddiad cryfCost offer a disgyblaeth go iawn, llifau gwaith lleol anos
Adeiladu unwaith, dyrchafu ym mhobmanMae’r arteffact a brofwyd yn cyfateb i’r arteffact a anfonwyd, llwybr archwilio glânAngen ffurfweddiad allanoledig a dyrchafu disgybledig
Arteffactau digyfnewid, wedi’u cyfeirio yn ôl cynnwysYmddangosiad amlwg o ymyrryd, cyfeiriadau diamwysLlai cyfleus na thagiau arnofiol, mwy o storio i’w reoli
Cadwraeth arteffact hirAtgynhyrchadwyedd ac hanes archwilio llawnCost storio, chwiliadau arafach heb bolisi glanhau

Y tyndra sy’n ailadrodd yw rhwng cyflymder ac ymddiriedaeth. Mae storfeydd, ffermydd adeiladu a rennir, a thagiau arnofiol i gyd yn gwneud adeiladau’n gyflymach ac yn fwy cyfleus, ac mae pob un ohonynt, wedi’i ddefnyddio’n ddi-hid, yn gwanhau eich gallu i ddweud yn union beth a adeiladwyd gennych a phrofi na ymyrrwyd ag ef. Datryswch hyn drwy wneud y llwybr dibynadwy yn llwybr cyflym. Mae hash mewnbwn cyflawn yn gwneud y storfa’n gyflym ac yn gywir fel ei gilydd. Mae defnyddio yn ôl crynodeb yr un mor gyflym â defnyddio yn ôl tag ac yn llawer mwy diogel. Mae cynhyrchu SBOM yn yr adeiladu’n costio eiliadau ac yn arbed dyddiau. Anaml y bydd rhaid i chi ddewis rhwng cyflymder a chyfanrwydd os peiriannwch y cyfanrwydd i mewn i’r llwybr cyflym o’r cychwyn.

Cwestiynau i’w trafod gyda’ch tîm

  1. A allwn ni ailadeiladu arteffact cynhyrchiad chwarter diwethaf heddiw a chael yr un beitiau, ac os na allwn, beth sydd ar goll? Dyma’r prawf mwyaf llym o’ch disgyblaeth adeiladu, gan fod atgynhyrchadwyedd yn dibynnu ar gadwyni arfau wedi’u pinio, dibyniaethau wedi’u cloi, ac anbendantrwydd wedi’i ddileu, i gyd yn gweithio gyda’i gilydd. Dewiswch arteffact penodol a anfonwyd rai misoedd yn ôl a cheisiwch mewn gwirionedd ei ailadeiladu o’r cyflwyniad ffynhonnell a gofnodwyd. Mae’r hyn a ddysgwch o’r ymgais yn fwy gwerthfawr nag unrhyw ddogfen bolisi: efallai i ystod dibyniaeth arnofio, efallai na chafodd fersiwn y crynhoydd ei binio erioed, efallai fod stamp amser wedi’i bobi i mewn. Y bylchau a ganfyddwch yw eich ôl-groniad atgynhyrchadwyedd, a’u cau yw’r hyn sy’n eich galluogi i ymddiried mai’r hyn a archwiliwyd yw’r hyn a redwch, sy’n bwysig dros ben mewn lleoliadau rheoledig a llywodraethol lle mae’r gadwyn gadwraeth honno’n ofyniad cyfreithiol.

  2. A ydym yn adeiladu pob arteffact unwaith ac yn ei ddyrchafu, neu a ydym yn ailadeiladu ar gyfer pob amgylchedd, a sut y byddem yn profi pa un? Mae llawer o dimau’n credu eu bod yn dyrchafu un arteffact ond yn darganfod, wrth edrych yn ofalus, fod llwyfannu a chynhyrchu bob un yn sbarduno adeiladu ffres gyda mewnbynnau ychydig yn wahanol. Olrheiniwch un rhyddhad go iawn o’r cyflwyniad i gynhyrchiad a chadarnhewch a symudodd yr union un crynodeb drwy bob amgylchedd neu a gynhyrchwyd beitiau newydd ar hyd y ffordd. Os canfyddwch ailadeiladu, rydych wedi canfod man lle mae eich gwarantau profi’n wannach na’r hyn a feddyliech, gan nad yw’r arteffact a brofwyd a’r arteffact a ddefnyddiwyd yn brofadwy’r un fath. Mae’r ateb, sef allanoli ffurfweddiad fel bod y deuaidd yn aros yn gyson tra bo gosodiadau’n amrywio, yn talu ar ei ganfed o ran dibynadwyedd a stori archwilio lanach o lawer.

  3. Pe cyhoeddid gwendid critigol mewn llyfrgell gyffredin yfory, pa mor gyflym y gallem restru pob arteffact sy’n ei chynnwys? Mae’r cwestiwn hwn yn profi a yw eich arfer tarddiad-adeg-adeiladu a SBOM yn real neu’n uchelgeisiol. Pan ddaw’n amlwg fod cydran a ddefnyddir yn eang yn agored i ymosodiad, y sefydliadau sy’n adfer o fewn oriau yw’r rhai sy’n cynhyrchu rhestr ddeunyddiau adeg adeiladu ac yn ei storio gyda phob arteffact; y rhai sy’n adfer o fewn wythnosau sy’n grepian drwy gofnodion adeiladu ac yn cyfweld peirianwyr. Ewch drwy’r senario’n benodol gyda llyfrgell y dibynnwch arni mewn gwirionedd, ac amserwch faint fyddai’r ateb yn ei gymryd heddiw. Mae’r bwlch rhwng yr amser hwnnw a “munudau” yn fesur uniongyrchol o’ch amlygiad cadwyn gyflenwi, ac mae’n cysylltu’n uniongyrchol â gwaith y gylchred bywyd datblygu diogel ym mhennod 4.9.

  4. Faint o amser peirianneg mae ein hadeiladau’n ei gostio bob dydd, a beth yw’r achos busnes dros eu gwneud yn gyflymach? Mae oedi adeiladu’n dreth a delir ar bob newid gan bob peiriannydd, ac ar raddfa tîm mawr mae’r cyfanswm yn hawdd ei danamcangyfrif gan nad yw un aros sengl yn teimlo’n ddrud. Mae cytuno i’w fesur yn troi cwyn amwys yn rif y gallwch ei bwyso yn erbyn cost storfa bell, cynyddrannedd gwell, neu offer adeiladu trymach. Dewch â’ch amseroedd adeiladu canolrifol a gwaethaf-achos, lleol a CI, nifer yr adeiladau’r dydd, ac amcangyfrif gonest o pa mor aml y mae adeiladu araf yn gwthio rhywun allan o lif i newid cyd-destun. Yr ystyriaeth gystadleuol yw nad yw adeiladau cyflymach yn ddi-gost: mae storfa bell a gweithredu dosbarthedig yn ychwanegu seilwaith i’w redeg a’i ddiogelu, ac mae offer trymach yn ychwanegu tîm cynnal. I sefydliad menter neu lywodraeth, cyfrifwch gost trwygyfer a hwyliau adborth araf ar draws llawer o dimau, sydd fel arfer yn gwneud i’r bil seilwaith edrych yn fach, a dyma’n union y fframio y mae arweinyddiaeth eisoes yn ei ariannu.

  5. Pwy sy’n gallu ysgrifennu i’n storfa adeiladu a rennir, a beth sy’n atal cofnod wedi’i wenwyno rhag cyrraedd cynhyrchiad? Mae storfa a rennir yn cyfnewid ennill cyflymder am ffin ymddiriedaeth newydd, ac mae’r un mecanwaith sy’n gadael i ganlyniad un peiriannydd wasanaethu’r fflyd gyfan yn gadael i un cofnod llygredig neu faleisus beryglu pawb sy’n ei nôl. I dîm mawr, radiws y ffrwydrad yw’r sefydliad cyfan, felly mae hyn yn haeddu penderfyniad bwriadus yn hytrach na beth bynnag y mae rhagosodiadau teclyn yn digwydd bod. Dewch â’r rhestr o bwy a beth sydd â mynediad ysgrifennu i bob storfa, a yw ysgrifennu wedi’i gwmpasu i CI ymddiriedus yn hytrach na liniaduron datblygwyr, ac a yw eich allweddi storfa’n hasio pob mewnbwn go iawn fel na all cofnod hen neu wedi’i wenwyno ffugio bod yn ddilys. Y tyndra yw bod y rheolaethau tynnaf yn arafu’r llwybr cyfleus lle mae datblygwyr yn gwthio cofnodion storfa o’u peiriannau eu hunain. Mewn lleoliadau menter a llywodraeth, trinwch wenwyno storfa fel bygythiad penodol yn eich model cadwyn gyflenwi a gofynnwch am yr un rheolaethau mynediad, cofnodi, ac adolygu a gymhwyswch i unrhyw system cynhyrchiad arall a all chwistrellu cod i mewn i ryddhad.

  6. Ar ba bwynt mae ein graff adeiladu’n cyfiawnhau offer trymach, a sut y byddwn yn gwybod ein bod wedi ei groesi? Mae’r dewis rhwng teclyn ecosystem ysgafn a system seiliedig ar graff fel Bazel yn un o’r penderfyniadau mwyaf costus ac anodd eu gwrthdroi yn y maes hwn, gan fod mudo cod-sylfaen mawr i ddiffiniadau adeiladu manwl-fanwl yn costio misoedd a thîm penodedig. Mae penderfynu ar y trothwy ymlaen llaw yn eich cadw rhag naill ai mabwysiadu cymhlethdod nad oes ei angen arnoch am ei fod yn ffasiynol, neu lynu wrth declyn ysgafn ymhell ar ôl i’ch amseroedd adeiladu dagu pob tîm. Dewch â maint a rhyng-ddibyniaeth eich graff adeiladu, metrigau adeiladu a chyfradd-trawiad-storfa cyfredol, ac amcangyfrif realistig o gost mudo a chynnal parhaus yn erbyn yr amser peirianneg y byddai’r teclyn yn ei adfer. Y dynfa gystadleuol yw bod offer trwm yn cyflenwi cynyddrannedd manwl gywir a gweithredu o bell na all dim arall ei gyfateb ar raddfa, ond dim ond os yw eich graff yn ddigon mawr mewn gwirionedd i dalu’r gost yn ôl. I fenter neu asiantaeth fawr, pwyswch hefyd a yw gwarantau hermetigedd a tharddiad y teclyn yn helpu i fodloni gofynion archwilio a chadwyn gyflenwi, sy’n gallu newid y cyfrifiad y tu hwnt i gyflymder crai.

Trwy lens sector

Cwmni newydd. Gyda thîm bach a dim lle anadlu ar gyfer seilwaith adeiladu, cadwch bethau’n ysgafn: defnyddiwch offer adeiladu brodorol iaith, mabwysiadwch ffeiliau cloi o’r diwrnod cyntaf, a defnyddiwch ddelweddau cynhwysydd yn ôl crynodeb yn hytrach na’r tag “latest”, gan fod yr arferion hynny’n costio bron dim ac yn eich arbed rhag dosbarth cyfan o boen “mae’n gweithio ar fy mheiriant i” yn ddiweddarach. Gwrthsefwch offer adeiladu graff trwm; eich adnodd prinnaf yw sylw peirianneg. Storfa adeiladu bell yw’r un uwchraddiad sy’n werth estyn amdano unwaith y bydd adeiladau’n dechrau ymgripio heibio ychydig funudau.

Busnes bach. Heb beiriannydd adeiladu penodedig, pwyswch ar wasanaethau rheoledig yn hytrach na rhedeg eich seilwaith arteffact eich hun: mae cofrestrfa letyol a storfa gynhenid eich darparwr CI yn rhoi fersiynu, cadwraeth, a rheolaeth mynediad i chi heb dîm platfform. Fframiwch y dewis fel prynu dros adeiladu, gosodwch bolisi dod-i-ben awtomatig fel bod costau storio’n aros yn ragweladwy, a sicrhewch fod y sylfeini’n eu lle, dibyniaethau wedi’u cloi a defnyddiadau digyfnewid, wedi’u pinio yn ôl crynodeb, gan fod y rheiny’n eich diogelu hyd yn oed pan nad oes neb yn gwylio’r biblinell yn llawn amser.

Menter. Ar draws llawer o dimau, cysondeb yw’r broblem: platfform adeiladu a rennir sydd berchen arno, ystorfa arteffactau gyffredin, a safonau gorfodedig ar gyfer ffeiliau cloi, llofnodi, SBOMs, ac adeiladu-unwaith-dyrchafu fel nad oes unrhyw grŵp yn ailddyfeisio piblinell annibynadwy. Buddsoddwch mewn storfa bell ac, lle mae’r graff adeiladu’n ei gyfiawnhau, offer seiliedig ar graff, a thrinwch y storfa fel ffin ymddiriedaeth a lywodraethir gyda mynediad ysgrifennu wedi’i gwmpasu a chofnodi archwiliad. Rheolwch arteffactau fel ystad reoledig gyda pholisïau cadwraeth a tharddiad fel bod unrhyw gydran cynhyrchiad yn olrhain yn ôl i ffynhonnell a adolygwyd ar alw.

Llywodraeth. Mae rheolau caffael, tryloywder, ac atebolrwydd cyhoeddus yn gwneud cyfanrwydd adeg adeiladu’n ofyniad cydymffurfio, nid dim ond peth braf i’w gael. Aliniwch y biblinell â fframwaith graddedig fel SLSA, rhedwch adeiladau mewn amgylcheddau ynysig, wedi’u cyfyngu o ran rhwydwaith, o gadwyni arfau wedi’u pinio, a dirprwywch ddibyniaethau trydydd parti drwy ystorfa fewnol sy’n sganio ac yn cymeradwyo cyn eu defnyddio. Storiwch SBOMs a tharddiad wedi’u llofnodi’n ddigyfnewid am y blynyddoedd y mae cyfraith cadw cofnodion yn ei gofyn, defnyddiwch ddim ond arteffactau wedi’u llofnodi, wedi’u nodi yn ôl crynodeb, a byddwch yn barod i dystio i archwilwyr ac i’r cyhoedd fod y meddalwedd mewn cynhyrchiad yn union yr hyn a adolygwyd ac a gymeradwywyd.

Enghreifftiau

Cwmni newydd. Mae cwmni newydd pymtheg o bobl sy’n rhedeg monorepo bach yn dechrau gydag offer adeiladu brodorol iaith ac adborth cyflym, sef y penderfyniad cywir ar eu graddfa. Wrth iddynt dyfu, mae amseroedd adeiladu’n ymgripio heibio pum munud a pheirianwyr yn dechrau newid cyd-destun wrth aros. Yn hytrach na neidio at declyn adeiladu graff trwm, maent yn ychwanegu storfa adeiladu bell a rennir rhwng peiriannau datblygwyr a CI, sy’n torri’r rhan fwyaf o adeiladau i eiliadau gan fod targedau heb newid yn cael eu nôl, nid eu hailadeiladu. Maent yn mabwysiadu ffeiliau cloi ar gyfer pob iaith, yn defnyddio delweddau cynhwysydd yn ôl crynodeb yn hytrach na’r tag “latest”, ac yn troi dod-i-ben awtomatig ymlaen ar gyfer adeiladau delwedd cais-tynnu fel bod bil eu cofrestrfa’n aros yn wastad. Mae’r ymdrech gyfan yn cymryd rhyw bythefnos ac yn prynu’n ôl oriau o amser peirianneg bob dydd.

Menter. Mae cwmni gwasanaethau ariannol byd-eang yn rhedeg monorepo mawr ar draws cannoedd o beirianwyr ac yn mabwysiadu system adeiladu seiliedig ar graff gyda storfa a gweithredu o bell, gan fod cynyddrannedd manwl gywir, ar eu graddfa hwy, yn adfer llawer mwy o amser peirianneg nag y mae’r tîm adeiladu’n ei gostio. Adeiladir pob arteffact yn hermetig mewn amgylchedd ynysig, ei lofnodi, a’i gyhoeddi i gofrestrfa reoledig gydag SBOM a tharddiad wedi’i lofnodi ynghlwm. Digwydd defnyddiadau yn ôl crynodeb cynnwys, ac mae peiriant polisi’n gwrthod rhedeg unrhyw ddelwedd na ellir gwirio ei llofnod. Dyrchefir arteffactau, ni chânt eu hailadeiladu byth, o lwyfannu i gynhyrchiad, fel bod y deuaidd a basiodd brofi yn brofadwy’r un un sy’n gwasanaethu cwsmeriaid. Pan fydd archwilwyr yn gofyn i olrhain cydran cynhyrchiad yn ôl i ffynhonnell a adolygwyd, ymholiad yw’r gadwyn gadwraeth, nid ymchwiliad.

Llywodraeth. Mae asiantaeth dreth genedlaethol sy’n moderneiddio ei systemau’n trin cyfanrwydd cadwyn gyflenwi adeg adeiladu fel gofyniad cydymffurfio, gan alinio ei biblinell â fframwaith graddedig fel SLSA. Rhedir adeiladau mewn amgylcheddau ynysig, wedi’u cyfyngu o ran rhwydwaith, o gadwyni arfau wedi’u pinio a dibyniaethau wedi’u cloi, fel bod yr allbwn yn atgynhyrchadwy ac yn wirioadwy’n annibynnol. Mae gan bob arteffact SBOM a tharddiad wedi’u llofnodi, wedi’u storio’n ddigyfnewid am flynyddoedd i fodloni cyfraith cadw cofnodion. Dirprwyir dibyniaethau trydydd parti drwy ystorfa fewnol sy’n sganio ac yn cymeradwyo cyn i unrhyw adeiladu allu eu defnyddio, gan gadw cod na wiriwyd yn gyfan gwbl oddi ar y rhwydwaith. Gan fod yr asiantaeth yn defnyddio dim ond arteffactau wedi’u llofnodi, wedi’u dyrchafu, wedi’u nodi yn ôl crynodeb, gall dystio i reoleiddwyr ac i’r cyhoedd fod y meddalwedd sy’n prosesu ffurflenni dinasyddion yn union yr hyn a adolygwyd ac a gymeradwywyd.

Achos busnes: cymhellion, ROI, a TCO

Mae’r elw ar ddisgyblaeth adeiladu ac arteffact yn ymddangos yn gyntaf fel amser peirianneg wedi’i adfer. Mae adeiladau araf yn trethu pob peiriannydd ar bob newid, ac mae’r gost yn cyfansoddi ar draws sefydliad mawr: mae eillio munudau oddi ar adeiladu sy’n rhedeg filoedd o weithiau’r dydd yn adfer blynyddoedd-person yn flynyddol ac, yn anos ei fesur ond lawn mor real, yn cadw peirianwyr mewn llif yn hytrach na newid cyd-destun. Mae storfa bell a chynyddrannedd da yn aml yn talu amdanynt eu hunain o fewn wythnosau. Mae arteffactau atgynhyrchadwy, dyrchafu-unwaith yn lleihau dosbarth cyfan o ddigwyddiadau “roedd yn gweithio mewn llwyfannu”, gan ostwng cyfradd methiant newid a’r amser cyfartalog i adfer, y metrigau cyflenwi y mae arweinwyr eisoes yn eu gwylio.

Yr elw mwy, llai gweladwy, yw lleihau risg. Mae arteffactau wedi’u llofnodi, SBOMs, a tharddiad yn troi digwyddiad cadwyn gyflenwi o argyfwng aml-wythnos yn ymateb wedi’i gwmpasu, ychydig oriau o hyd, ac maent yn troi archwiliadau o ymarfer tân yn ymholiad. Mewn cyd-destunau rheoledig a llywodraethol, mae’r olrheiniadwyedd honno’n rhagofyniad ar gyfer gweithredu o gwbl, felly nid yw’r buddsoddiad yn ddewisol ond yn strwythurol. Mae cyfanswm cost perchnogaeth yn rhedeg y ffordd arall pan esgeuluswch hyn: mae arteffactau newidiadwy ac adeiladau na ellir eu hatgynhyrchu’n cronni’n ystad na all neb ei chyfrif yn llawn, mae storio’n tyfu’n ddiderfyn heb bolisi cadwraeth, ac mae pob archwiliad a phob digwyddiad yn costio mwy nag y dylai. I wneud yr achos i arweinyddiaeth, cysylltwch gyflymder adeiladu â thrwygyfer peirianneg a chysylltwch gyfanrwydd arteffact â chost archwilio ac amlygiad i doriadau, y ddau y mae’r arweinwyr eisoes yn eu hariannu.

Gwrth-batrymau a pheryglon

  • Ailadeiladu ar gyfer pob amgylchedd: cynhyrchu beitiau ffres ar gyfer llwyfannu a chynhyrchu, gan daflu ymaith y warant mai’r arteffact a brofwyd yw’r un a ddefnyddiwyd.
  • Defnyddio yn ôl tag arnofiol: rhedeg “latest” neu dag newidiadwy yn hytrach na chrynodeb digyfnewid, fel bod yr hyn sy’n rhedeg yn anrhagweladwy ac yn anolrheiniadwy.
  • Dim ffeil gloi: ystodau fersiwn arnofiol sy’n gadael i adeiladu dynnu dibyniaethau gwahanol neu faleisus yn dawel dros amser.
  • Allweddi storfa anghyflawn: hepgor mewnbwn go iawn o’r allwedd storfa, gan gynhyrchu canlyniadau hen sy’n gwastraffu dyddiau o ddadfygio.
  • Storfa a rennir heb ei diogelu: gadael i ysgrifenwyr anymddiried wenwyno storfa bell fel bod defnyddwyr yn nôl ac yn rhedeg allbynnau wedi’u peryglu.
  • Adeiladau anbendant: stampiau amser mewnadeiledig, llwybrau absoliwt, ac offer heb eu pinio sy’n gwneud i’r allbwn amrywio ac yn trechu gwirio.
  • Mabwysiadu offer trwm yn gynamserol: ymgymryd â chymhlethdod dosbarth-Bazel cyn i’r graff adeiladu fod yn ddigon mawr i’w gyfiawnhau.
  • SBOM a tharddiad fel ôl-ystyriaeth: ail-lunio metadata cadwyn gyflenwi ar ôl yr adeiladu, pan fo’n ddrud ac yn annibynadwy, yn hytrach na’i gynhyrchu yn yr adeiladu.
  • Cadwraeth ddiderfyn: byth yn dod ag arteffactau hen i ben nes bod cost storio a chwiliadau araf yn gorfodi glanhau mewn panig.

Model aeddfedrwydd

  • Lefel 1, Cychwyn: Mae adeiladau’n sgriptiau ad hoc nad oes neb yn berchen arnynt, yn aml yn cael eu rhedeg o beiriannau datblygwyr. Mae’r allbwn yn anbendant, mae dibyniaethau’n arnofio heb ffeiliau cloi, mae arteffactau’n cael eu hailadeiladu ar gyfer pob amgylchedd ac yn cael eu defnyddio yn ôl tag newidiadwy, ac nid oes storfa a rennir, dim llofnodi, a dim rhestr ddeunyddiau.
  • Lefel 2, Datblygu: Mae rhai timau wedi symud adeiladau i mewn i CI o ddiffiniad a gadwyd, ac wedi mabwysiadu ffeiliau cloi, ond mae’r arfer yn anghyson ar draws y sefydliad. Efallai y bydd arteffactau’n glanio mewn ystorfa reoledig gyda fersiynu sylfaenol, ac mae storfa leol neu bell syml yn cyflymu adeiladau cyffredin, ond mae ailadeiladu ar gyfer pob amgylchedd yn dal i ddigwydd ac mae tarddiad yn glytiog.
  • Lefel 3, Safoni: Mae adeiladau atgynhyrchadwy, i raddau helaeth yn hermetig, wedi’u dogfennu a’u gorfodi ar draws y sefydliad, gyda chadwyni arfau wedi’u pinio a storfa bell a rennir y mae ei hallweddi’n hasio pob mewnbwn go iawn. Mae arteffactau’n ddigyfnewid, wedi’u cyfeirio yn ôl cynnwys, wedi’u fersiynu’n semantig, wedi’u hadeiladu unwaith a’u dyrchafu ym mhobman, wedi’u llofnodi, ac yn cael eu hanfon gydag SBOM. Mae mynediad storfa’n cael ei reoli a pholisïau cadwraeth yn cael eu cymhwyso’n gyson ar draws timau.
  • Lefel 4, Rheoli: Mae’r ystad adeiladu’n cael ei mesur a’i rheoli yn erbyn llinellau sylfaen. Olrhelir amseroedd adeiladu, cyfraddau trawiad storfa, amser adborth datblygwyr, a chost storio gyda thargedau penodol, mae dirywiadau’n sbarduno gweithredu, a gorfodir gwirio llofnodion a tharddiad adeg defnyddio fel bod gwiriad wedi methu’n rhwystro rhyddhad. Asesir cyfanrwydd cadwyn gyflenwi adeg adeiladu yn erbyn fframwaith graddedig fel SLSA, ac mae’r rhifau’n gyrru lle rydych yn buddsoddi nesaf.
  • Lefel 5, Cydgysylltu: Mae arfer adeiladu, storfa, arteffact, a chadwyn gyflenwi’n cael ei wella’n barhaus a’i integreiddio ar draws y sefydliad. Mae offer, cadwraeth, ac ystum diogelwch yn addasu wrth i chi ddysgu o ddigwyddiadau ac archwiliadau, mae gweithredu a storfa o bell yn cael eu tiwnio wrth i’r cod-sylfaen esblygu, a gwëir cyfanrwydd adeg adeiladu i mewn i’r gylchred bywyd datblygu diogel ehangach yn hytrach na’i bolltio ymlaen wedyn.

Syniadau ar gyfer trafodaeth

  1. Beth yw eich amser adeiladu lleol canolrifol a gwaethaf-achos cyfredol, a beth fyddai storfa bell yn ei wneud i bob un?
  2. Pa rai o’ch arteffactau sy’n cael eu defnyddio yn ôl tag newidiadwy heddiw, a beth fyddai ei angen i ddefnyddio pob un yn ôl crynodeb?
  3. Ble mae eich graff adeiladu’n cyfiawnhau offer trymach, a ble fyddai’r offer hwnnw’n costio mwy nag y mae’n ei arbed?
  4. Pwy sy’n gallu ysgrifennu i’ch storfa adeiladu a rennir, a beth sy’n atal cofnod wedi’i wenwyno rhag cyrraedd cynhyrchiad?
  5. A allwch chi gynhyrchu SBOM wedi’i lofnodi ar gyfer y peth diwethaf a anfonwyd gennych, ac os na, beth yw’r cam lleiaf tuag at hynny?
  6. Beth yw eich polisi cadwraeth ar gyfer arteffactau adeiladu, a faint mae storio’n ei gostio i chi heddiw o’i gymharu â’r hyn y dylai ei gostio?

Casgliadau allweddol

  • Yr adeiladu yw cam cyntaf cyflenwi: ariannwch ei gyflymder a’i gywirdeb fel materion cynhyrchiad, gan fod popeth i lawr yr afon yn etifeddu ei ddiffygion.
  • Gwnewch adeiladau’n atgynhyrchadwy ac, lle bo modd, yn hermetig, gyda chadwyni arfau a ffeiliau cloi wedi’u pinio, fel bod yr arteffact a archwiliwch yn brofadwy’r un un a anfonwch.
  • Storfawch ac adeiladwch yn gynyddrannol, yn lleol ac o bell, ond hashwch bob mewnbwn go iawn a diogelwch y storfa, gan fod storfa a rennir yn ffin ymddiriedaeth a rennir.
  • Adeiladwch bob arteffact unwaith, gwnewch ef yn ddigyfnewid ac wedi’i gyfeirio yn ôl cynnwys, fersiynwch ef yn ystyrlon, a dyrchafwch yr union arteffact hwnnw ar draws amgylcheddau.
  • Cynhyrchwch darddiad, llofnodion, ac SBOM adeg adeiladu a storiwch arteffactau gyda chadwraeth a rheolaeth mynediad, gan droi cyfanrwydd cadwyn gyflenwi a pharodrwydd archwilio’n sgil-effaith o waith arferol.

Cyfeiriadau a darllen pellach

  • Jez Humble and David Farley, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  • Nicole Forsgren, Jez Humble, and Gene Kim, Accelerate: The Science of Lean Software and DevOps
  • Titus Winters, Tom Manshreck, and Hyrum Wright (eds.), Software Engineering at Google: Lessons Learned from Programming Over Time
  • Betsy Beyer, Chris Jones, Jennifer Petoff, and Niall Richard Murphy (eds.), Site Reliability Engineering: How Google Runs Production Systems
  • Peter Smith, Software Build Systems: Principles and Experience
  • The Open Source Security Foundation, SLSA: Supply-chain Levels for Software Artifacts (specification)
  • National Institute of Standards and Technology, Secure Software Development Framework (SSDF), SP 800-218
  • Tom Preston-Werner, Semantic Versioning Specification (SemVer)