3.2 Arddulliau a phatrymau pensaernïol
Trosolwg a chymhelliant
Mae arddull bensaernïol yn siâp eang, ailddefnyddiadwy ar gyfer trefnu system: sut mae’n cael ei dadelfennu, sut mae’r rhannau’n cyfathrebu, a lle mae’r ffiniau’n disgyn. Mae dewis un ymhlith y penderfyniadau mwyaf canlyniadol (a’r mwyaf camddeall) y mae sefydliad mawr yn eu gwneud. Yn rhy aml mae’r dewis yn dilyn ffasiwn (“mae pawb yn gwneud microwasanaethau”) yn hytrach na chyfyngiadau gwirioneddol y tîm, y parth, a’r realiti gweithredol. Byddwch yn diweddu gydag un o ddau lanast: system ddosbarthedig na all y sefydliad ei gweithredu, neu fonolith gymysglyd na all neb ei newid yn ddiogel. Nid bai’r arddull yw’r naill na’r llall. Daw’r ddau o gyfateb yr arddull yn anghywir â’r sefyllfa.
I dimau datblygwyr mawr, mae arddulliau’n bwysig yn anad dim oherwydd Deddf Conway: mae strwythur system yn tueddu i adlewyrchu strwythur cyfathrebu’r sefydliad sy’n ei hadeiladu. Felly mae arddull bensaernïol hefyd yn benderfyniad dylunio sefydliadol. Mae hollti system yn wasanaethau mewn gwirionedd yn benderfyniad ynghylch hollti timau, perchnogaeth, a chyfrifoldeb ar-alwad. Gall mentrau â channoedd o beirianwyr fforddio (ac yn aml mae angen iddynt) wasanaethau manwl-gronynnog â defnyddio annibynnol, gan mai’r annibyniaeth honno yw sut mae llawer o dimau’n rhyddhau heb rwystro’i gilydd. Gorfodwch yr un patrwm ar un tîm bach, ac mae’n etifeddu’r holl dreth weithredol heb ddim o’r budd sefydliadol.
Mae lleoliadau llywodraeth a menter yn pentyrru mwy o gyfyngiadau: hyd oes system hir, rheolaeth newid llym, cylchoedd caffael, integreiddio â systemau cofnod hirsefydlog, ac archwiliadwyedd. Mae’r rhain yn ffafrio arddulliau sy’n cadw ffiniau’n eglur a dibyniaethau’n hawdd eu harchwilio. Mae’r bennod hon yn arolygu’r prif arddulliau: monolith drwy ficrowasanaethau, pensaernïaethau wedi’u gyrru gan ddigwyddiadau â CQRS a chyrchu digwyddiadau, patrymau rhwyll gwasanaeth a phorth, di-weinydd, a disgyblaethau mewnol pensaernïaeth hecsagonol a glân. Yn fwy perthnasol, mae’n eich helpu i ddweud pryd mae pob un yn ffitio.
Gweler hefyd: pennod 2.2 (egwyddorion dylunio meddalwedd, gan gynnwys Dylunio Wedi’i Yrru gan Barth), pennod 3.1 (sylfeini pensaernïaeth), a phennod 3.3 (systemau dosbarthedig).
Egwyddorion allweddol
- Mae arddull yn dilyn grymoedd, nid ffasiwn. Dewiswch ar sail maint tîm, cymhlethdod parth, llwyth, ac aeddfedrwydd gweithredol, byth am fod technoleg yn boblogaidd.
- Cyplysu yw’r gwir elyn, nid nifer yr unedau defnyddiadwy. Mae monolith wedi’i fodwleiddio’n dda yn curo pelen fawr ddosbarthedig o fwd.
- Cost yw dosbarthu rydych yn ei dalu am annibyniaeth. Dim ond hollti pan fydd gwerth defnyddio annibynnol, graddio, neu ynysu namau’n fwy na chost galwadau rhwydwaith, methiant rhannol, a chysondeb data ar draws gwasanaethau.
- Dylai ffiniau ddilyn y parth busnes. Aliniwch wasanaethau a modiwlau â chyd-destunau ffiniedig (pob un yn fodel parth hunangynhwysol â’i ffin eglur ei hun), nid â haenau technegol.
- Dyluniwch y tu mewn yn dda ni waeth beth am y tu allan. Mae haenu hecsagonol/glân yn cadw rhesymeg busnes yn annibynnol ar fframweithiau a seilwaith ym mhob arddull.
- Mae Deddf Conway’n anochel, felly defnyddiwch hi. Dyluniwch ffiniau tîm a phensaernïaeth gyda’i gilydd.
- Dechreuwch yn symlach nag y credwch sydd ei angen arnoch. Gallwch dynnu gwasanaethau o fonolith modwlaidd da; mae dad-ddosbarthu llanast microwasanaeth cynamserol yn llawer anos.
Argymhellion
Rhagosodwch ar fonolith modwlaidd; holltwch â thystiolaeth
Dechreuwch y rhan fwyaf o systemau fel un uned ddefnyddiadwy â ffiniau modiwl mewnol cryf: rhyngwynebau clir, dim estyn i mewn i ddata modiwl arall, a rheolau dibyniaeth wedi’u gorfodi. Cewch drafodion syml, ailffactora hawdd, ac un peth i’w ddefnyddio a’i arsylwi. Hollti modiwl yn wasanaeth ei hun dim ond pan fydd gennych reswm pendant: rhan y mae’n rhaid iddi raddio ar ei phen ei hun, tîm sydd angen defnyddio ar ei gyflymder ei hun, parth namau y mae’n rhaid i chi ei ynysu, neu ofyniad technoleg sy’n wahanol i’r gweddill. Pan fyddwch yn hollti, holltwch ar hyd llinellau cyd-destun ffiniedig fel bod pob gwasanaeth yn berchen ar ei ddata ei hun ac yn amlygu contract sefydlog.
Gwybyddwch pryd mae microwasanaethau’n haeddu eu lle
Mae microwasanaethau’n rhoi defnyddiadwyedd annibynnol, graddio annibynnol, ynysu namau, a rhyddid i gymysgu technolegau i chi. Yn gyfnewid maent yn mynnu CI/CD aeddfed (integreiddio parhaus a chyflenwi parhaus), seilwaith awtomataidd, olrhain dosbarthedig, darganfod gwasanaethau, a diwylliant ar-alwad. Gofynnwch i chi’ch hun yn onest: a all eich sefydliad redeg dwsinau o wasanaethau wedi’u defnyddio’n annibynnol mewn cynhyrchu’n ddibynadwy? Os nad yw’r platfform a’r aeddfedrwydd gweithredol yno, mae microwasanaethau ond yn lluosi eich ffyrdd o fethu heb gyflenwi eu buddion. Mae llawer o sefydliadau’n gwneud orau â llond llaw o wasanaethau bras-gronynnog wedi’u halinio â phrif barthau yn hytrach na haid o rai bach.
Defnyddiwch bensaernïaeth wedi’i gyrru gan ddigwyddiadau lle mae datgyplu ac anghydamseroldeb yn talu ar ei ganfed
Mae pensaernïaeth wedi’i gyrru gan ddigwyddiadau’n caniatáu i gynhyrchwyr allyrru ffeithiau heb wybod pwy sy’n eu defnyddio. Mae hynny’n prynu cyplysu llac, byffer ar gyfer pigau llwyth, a ffordd hawdd o ychwanegu defnyddwyr newydd. Defnyddiwch ef lle mae llifoedd gwaith yn naturiol anghydamserol ac adweithiol. Mae CQRS (Command Query Responsibility Segregation) yn gwahanu’r model ysgrifennu oddi wrth un model darllen neu fwy, sy’n helpu pan fydd llwythi neu siapiau darllen ac ysgrifennu’n wahanol iawn i’w gilydd. Mae cyrchu digwyddiadau (event sourcing) yn storio cyflwr fel log ychwanegu-yn-unig o ddigwyddiadau yn hytrach na chyflwr cyfredol, gan roi llwybr archwilio perffaith a theithio-mewn-amser i chi. Mae hynny’n bwerus i gyllid a llywodraeth, lle mae “sut y cyrhaeddon ni’r gwerth hwn?” yn gwestiwn cyfreithiol, ond mae’n ychwanegu cymhlethdod gwirioneddol wrth fersiynu digwyddiadau, ailadeiladu taflunau, a rhesymu am gysondeb terfynol. Estynnwch am y rhain yn fwriadol, nid yn ddiofyn.
Cymhwyswch batrymau porth, BFF, a rhwyll i reoli llawer o wasanaethau
Mae porth API yn rhoi un pwynt mynediad i gleientiaid allanol, gan drin dilysu, cyfyngu cyfradd, llwybro, a therfynu TLS (Transport Layer Security). Mae Backend-for-Frontend (BFF) yn rhoi ei haen gasglu wedi’i theilwra ei hun i bob math o gleient (gwe, symudol, API partner), fel eich bod yn osgoi API un-maint-i-bawb, chwyddedig. Mae rhwyll gwasanaeth yn symud pryderon traws-dorri (TLS dwyochrog, ailgeisiadau, terfynau amser, symud traffig, a thelemetreg) i haen seilwaith sidecar, fel nad oes rhaid i dimau cymhwysiad eu hail-weithredu. Ychwanegwch rwyll dim ond unwaith y bydd nifer y gwasanaethau’n gwneud trin y pryderon hyn fesul gwasanaeth yn anrheoladwy. Ar gyfer ychydig o wasanaethau, mae rhwyll yn fwy o bwysau gweithredol nag y mae’n werth.
Pwyswch ddi-weinydd yn onest
Mae swyddogaeth-fel-gwasanaeth a phlatfformau di-weinydd wedi’u rheoli’n cymryd rheoli gweinyddion oddi ar eich plât, yn graddio i sero, ac yn bilio fesul defnydd, sy’n wych ar gyfer llwythi gwaith pigog, wedi’u gyrru gan ddigwyddiadau, neu linell sylfaen isel, ac i dimau bach. Mae’r cyfaddawdau’n real: oedi cychwyn oer, terfynau amser gweithredu ac adnoddau, profi lleol anos, clymu-i-mewn gwerthwr posibl, a chost a all fynd y tu hwnt i seilwaith wedi’i ddarparu ar gyfaint uchel cyson. Defnyddiwch ddi-weinydd lle mae ei economeg a’i symlrwydd gweithredol yn ennill yn glir. Peidiwch â gorfodi systemau craidd cyson, trwybwn uchel iddo o frwdfrydedd.
Cadwch resymeg busnes yn lân y tu mewn i bob gwasanaeth
Beth bynnag yw’r arddull allanol, cadwch y tu mewn yn lân â hecsagonol (pyrth ac addasyddion) neu bensaernïaeth lân: rheolau busnes yn y canol, yn dibynnu ar haniaethau yn unig; fframweithiau, cronfeydd data, a negesydda ar yr ymylon fel addasyddion y gellir eu disodli. Mae hyn yn cadw eich rhesymeg parth gwerthfawr yn brofadwy heb seilwaith ac yn gludadwy ar draws newidiadau technoleg: mantais bendant ar gyfer systemau llywodraeth a menter hirhoedlog a fydd yn goroesi sawl cenhedlaeth o fframweithiau.
Cyfaddawdau: manteision ac anfanteision
| Arddull | Gorau pan | Manteision | Anfanteision |
|---|---|---|---|
| Monolith modwlaidd | Y rhan fwyaf o systemau, yn enwedig yn gynnar | Gweithrediad syml, trafodion ac ailffactora hawdd | Un uned ddefnyddio; yn graddio fel un; risg erydiad |
| Microwasanaethau | Llawer o dimau, graddfa uchel, platfform aeddfed | Defnyddio/graddio annibynnol, ynysu namau | Cymhlethdod dosbarthedig, cysondeb data, cost weithredol uchel |
| Wedi’i yrru gan ddigwyddiadau / CQRS / cyrchu digwyddiadau | Llifoedd gwaith anghydamserol, angen archwilio, darllen/ysgrifennu gwahanol | Cyplysu llac, archwiliadwyedd, darlleniadau graddadwy | Cysondeb terfynol, fersiynu digwyddiadau, dadfygio anos |
| Di-weinydd | Gwaith pigog neu linell sylfaen isel, wedi’i yrru gan ddigwyddiadau | Dim rheoli gweinyddion, graddio i sero, talu-fesul-defnydd | Cychwyniadau oer, terfynau, clymu-i-mewn, cost ar lwyth uchel cyson |
Y thema sy’n ailddigwydd: rydych yn prynu hyblygrwydd ac annibyniaeth â chymhlethdod gweithredol a gwybyddol. Mae arddulliau dosbarthedig a rhai wedi’u gyrru gan ddigwyddiadau’n rhoi i fyny symlrwydd un pentwr galwadau ac un trafodyn yn gyfnewid am y gallu i raddio, defnyddio, a methu’n annibynnol. Mae’r fasnach honno’n talu ar ei chanfed ar raddfa fawr a chyda phlatfform aeddfed. Heb un, mae’n ddinistriol. Mae’r disgyblaethau mewnol (hecsagonol/glân) bron bob amser yn werth chweil, gan eu bod yn costio ychydig ac yn cadw eich opsiynau’n agored i newid arddulliau’n nes ymlaen.
Cwestiynau i’w trafod gyda’ch tîm
Cyn i chi hollti’r gwasanaeth nesaf, a fyddwch yn hollti’r tîm sy’n berchen arno, a phwy sydd ag awdurdod i wneud hynny? Mae Deddf Conway’n golygu bod ffin gwasanaeth mewn gwirionedd yn ffin tîm, felly mae hollt nad yw’r siart sefydliadol yn ei chefnogi’n cynhyrchu monolith dosbarthedig: dwy uned ddefnyddio, un trên rhyddhau, ar-alwad a rennir. Mewn menter fawr, mae’r awdurdod i ailffurfio timau fel arfer yn eistedd uwchlaw peirianneg, gyda llinellau adrodd, cyllid, ac adnoddau dynol, a dyna pam mae’n rhaid penderfynu pensaernïaeth a dylunio sefydliadol gyda’i gilydd. Dewch â thystiolaeth i’r drafodaeth: a oes gan y gwasanaeth arfaethedig dîm a all fod yn berchen arno o’r dechrau i’r diwedd, staffio ei ar-alwad ei hun, a defnyddio ar ei gyflymder ei hun? Os yw’r ateb yn na, naill ai ariennwch y tîm neu gadwch y gallu fel modiwl yn y monolith. Mae hollti cod heb hollti perchnogaeth yn prynu pob cost dosbarthu a dim o’r annibyniaeth.
A allwch ddefnyddio pob un o’ch gwasanaethau’n annibynnol heddiw, neu a ydynt yn rhyddhau’n gyfrinachol mewn cydgam? Y monolith dosbarthedig yw’r canlyniad gwaethaf yn y bennod hon: rydych yn talu am alwadau rhwydwaith, methiant rhannol, a chysondeb data ar draws gwasanaethau, ac eto’n dal i fethu â rhyddhau un heb y lleill. Yr arwyddion datgeliol yw cronfa ddata a rennir, llyfrgell a rennir sy’n gorfodi uwchraddiadau cydgysylltiedig, a phrofion integreiddio y mae’n rhaid iddynt redeg yr ystâd gyfan gyda’i gilydd. I dîm mawr, mae hyn yn cyfyngu trwybwn yn ddistaw, gan fod pob tîm yn ciwio y tu ôl i un rhyddhad hyd yn oed pan fydd y diagram yn dangos annibyniaeth. Cymerwch un newid diweddar a chyfrwch faint o wasanaethau y bu’n rhaid iddynt ddefnyddio gyda’i gilydd i’w wneud yn ddiogel; os yw’r rhif hwnnw’n fwy nag un ar gyfer newid a gyffyrddodd ag un gallu, mae eich ffiniau’n anghywir. Yr ateb fel arfer yw rhoi ei ddata ei hun a chontract sefydlog, wedi’i fersiynu, i bob gwasanaeth, nid ychwanegu mwy o wasanaethau.
Pa rai o’ch holltiadau gwasanaeth presennol sydd wedi peidio â thalu ar eu canfed, ac a fyddech yn eu huno’n ôl? Arferiad mwyaf datblygedig y bennod yw trin penderfyniadau arddull fel rhai y gellir eu gwrthdroi: tynnu allan pan fydd sbardun yn ymddangos, ac ail-uno pan fydd y sbardun yn diflannu. Dim ond hollti y mae’r rhan fwyaf o sefydliadau’n ei wneud erioed, felly mae nanowasanaethau a gwasanaethau endid siaradus yn cronni nes bod trefniannaeth a llwyth rhwydwaith yn gwneud i’r gwaith y mae pob gwasanaeth yn ei wneud edrych yn fach. Chwiliwch am wasanaethau sydd bob amser yn defnyddio gyda’i gilydd, sy’n bodoli oherwydd tabl cronfa ddata yn hytrach na gallu busnes, neu y mae eu neidiau rhwydwaith bellach yn dominyddu oedi cais. Mewn ystadau menter a llywodraeth, lle mae niferoedd staff a chyllidebau’n cael eu craffu, mae plygu dau wasanaeth tenau’n ôl yn un gwasanaeth bras-gronynnog yn symudiad dilys, arbed cost, nid cyfaddefiad o fethiant. Rhowch ail-gyfuno ar y bwrdd mor agored â thynnu allan, a phenderfynwch y ddau â’r un dystiolaeth.
A yw eich platfform ac aeddfedrwydd ar-alwad mewn gwirionedd yn cefnogi’r arddull rydych yn ei chynnig, ac a allwch enwi’r bylchau penodol cyn ymrwymo? Dim ond ar ben CI/CD aeddfed, olrhain dosbarthedig, darganfod gwasanaethau, a diwylliant ar-alwad sy’n gallu rhesymu am fethiant rhannol y mae microwasanaethau, rhwylli, a pheirianweithiau wedi’u gyrru gan ddigwyddiadau’n cyflenwi eu buddion. Mae sefydliad mawr yn tueddu i benderfynu’r arddull darged mewn fforwm pensaernïaeth a darganfod y platfform coll yn ddiweddarach, unwaith y bydd dwsinau o wasanaethau eisoes mewn cynhyrchu a phob digwyddiad yn cymryd oriau i’w ddiagnosio. Pwyswch apêl defnyddio a graddio annibynnol yn erbyn y cwestiwn sobr ynghylch pwy sy’n ei redeg am 3 o’r gloch y bore: mae’r un hollt sy’n rhyddhau timau i ryddhau’n gyfochrog hefyd yn lluosi’r ffyrdd o fethu y mae’n rhaid i bob tîm eu deall. Dewch â rhestr eiddo onest i’r drafodaeth: amledd defnyddio presennol, amser cymedrig i adfer, a oes gennych olrhain ar draws ffiniau gwasanaeth, a faint o wasanaethau y gall un tîm eu gweithredu’n realistig. Mewn lleoliadau menter a llywodraeth, ychwanegwch amseroedd arwain caffael a recriwtio ar gyfer y galluoedd platfform sydd ar goll gennych, gan fod arddull sy’n rhagdybio rhwyll a thîm platfform nad ydych wedi’u hariannu’n gynllun i redeg ystâd na ellir ei chynnal.
Ar gyfer pa rannau o’r parth mae llwybr archwilio wedi’i gyrchu’n llawn gan ddigwyddiadau’n angenrheidiol yn gyfreithiol yn hytrach nag yn gyfleustra, a phwy sydd ag awdurdod i benderfynu? Mae cyrchu digwyddiadau a CQRS yn prynu hanes perffaith, y gellir ei ailadeiladu, a modelau darllen sy’n graddio ar eu pen eu hunain, ond maent yn costio fersiynu digwyddiadau i chi, ailadeiladu taflunau, a rhesymu am gysondeb terfynol am oes y system. Wedi’i gymhwyso i barth nad oedd byth angen y llwybr archwilio arno, treth bur yw’r cymhlethdod hwnnw; wedi’i atal rhag parth lle mae “sut y cyrhaeddon ni’r gwerth hwn?” yn gwestiwn cyfreithiol, mae ei absenoldeb yn fethiant cydymffurfiaeth. Yr ystyriaethau cystadleuol yw archwiliadwyedd a graddadwyedd ymholiadau ar y naill ochr, ac anhawster dadfygio a llwyth gwybyddol datblygwyr ar y llall, felly mae’r penderfyniad yn perthyn i bobl sy’n deall y rhwymedigaeth reoleiddiol a’r baich gweithredol fel ei gilydd, nid i bwy bynnag sydd fwyaf brwdfrydig am y patrwm. Dewch â’r gofynion cadw ac ailadeiladu cyfreithiol neu gontractiol penodol, y cyfaint digwyddiadau disgwyliedig, ac amcangyfrif gonest o’r gwaith fersiynu a thaflunio. Mewn cyllid, treth, a llywodraeth, lle gall ailadeiladu penderfyniad flynyddoedd yn ddiweddarach fod yn ddyletswydd statudol, enwch y perchennog atebol sy’n llofnodi bod cyd-destun ffiniedig penodol yn gofyn, neu ddim yn gofyn, am log digwyddiadau anhyblyg.
Sut y byddwch yn atal y monolith modwlaidd rhag erydu fel bod tynnu allan yn nes ymlaen yn aros yn rhad, a beth fydd yn gorfodi’r ffiniau? Mae’r holl achos dros ddechrau â monolith modwlaidd yn gorffwys ar yr addewid bod ffiniau mewnol glân yn gwneud tynnu gwasanaeth allan yn nes ymlaen yn fforddiadwy, ac eto mae’r ffiniau hynny’n dirywio’n ddistaw yr eiliad y mae terfyn amser yn temtio un modiwl i estyn i mewn i ddata un arall. I dîm mawr â llawer o gyfranwyr, ni fydd bwriadau da ac adolygiad cod yn unig yn dal y llinell; heb fecanwaith gorfodi, mae’r monolith yn ddistaw yn dod yn belen fawr o fwd yr oedd yr arddull i fod i’w hosgoi. Pwyswch ffrithiant rheolau dibyniaeth wedi’u gorfodi a rhyngwynebau modiwl yn erbyn cost darganfod, flynyddoedd yn ddiweddarach, nad oes unrhyw ffin yn real a bod pob tynnu allan yn golygu datod cyflwr a rennir. Dewch â thystiolaeth: a yw ffiniau modiwl yn cael eu gorfodi gan offer adeiladu, dadansoddiad statig, neu strwythur pecyn, neu a ydynt yn ddim ond confensiynau wedi’u dogfennu y anwybyddwyd gan y chwe uniad diwethaf? Mewn systemau menter a llywodraeth hirhoedlog sy’n gorfod goroesi rheolaeth newid llym a sawl cenhedlaeth fframwaith, triniwch orfodi ffiniau fel rheolaeth archwiliadwy, fel bod yr opsiwn i ddosbarthu’n nes ymlaen yn un rydych mewn gwirionedd wedi’i gadw yn hytrach nag un rydych yn cymryd yn ganiataol bod gennych o hyd.
Lens sector
Cwmni newydd. Rhagosodwch ar un monolith modwlaidd a gwrthsefyll tynfa microwasanaethau, gan mai eich adnodd prinnaf yw sylw peirianneg ac mae haid o wasanaethau’n dreth weithredol na allwch ei fforddio cyn cydweddiad cynnyrch-marchnad. Cadwch ffiniau modiwl glân fel y gallwch dynnu allan yn nes ymlaen, ac estynnwch am ddi-weinydd lle mae graddio-i-sero a thalu-fesul-defnydd yn addas i’ch llwyth pigog, llinell sylfaen isel. Holltwch un peth yn union dim ond pan fydd sbardun pendant yn ymddangos, fel anfonwr hysbysiadau byrlymus, a byth yn gynt.
Busnes bach. Heb dîm platfform a chyllideb dynn, ffafriwch fonolith neu lond llaw o wasanaethau bras ar blatfform wedi’i reoli, a phrynwch seilwaith wedi’i westeio yn hytrach na’ch adeiladu eich rhwylli, olrhain, a darganfod gwasanaethau eich hun. Pwyswch ddi-weinydd a chronfeydd data wedi’u rheoli fel ffordd o osgoi rhedeg gweinyddion o gwbl, a byddwch yn wyliadwrus o ddyluniad dosbarthedig nad oes gennych neb i gario ei faich gweithredol. Y bensaernïaeth gywir yw’r un y gall un neu ddau berson mewn gwirionedd ei defnyddio, ei harsylwi, a’i hadfer.
Menter. Y broblem wirioneddol yw llawer o dimau a Deddf Conway: aliniwch wasanaethau bras-gronynnog â chyd-destunau ffiniedig ac â pherchnogaeth tîm, a buddsoddwch yn fwriadol yn y platfform (CI/CD, olrhain, rhwyll, a darganfod gwasanaethau) sy’n gwneud dosbarthu’n ddiogel. Safonwch batrymau porth, BFF, a phensaernïaeth lân fewnol fel bod grwpiau’n stopio eu hailddyfeisio, a llywodraethwch dynnu allan ac ail-gyfuno fel penderfyniadau portffolio wedi’u seilio ar dystiolaeth yn hytrach na dewis lleol. Cyllidebwch gost weithredol pob hollt yn benodol, gan fod methiant y monolith dosbarthedig ar eich graddfa’n ddrud ac yn araf i’w ddatod.
Llywodraeth. Mae hyd oes system hir, rheolaeth newid llym, cylchoedd caffael, ac archwiliadwyedd yn llunio’r dewis: ffafriwch arddulliau â ffiniau eglur, archwiliadwy a chontractau parhaol sy’n goroesi gwerthwyr a chenedlaethau fframwaith. Mae cyrchu digwyddiadau’n haeddu ei gymhlethdod lle mae ailadeiladu penderfyniad sy’n wynebu dinasyddion yn ddyletswydd statudol, felly defnyddiwch ef yn fwriadol ar gyfer prif lyfrau, a chadwch bensaernïaeth lân y tu mewn i bob gwasanaeth i ynysu rheolau sy’n newid gyda phob cyllideb. Triniwch gludadwyedd ac ymadael o blatfformau di-weinydd neu werthwr perchnogol fel gofynion caffael, nid syniadau wedi’u hychwanegu’n hwyr.
Enghreifftiau
Cwmni newydd. Mae cwmni newydd pedwar person sy’n adeiladu cynnyrch amserlennu’n teimlo pwysau i ddechrau â microwasanaethau am fod cystadleuydd wedi blogio amdanynt, ond yn gwrthsefyll. Maent yn rhyddhau un monolith modwlaidd â ffiniau mewnol clir (amserlennu, bilio, hysbysiadau) fel modiwlau ar wahân mewn un uned ddefnyddio, fel bod un peiriannydd yn gallu rhedeg y cyfan yn lleol a bod rhyddhad yn un pwsh. Wrth i’r cynnyrch ennill tyniant, dim ond yr anfonwr hysbysiadau, sy’n ymledu i e-bost a SMS o dan lwyth byrlymus, sy’n cael ei dynnu i mewn i’w wasanaeth ei hun. Nid ydynt yn etifeddu dim o dreth weithredol dwsin o wasanaethau tra’u bod yn dal i hela am gydweddiad cynnyrch-marchnad.
Menter. Mae cwmni e-fasnach mawr yn dechrau fel monolith modwlaidd. Wrth i draffig dyfu a thimau luosi, mae’n tynnu allan y parthau â’r llwyth uchaf, sy’n esblygu fwyaf annibynnol (catalog, cert, talu, a chwilio) yn wasanaethau ar wahân, pob un yn berchen ar ei ddata ei hun. Mae talu’n allyrru digwyddiadau y mae rhestr eiddo, cyflawniad, a dadansoddeg yn eu defnyddio drwy asgwrn cefn digwyddiadau, fel y gall defnyddwyr newydd (canfod twyll, teyrngarwch) gysylltu heb gyffwrdd â talu. Mae porth API’n trin dilysu a chyfyngu cyfradd, ac mae BFF’n teilwra llwythi tâl ar gyfer symudol. Mae’r parthau traffig is sy’n weddill yn aros yn y monolith, sy’n osgoi darniogi diangen.
Llywodraeth. Mae awdurdod treth yn adeiladu platfform asesu ar gyrchu digwyddiadau ar gyfer y prif lyfr, gan fod yn rhaid i bob newid i atebolrwydd trethdalwr fod yn ailadeiladadwy ac yn archwiliadwy’n gyfreithiol am flynyddoedd. Mae gorchmynion (ffeilio ffurflen, gwneud taliad, cyhoeddi addasiad) yn cynhyrchu digwyddiadau anhyblyg, ac mae modelau darllen yn taflunio balansau cyfredol i swyddogion a dinasyddion. Mae CQRS yn caniatáu i’r ochr ymholi sy’n wynebu’r cyhoedd raddio ar ei phen ei hun ar gyfer tymor ffeilio brig heb roi’r ochr ysgrifennu mewn perygl. Y tu mewn, mae pob gwasanaeth yn dilyn pensaernïaeth lân, fel bod y rheolau asesu, sy’n newid gyda phob cyllideb, yn aros wedi’u hynysu oddi wrth y dechnoleg parhad a negesydda.
Achos busnes: cymhellion, ROI, a TCO
Mae’r arian dan sylw mewn dewis arddull yn enfawr, gan fod y penderfyniad yn ddrud i’w wrthdroi. Mabwysiadwch ficrowasanaethau’n rhy gynnar a byddwch yn chwyddo cyfanswm cost perchnogaeth drwy adeiladu platfform, seilwaith dyblyg, dadfygio dosbarthedig, a baich gweithrediadau trymach: costau sy’n aros gyda chi am oes y system. Gwrthodwch hollti monolith sydd wir wedi’i orlwytho a byddwch yn cyfyngu trwybwn cyflenwi: mae timau’n ciwio y tu ôl i ryddhad a rennir, ac mae pob newid yn rhoi’r system gyfan mewn perygl. Mae’r sgwrs ROI mewn gwirionedd am gyfateb gwariant gweithredol ag angen sefydliadol.
Gwnewch yr achos i arweinyddiaeth o ran trwybwn a risg, nid technoleg. Mae defnyddiadwyedd annibynnol yn golygu mwy o dimau’n rhyddhau’n gyfochrog ac amseroedd arwain byrrach: cyflymder busnes mesuradwy. Mae ynysu namau’n golygu llai o gyfanswm chwalfeydd a radiws ffrwydro llai: argaeledd mesuradwy a diogelwch enw da. Ond byddwch yr un mor onest am y buddsoddiad platfform y mae pob arddull yn ei fynnu: mae rhwyll, olrhain, ac aeddfedrwydd CI/CD yn rhagofynion, nid ychwanegion dewisol, ac mae eu cost yn perthyn yn y TCO. I lawer o sefydliadau, y llwybr rhataf yw monolith wedi’i fodwleiddio’n dda nawr, â ffiniau mewnol glân sy’n gwneud tynnu allan yn nes ymlaen yn rhad. Mae hynny’n prynu’r opsiwn i ddosbarthu i chi heb dalu amdano cyn bod ei angen arnoch.
Gwrth-batrymau a pheryglon
- Monolith dosbarthedig. Gwasanaethau y mae’n rhaid eu defnyddio gyda’i gilydd ac sy’n rhannu cronfa ddata: holl gost dosbarthu, dim o’r annibyniaeth.
- Nanowasanaethau. Gwasanaethau mor fanwl-gronynnog fel bod trefniannaeth a llwyth rhwydwaith yn gwneud i’r gwaith y maent yn ei wneud edrych yn fach.
- Microwasanaethau heb blatfform. Hollti cyn bod gennych CI/CD, olrhain, ac aeddfedrwydd ar-alwad; mae’r ffyrdd o fethu’n lluosi.
- Gwasanaethau endid. Hollti yn ôl tabl cronfa ddata (“gwasanaeth Defnyddiwr,” “gwasanaeth Archeb”) yn hytrach na yn ôl gallu busnes, gan orfodi galwadau traws-wasanaeth siaradus ar gyfer pob gweithrediad.
- Cyrchu digwyddiadau ym mhobman. Ei gymhwyso i barthau nad oes angen llwybr archwilio arnynt, gan dalu’r dreth gymhlethdod heb fudd.
- Porth fel monolith. Rhoi rhesymeg busnes yn y porth API, gan ailgreu tagfa ganolog.
- Craidd wedi’i gyplysu â fframwaith. Rhesymeg busnes wedi’i chymysgu â’r fframwaith gwe neu ORM (mapio gwrthrych-berthynol), gan wneud profi a newid technoleg ill dau’n boenus.
Model aeddfedrwydd
- Lefel 1: Cychwyn. Dewisir arddull yn ôl ffasiwn neu ddamwain. Mae gennych un monolith cymysglyd neu lanast dosbarthedig damweiniol, mae ffiniau’n dilyn haenau technegol neu hanes yn hytrach na’r parth, ac mae holltiadau’n digwydd yn adweithiol pan fydd rhywbeth yn torri.
- Lefel 2: Datblygu. Mae rhai timau’n tynnu ffiniau modiwl bwriadol y tu mewn i’r monolith neu’n codi ychydig o wasanaethau bras, ac mae rhai pryderon traws-dorri’n cael eu trin yn gyson. Mae arfer yn anwastad: mae un grŵp yn alinio gwasanaethau â chyd-destunau ffiniedig tra bo un arall yn dal i hollti yn ôl tabl cronfa ddata, ac mae tynnu allan yn parhau’n ad hoc.
- Lefel 3: Safoni. Mae dull wedi’i ddogfennu’n cael ei orfodi ar draws y sefydliad: mae gwasanaethau’n alinio â chyd-destunau ffiniedig ac yn berchen ar eu data eu hunain, defnyddir patrymau porth a BFF lle bo’n briodol, mae haenu glân neu hecsagonol mewnol yn safon, ac mae angen sbardun datganedig ar gyfer pob hollt. Mae ffiniau modiwl yn cael eu gorfodi gan offer, nid confensiwn yn unig.
- Lefel 4: Rheoli. Mae penderfyniadau arddull yn cael eu mesur a’u rheoli yn erbyn llinellau sylfaen. Rydych yn tracio amledd defnyddio ac amser arwain fesul gwasanaeth, amser cymedrig i adfer, faint o wasanaethau y mae’n rhaid iddynt ddefnyddio gyda’i gilydd ar gyfer newid nodweddiadol, ac oedi neidiau rhwydwaith, ac rydych yn cymharu cost pob hollt â’r annibyniaeth yr oedd i fod i’w phrynu. Tystiolaeth, nid dewis, sy’n gyrru a yw ffin yn goroesi, ac mae gwyriad tuag at fonolith dosbarthedig yn cael ei ddal gan fesurau yn hytrach na chan chwalfa.
- Lefel 5: Cyd-drefnu. Mae pensaernïaeth wedi’i hintegreiddio â dylunio sefydliadol ac yn cael ei haddasu’n barhaus. Mae platfform aeddfed (CI/CD, olrhain, a rhwyll lle bo’n briodol) yn gwneud dosbarthu ac ail-gyfuno ill dau’n rhad, mae timau’n tynnu allan yn rheolaidd pan fydd sbardun yn ymddangos ac yn plygu gwasanaethau’n ôl pan fydd un yn diflannu, ac mae dewisiadau arddull yn cael eu hail-gydbwyso wrth i dopoleg tîm, llwyth, a’r darlun risg newid ar draws yr ystâd gyfan.
Syniadau i’w trafod
- Ble yn eich system mae monolith mewn gwirionedd yn gryfder, a ble mae’n dagfa wirioneddol?
- Pa sbardun pendant a fyddai’n cyfiawnhau tynnu allan eich gwasanaeth nesaf, ac a allwch ei enwi cyn ei adeiladu?
- A oes gan eich sefydliad yr aeddfedrwydd gweithredol y mae microwasanaethau’n ei fynnu? Beth sydd ar goll?
- Ar gyfer pa rannau o’ch parth mae llwybr archwilio wedi’i gyrchu’n llawn gan ddigwyddiadau’n angenrheidiol yn gyfreithiol neu fusnes yn hytrach na dim ond yn braf i’w gael?
- Pa mor dda mae eich ffiniau gwasanaeth presennol yn adlewyrchu eich ffiniau tîm, ac a yw’r aliniad hwnnw’n helpu neu’n niweidio?
- Pe bai’n rhaid i chi newid eich fframwaith gwe neu gronfa ddata y flwyddyn nesaf, faint o’ch rhesymeg busnes y byddai’n rhaid i chi ei hailysgrifennu?
Prif gasgliadau
- Dewiswch arddull bensaernïol o rymoedd gwirioneddol (maint tîm, parth, llwyth, aeddfedrwydd gweithredol), nid o ffasiwn.
- Monolith modwlaidd yw’r rhagosodiad cywir ar gyfer y rhan fwyaf o systemau; tynnwch wasanaethau allan dim ond â sbardun pendant ac ar hyd llinellau cyd-destun ffiniedig.
- Mae microwasanaethau’n cyfnewid cymhlethdod gweithredol a gwybyddol am ddefnyddio, graddio, ac ynysu namau annibynnol; maent angen platfform aeddfed.
- Mae pensaernïaeth wedi’i gyrru gan ddigwyddiadau, CQRS, a chyrchu digwyddiadau’n cynnig datgyplu ac archwiliadwyedd ar gost cysondeb terfynol a chymhlethdod fersiynu; mabwysiadwch yn fwriadol.
- Mae pyrth, BFFau, a rhwylli’n dofi ystadau aml-wasanaeth ond yn ychwanegu pwysau; cyflwynwch nhw pan fydd graddfa’n mynnu, nid cynt.
- Cymhwyswch bensaernïaeth hecsagonol/lân y tu mewn i bob gwasanaeth i gadw rhesymeg busnes gwerthfawr yn brofadwy ac yn barhaol ar draws newid technoleg.
Cyfeiriadau a darllen pellach
- Sam Newman, Building Microservices and Monolith to Microservices
- Chris Richardson, Microservices Patterns
- Eric Evans, Domain-Driven Design
- Vaughn Vernon, Implementing Domain-Driven Design
- Robert C. Martin, Clean Architecture
- Alistair Cockburn, “Hexagonal Architecture (Ports and Adapters)”
- Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns
- Martin Fowler, Patterns of Enterprise Application Architecture (and articles on CQRS and Event Sourcing)
- Matthew Skelton and Manuel Pais, Team Topologies