GH GambleHub

Bounded Disext և տիրույթի սահմանները

Bounded Disext-ը (BC) հստակ սահմանն է, որի ներսում գործում է միասնական Ubiquitous Language, ռուսական մոդելներ և invariants։ Սահմանների ներսում տերմինները միանշանակ են («Շտաբը», «Հաճախորդը», «Լիմիթ»), իսկ ենթատեքստը հաղորդակցվում է պայմանագրերով (իրադարձություններով/թիմերով) և չի քաշում ուրիշի իմաստալից «պոչերը»։ Ճիշտ ընտրված սահմանները նվազեցնում են կապը, պարզեցնում են մեծացումը և արագացնում ապրանքի էվոլյուցիան։

1) Ինչո՞ ւ սահմաններ են անհրաժեշտ

Կոգնիտիվ բեռի նվազումը։ Թիմը աշխատում է մեկ մոդելի և մեկ լեզվի հետ, ոչ թե «բոլոր բիզնեսի հետ անմիջապես»։

Ինվարանտների մեկուսացումը։ Կրիտիկական կանոնները (հավասարակշռություն 240, լոգինի յուրահատուկ) ապրում են նույն վայրում և պաշտպանված են ագրեգատներով։

Փոփոխությունների կառավարումը։ BC-ի ներսում սխեմայի/կանոնների էվոլյուցիան չի կոտրում հարևանը, հստակ պայմանագրեր կան։

Արտադրողականությունը և արտադրողականությունը։ BC-ի ներսում դուք կարող եք ընտրել համապատասխան մոդելը ստանդարտ և պահեստ։ դրսում ասինխրոն պրոյեկտներ են։

2) Ինչպե՞ ս բացահայտել Bounded Prodext-ը

Արագ մեթոդը (workshop 2-4 ժամ)

1. Event Storming: գրեք «ինչ է պատահել», ապա «ինչ ենք խնդրում անել», ապա ագրեգատները «ովքեր երաշխավորում են կանոնը»։

2. Լեզվի կլաստերները 'որտեղ բառերը և կանոնները կայուն համընկնում են, պոտենցիալ BC-ն։ Որտեղ «Հաճախորդ» բառը նշանակում է տարբեր (vs խաղացողի վճարողը), այնտեղ հստակ տարբեր համատեքստեր կան։

3. Invariants և ownership: Ի՞ նչ չի կարելի խախտել և ո՞ վ է պատասխանում։ Invariant-ը տեղադրված է այն BC-ի ներսում, որը կարող է երաշխավորել այն։

4. Արժեքի հոսքը 'խմբավորել քայլերը, որոնք հաճախ փոխվում են միասին, մեկ BC թեկնածուներ են։

5. Նախկին կառուցվածքը 'եթե մի մասը առանձին թիմ է անում առանձին KPI-ով, հավանաբար սա առանձին BC (բայց ոչ հակառակը, օրգանական կառուցվածքը չպետք է կույր թելադրի մոդելը)։

Սահմանի ազդանշանները

Տերմինների մասին բանավեճը («դրույքաչափը», «տոմս», «շրջանակը» տարբեր իմաստներ են)։

Ամենաթեժ ինվարանտը «հոսում է» ծառայությունների միջոցով։

Տարբեր SLO-ն և փոփոխությունների տեմպը։

«Dance-write» -ը ատոմային մոդուլների միջև։

3) Տիպիկ ենթատեքստեր (առարկայական ոլորտի օրինակ)

Identity/KYC-ը ստանդարտ է, ստուգման մակարդակները, սահմանափակումների արձանները։

Wallet/Ledger-ը հավասարակշռություններ, կայունություններ, պահուստներ, արժույթներ է։

Betting/Orders - ընդունելություն, գնանշումներ, հաշվարկներ։

Game/Round-ը մրցույթի կյանքի ցիկլ է, արդյունքները։

Bonus/Promo - հաշվարկներ, վեյջեր, հակադարձում։

Payments - դեպոզիտներ/եզրակացություններ, արբիտրաժային դռների արձաններ։

Compliance/Reporting - հաշվետվություններ, աուդիտ, կարգավորող վիտրիններ։

Catalog/Provider Integration - խաղեր, տարբերակներ, պրովայդերների արձաններ։

Anront.ru/Read Models - պրոյեկտներ և նյութականացված ներկայացումներ։

💡 Սրանք միկրովայրկյաններ չեն «մեկ դասարանում»։ Մեկ BC-ը կարող է լինել մեկ ծառայություն կամ մոդուլային մոնոլիտ, որն ունի հստակ ինտերֆեյս։

4) Intext Map: Ինչպես BC-ն փոխազդում են

Համատեքստի քարտեզը նկարագրում է հարաբերությունների տեսակը

Customer–Supplier. Մեկ BC (Supplier) տալիս է իրադարձություններ/տվյալներ, մյուսը (Customer) հարմարեցնում է իր մոդելները։

Conformist. Customer-ը ընդունում է լեզուն և մոդելը Supplier-ը, ինչպես կա (օրինակ, ստանդարտ ստանդարտը)։

Partnership. Երկու BC-ն սինխրոնորեն զարգացնում է լեզուն և պայմանագրերը (հաճախ մեկ թիմ/roadmap)։

Shared Kernel. Ընդհանուր նվազագույն բարձրացում/գրադարան, տարբերակվում է միասին։ օգտագործել զգույշ։

Anti-Corruption Layer (ACL). Պաշտպանիչ շերտը, որը ուրիշի մոդելները թարգմանում է իր լեզուն։

Open Host Service / Published Language. Հանրային արձանագրություններ/սխեմաներ, տարբերակված և փաստաթղթավորված։

Պրակտիկա 'լռելյայն օգտագործեք ACL-ը և ասինխրոն իրադարձությունները։ Noormist-ը միայն այն դեպքում, եթե պրովայդերը թելադրում է արտադրանքը, Shared Kernel-ը նվազագույն և գիտակցված է։

5) Սահմանը = լեզուն + մոդել + ինվարանտներ + պահեստ

BC-ի ներսում նշվում է

Ubiquitous Language. Տերմինների բառարանը օրինակով։

Ագրեգատները և ինվարանտները։ Ո՞ վ է «պահում» կանոնները և ինչ վիրահատություններ թույլատրված։

Կոդավորման մոդելը։ Strong/CP փողի համար, EC/causal վիտրինի համար։

Պահեստ և ինդեքսներ։ Ընտրվում են ինվարանտների և SLO-ի տակ։

Ելքի պայմանագրերը։ Իրադարձությունները/թիմերը, սխեմաների տարբերակները, SLO առաքումը։

Դրսում, ոչ մի ուղղակի SQL/պլաստիկ կախվածություն։ Հաղորդակցումը պայմանագրի միջոցով է։

6) Սահմանները և համաձայնությունը (PACELC)

BC-ի ներսում ընտրեք մոդելը ինվարանտների տակ (Wallet-Strong, Betting-Strong)։

BC-ի միջև, առավել հաճախ eventium-ը իրադարձությունների և կանխատեսումների միջոցով։ Եթե անհրաժեշտ է սինխրոն ստուգում, ակնհայտ թիմը և ձախողումը անհասանելիության դեպքում (ոչ թե «թաքնված» REST-zov)։

7) Հակակոռուպցիոն շերտը (ACL)

ACL-ի առաջադրանքը 'չթողնել օտար լեզուն և «կեղտոտ» տվյալները BC-ի ներսում։

Mapping-ը ՝ արտաքին "Payte Status = SETTLED" -ը ներքին "LedgerEntry" (type = Credit, reason = PSSettle) "։

Վալիդացիան և հարստացումը 'ինվարանտների ստուգումը, թայմզոնի նորմալացումը, արժույթը։

Տարբերակումը '«schema _ version» արտաքին պայմանագրի աջակցությունը, հակառակը։

Idempotention: «external _ id »/« operation _ id»։

Դիտարկումը '«source», «schema _ version», «mapping _ id», DLQ «թունավոր» հաղորդագրությունների համար։

8) Սահմաններն ու տվյալները 'սեփականություն, պրոյեկցիաներ, API, API

Ownership: Ո՞ վ է պատկանում «ճշմարտությունը»։ Միայն սեփականատերը փոխում է ձայնագրությունը։ Մնացած BC-ը read մոդելն է և հղումները։

Պրոյեկտներ 'կարդալու համար դենորմալիզացված սեղաններ; նորարարվում են իրադարձություններից։

API 'թիմերը (դիմում են սեփականատիրոջը) և հարցումները (կարդում են պրոյեկտները)։ Ոչ մի «օտար տվյալների» միջով։

9) Էվոլյուցիան և տարբերակները

Իրադարձությունները և API-ը '«schema _ version» և ինտեգրման քաղաքականությունը (diitive + fallback)։

Blue/Green BC-ով. Նոր պայմանագիրը 'v2 "հրապարակվում է զուգահեռ" v1 ", ռուսական թարգմանվում է աստիճանաբար։

Տե՛ ս ՝ լուրջ փոփոխությունների համար 'նոր պրոյեկցիա/ծառայություն, «երկչափ սվիտչ» ընթերցանության համար։

10) Սահմանների փորձարկումը

Euract tes.ru: Ստուգումը, որ BC-ն հետևում է հրատարակված պայմանագիրը (www.er tes.ru) և ճիշտ հասկանում է օտար (consumer tes.ru)։

Property-based: BC-ի ներսում ագրեգատների ինվարանտներ (հավասարակշռություն, սահմաններ, յուրահատուկ)։

Chaos ինտեգրման վրա 'ուշացում, out-of-order, կրկնօրինակներ, schema-evolution; DLQ-ի և անվտանգ ռեդրեյվայի առկայությունը։

NFR թեստերը ՝ r95/PIX-ը սահմանին (իրադարձությունների սերվեր/ACL)։

11) Դիտարկումը և SLO սահմանները

Metriks: throughput իրադարձություններ/թիմեր, «project _ lag _ 24»,« dlq _ rate », mapping սխալներ, p95 API։

Թրեյսինգը 'պարտադիր թեգեր' bc ', «tenium _ id», «event _ id», «operation _ id», «schema _ version»։

Ալբերտները 'պրոյեկտների ճամբարի ավելցուկը, թիմերի ձախողումների աճը, սխեմայի «ֆայլ» (շատ «շեմա _ mismatch»)։

12) Multi-tenant և տարածաշրջանները

«tenrone _ id» - բոլոր իրադարձությունների և կանխատեսումների բաներում սահմանին։

Fairness: Հրապարակման/per ten.ru-ի սահմանները, որպեսզի «աղմուկը» չփչացնի SLO հարևաններին։

Residency: BC տվյալները ապրում են «տնային» տարածաշրջանում։ Քրոս-ստալինոն - ագրեգատներ/հաշվետվություններ։

13) Anti-patterns (որին հանգեցնում է հանքային սահմանը)

Հսկա «71-71»։ Ամեն ինչ մեկ վայրում կատարվում է գործարքների համար պայքարը, երկար կիսագնդերը, ցածր ինքնավարությունը։

Պլաստիկ կոմպոզիցիաներ։ Ուղիղ XXIII-ը օտար սեղաններում ցույց է տալիս փխրունություն և coupling սխեմա։

Dual-write. Միևնույն ժամանակ գրել երկու BC-ում «հարմարավետության համար» ռուսական տարբերությունները և ինվարանտների սաբոտաժը։

Diormist լռելյայն։ «Ընդունեցինք օտար մոդել, ինչպես կա» օտար իմաստների արտահոսքը, էվոլյուցիայի անհնարինությունը։

Թաքնված սինխրոն զանգեր։ REST-zov «ինչ-որ տեղ ներսում» առանց ակնհայտ պայմանագրի և Dedline-ը անսպասելի կախվածություն է։

14) Կոնտուրների օրինակը (բանավոր սխեմա)


[Wallet/Ledger] <--CP, Leader, Transactions-->
publishes: WalletReserved/Committed v
[Betting] <--CP on bid taking-->
events: BetPlaced/Settled v
[Read Models/Analytics] <--EC projection-->

[Payments] --ACL--> [Wallet/Ledger]
[Provider Integration] --ACL--> [Game/Round]
[Compliance] <-events - [KYC/Identity], -> reports [Reporting]

15) Մինի-դելդ սահմանների ընտրության համար

1. Կազմեք ինվարանտներ և չափանիշներ, որոնք կարող են երաշխավորել նրանց։

2. Գրեք բառարանը (10-20 տերմինալներ) և նշելով, որ թիմը մեկ հասկացողություն ունի։

3. Narisuext Map-ը և հարաբերությունների տեսակները։

4. Որոշեք մոդելը ներսում և հանգույցներում։

5. Նախագծեք պայմանագրերը (իրադարձություններ/թիմեր) և ACL-ը։

6. Տեղադրեք դիտարկումը (չափումներ/թրեյսինգ/ալտերտեր) և DLQ/redraiv։

7. Իրականացրեք www.ract-tes.ru և «փոթորիկ» (chaos) ինտեգրման համար։

8. Ամրագրեք governae: Ով խոսում է լեզուն/սխեման, ինչպես են փոփոխվում։

16) Չեկ թուղթ մինչև վաճառելը

  • Յուրաքանչյուր BC-ն ունի բառարան, ագրեգատներ և ինվարանտներ։
  • Որոշվում են հարաբերությունները Dirext Map-ի և փաստաթղթավորված պայմանագրերի վրա։
  • Մոսկվան իրադարձությունների/թիմի և ACL-ի միջոցով չկա ուղղակի SQL կախվածություն։
  • Թիմերի/իրադարձությունների համադրելիությունը. կա box/inbox և DLQ։
  • Կոդավորման մոդելը (ներսում/BC-ի միջև) գրված է և փորձարկվել։
  • Սխեմաների տարբերակումը և ինտեգրման ռազմավարությունը (v1/v2)։
  • Լագայի/սխալների/արտադրողականության և ալտերտայի մետրերը տրամադրված են։
  • Մուլտֆիլմի-տենանտիզմի և տեղեկատվական-ռեզիդենցիայի քաղաքականությունները պահպանված են։
  • Վիրահատական պլեյբուսներ 'schema-mismatch, redrive, rebuild պրոյեկտներ։

17) Արագ բաղադրատոմսեր

Փողը և լիմիտները 'առանձին BC-ը CP-ի և գործարքների հետ, API-ը միայն թիմերով, իրադարձությունները որպես ընթերցանության ճշմարտության արդյունք։

Ֆիդա/108 և ՝ BC EC, պրոյեկտներ և քեշներ, ակնհայտ «freshness»։

Ֆորումը արտաքին պրովայդերների հետ 'միշտ ACL-ի, իրադարձությունների/թիմի, սխեմաների տարբերակման միջոցով։

Թիմի աճը 'մեկ BC, թիմը ունի «լեզվի սեփականատեր» և «ինվարանտների պահապան»։

Մոնոլիտի ռեֆակտորինգը 'սկզբում պայմանագրերը և ACL-ը, հետո ֆիզիկական բաժանումը։

Եզրակացություն

Bounded Disext-ը ոչ միայն դիագրամ է, այլ լեզվի, կանոնների և էվոլյուցիայի մեթոդների աշխատանքային պայմանագիրը։ Հստակ սահմանները նվազեցնում են կապը, արագացնում են փոփոխությունները և ստեղծում են կանխատեսելի համակարգ շահագործման մեջ։ Բաժանեք իմաստը և ինվարանտները, պաշտպանեք ACL-ի սահմանները պայմանագրերով, չափեք բոլոր չափումները, և ձեր ճարտարապետությունը կմնա ճկուն և հուսալի, նույնիսկ երբ արագորեն աճում է տիրույթն ու թիմը։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։