GH GambleHub

Bounded Context we domen çäkleri

Bounded Context (BC) - bu bitewi Ubiquitous Language, ylalaşylan modeller we üýtgeşmeler hereket edýän anyk çäk. Serhetiň içinde adalgalar birmeňzeş ("Stawka", "Müşderi", "Limit"), kontekst bolsa kontraktlar (wakalar/toparlar) bilen aragatnaşyk saklaýar we beýleki adamlaryň semantik "guýruklaryny" içeri çekmeýär. Dogry saýlanan serhetler baglanyşygy peseldýär, ulalmagy aňsatlaşdyrýar we önümiň ewolýusiýasyny çaltlaşdyrýar.

1) Näme üçin serhetler gerek?

Aň-bilim ýüküni azaltmak. Topar "ähli iş birbada" däl-de, bir model we bir dil bilen işleýär.
Invariantlaryň izolýasiýasy. Kritiki düzgünler (balans ≥ 0, loginiň özboluşlylygy) bir ýerde ýaşaýar we agregatlar bilen goralýar.
Üýtgeşmeleri dolandyrmak. BC-nyň içinde shema/düzgünleriň ewolýusiýasy goňşusyny bozmaýar - aç-açan şertnamalar bar.
Öndürijilik we ygtybarlylyk. BC-iň içinde laýyk sazlaşyk modelini we ammary saýlap bilersiňiz; daşardan - asinhron proýeksiýalary.

2) Bounded Contexti nädip kesgitlemeli

Çalt usul (workshop 2-4 sagat):

1. "Event Storming": domen wakalaryny "näme boldy" diýip ýazyň, soňra "näme etmegiňizi haýyş edýäris", soňra "düzgüni kim kepillendirýär".

2. Dil klasterleri: sözleriň we düzgünleriň yzygiderli gabat gelýän ýeri - potensial BC. "Müşderi" sözi dürli manylary aňladýan ýerde (töleýji vs oýunçy) - aç-açan dürli kontekstler bar.

3. Invariantlar we ownership: näme bozulmaly däl we kim jogap berýär? Invariant → ony kepillendirip biljek BC-iň içinde.

4. Gymmatlyk akymy: Köplenç bilelikde üýtgeýän ädimleri toparlanyň - bular bir BC üçin dalaşgärler.

5. Org-gurluş: eger bir bölek aýratyn KPI topary tarapyndan edilse - bu aýratyn BC bolmagy ähtimal (ýöne tersine däl: guramaçylyk gurluşy modeli kör görkezmeli däldir).

Serhet signallary:
  • Adalgalar baradaky jedel ("stawka", "bilet", "tegelek" - dürli manylar).
  • Iň gyzgyn üýtgeşiklik hyzmatlar arkaly "akýar".
  • Dürli SLO we üýtgemek depgini.
  • "Dual-write" atomarizm üçin modullaryň arasynda.

3) Adaty kontekstler (predmet meýdanynyň mysaly)

Identity/KYC - hasaba alyş, tassyklama derejeleri, çäklendirmeleriň ýagdaýy.
Wallet/Ledger - balanslar, geçirimler, ätiýaçlyklar, walýutalar.
Betting/Orders - kabul etmek, sitatalar, hasaplamak.
Game/Round - tapgyryň durmuş sikli, netijeleri.
Bonus/Promo - hasaplamalar, weýjer, konwersiýa.
Payments - goýumlar/netijeler, töleg şlýuzlarynyň ýagdaýlary.
Compliance/Reporting - hasabatlar, audit, kadalaşdyryjy penjireler.
Catalog/Provider Integration - oýunlar, wersiýalar, üpjün edijileriň statusy.
Analytics/Read Models - proýeksiýalar we materiallaşdyrylan çykyşlar.

💡 Bular "bir synp üçin" mikroservisler däl. Bir BC bir hyzmat ýa-da takyk interfeýsi bolan modully monolit bolup biler.

4) Context Map: BC nähili täsir edýär

Kontekst kartasy gatnaşyklaryň görnüşini kesgitleýär:
  • Customer–Supplier. Bir BC (Supplier) wakalary/maglumatlary üpjün edýär, beýlekisi (Customer) öz modellerini sazlaýar.
  • Conformist. Customer dili we Supplier modelini bolşy ýaly kabul edýär (mysal üçin, kadalaşdyryjy reýestr).
  • Partnership. Iki BC dil we şertnamalary sinhronly ösdürýär (köplenç - bir topar/roadmap).
  • Shared Kernel. Umumy iň az sözbaşy/kitaphana bilelikde wersiýa edilýär; seresaplylyk bilen ulanmak.
  • Anti-Corruption Layer (ACL). Beýleki adamlaryň modellerini öz diline terjime edýän gorag gatlagy.
  • Open Host Service / Published Language. Köpçülikleýin teswirnamalar/shemalar, wersiýalanýan we dokumentleşdirilen.

Practice: ACL we asenkron wakalary ulanyň; Conformist - diňe üpjün ediji standarty kesgitlän halatynda, Shared Kernel - iň az we aňly.

5) Serhet = dil + model + invariantlar + ammar

BC-iň içinde:
  • Ubiquitous Language. Termin sözlügi.
  • Agregatlar we alternatiwalar. Düzgünleri kim "saklaýar" we haýsy amallara rugsat berilýär.
  • Ylalaşygyň modeli. Strong/CP pul üçin, EC/causal penjireler üçin.
  • Ammar we indeksler. Invariantlar we SLO üçin saýlanýar.
  • Çykyş şertnamalary. Wakalar/buýruklar, shemalaryň wersiýalary, gowşuryş SLO.

Daşarda: göni SQL/tablisa garaşlylygy ýok. Aragatnaşyk - şertnama arkaly.

6) Serhetler we sazlaşyk (PACELC)

BC içinde: alternatiwalar üçin model saýlaň (Wallet - Strong, Betting - Kabul edişlikde Strong).
BC arasynda: köplenç wakalar we proýeksiýalar arkaly eventual. Sinhron barlamak zerur bolsa - elýeterli bolmadyk ýagdaýynda möhleti we şowsuzlygy bolan aç-açan buýruk ("gizlin" REST çagyryşy däl).

7) Korrupsiýa garşy gatlak (ACL)

ACL-iň wezipesi: daşary ýurt dilini we "hapa" maglumatlary BC-e goýbermezlik.

Shemalar: daşarky 'PaymentStatus = SETTLED' → içerki 'LedgerEntry (type = Credit, reason = PsPSettle)'.
Walidasiýa we baýlaşdyrmak: üýtgewsizleri barlamak, wagt zolaklaryny, walýutalary kadalaşdyrmak.
Wersiýalaşdyrmak: daşarky şertnamanyň 'schema _ version' goldawy, ters gabat gelmek.
Idempotentlik: 'external _ id '/' operation _ id'.
Syn edilişi: "zäherli" habarlar üçin 'source', 'schema _ version', 'mapping _ id', DLQ söwda bellikleri.

8) Serhetler we maglumatlar: eýeçilik, proýeksiýa, API

Ownership: "Hakykata" kim eýe? Diňe eýesi ýazgyny üýtgedýär. BC-iň galanlary - read-modeller we baglanyşyklar.
Proýeksiýalar: okamak üçin denormallaşdyrylan tablisalar; wakalardan täzelenýär.
API: toparlar (eýesinden üýtgeýär) we soraglar (proýeksiýalary okaýar). Başga adamlaryň maglumatlarynyň "üsti bilen" täzelenmeleri ýok.

9) Ewolýusiýa we wersiýalar

Wakalar we API - 'schema _ version' we laýyklyk syýasaty (additive + fallback).
BC boýunça Blue/Green: täze şertnama 'v2' paralel 'v1' çap edilýär, ulag kem-kemden geçirilýär.
Migrasiýa: düýpli üýtgeşmeler üçin - täze proýeksiýa/hyzmat, okalyşlaryň "iki fazaly switç".

10) Serhetleri barlamak

Contract tests: BC-iň çap edilen şertnamany (producer tests) berjaý edýändigini we başga biriniň (consumer tests) dogry düşünýändigini barlamak.
Property-based: BC-iň içindäki agregatlaryň üýtgemegi (balans, çäkler, özboluşlylyk).
Integrasiýalarda Chaos: gijikdirmeler, out-of-order, dublikatlar, schema-evolution; DLQ we howpsuz redaktirlemegiň bolmagy.
NFR synaglary: p95/serhetdäki iň ýokary ýük (waka serweri/ACL).

11) Serhetlerde syn etmek we SLO

Metrikler: throughput wakalar/buýruklar, 'projection _ lag _ ms', 'dlq _ rate', mapping ýalňyşlyklary, p95 API.
Treýsing: hökmany bellikler 'bc', 'tenant _ id', 'event _ id', 'operation _ id', 'schema _ version'.
Alertler: proýeksiýa akymynyň artykmaçlygy, toparlaryň şowsuzlygynyň ýokarlanmagy, "flap" shema (köp 'schema _ mismatch').

12) Köp tenant we sebitler

'tenant _ id' - serhetdäki ähli wakalaryň we proýeksiýalaryň açarlarynda.
Fairness: "şowhunly" goňşularyň SLO-syny bozmazlygy üçin neşirleriň/redaktirlemeleriň çäkleri.
Residency: BC maglumatlary "öý" sebitinde ýaşaýar; kross-sebitleýin - agregatlar/hasabatlar.

13) Anti-pattern (düşnüksiz serhet nämä eltýär)

Ullakan "core-service". Hemme zat bir ýerde → amallar üçin göreş, uzyn goýberişler, pes özbaşdaklyk.
Tablisa integrasiýalary. Başga adamlaryň tablisalaryna göni SELECT → shema boýunça gowşaklyk we coupling.
Dual-write. Şol bir wagtyň özünde iki BC-de "amatlylyk üçin" ýazmak → tapawutlar we üýtgewsizlikler.
Konformist. "Başga biriniň modelini bolşy ýaly kabul etdiler" → başga biriniň manylarynyň syzmagy, ewolýusiýanyň mümkin däldigi.
Gizlin sinhron jaňlar. REST-çagyryş "içerde bir ýerde" aç-açan şertnama we möhlet bolmazdan → elýeterlilik boýunça garaşylmadyk garaşlylyk.

14) Konturlaryň mysaly (söz shemasy)


[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) Serhet saýlamak boýunça kiçi gollanma

1. Inwariantlary düzüň we kimiň kepillendirip biljekdigini kesgitläň.
2. Sözlügi beýan ediň (10-20 termin) we toparyň bir düşünjäniň bardygyny barlaň.
3. Context Map we gatnaşyk görnüşlerini çekiň.
4. Içerde we bogunlarda sazlaşyk modelini çözüň.
5. Şertnamalary (wakalary/toparlary) we ACL-leri düzüň.
6. Syn edilişini meýilleşdiriň (metrikler/söwda/alert) we DLQ/redrave.
7. Integrasiýa üçin contract-tests we "tupan" (chaos) geçiriň.
8. Governance belläň: Dili/shemany kimiň bilýändigi, üýtgeşmeleriň nähili girizilýändigi.

16) Azyk önüminden öň çek-sanawy

  • Her BC-de sözlük, agregatlar we üýtgeşikler bar.
  • Context Map-da gatnaşyklar kesgitlenildi we şertnamalar resminamalaşdyryldy.
  • Wakalar/toparlar we ACL arkaly integrasiýa, göni SQL garaşlylygy ýok.
  • Toparlaryň/wakalaryň idempotenti; outbox/inbox we DLQ bar.
  • Sazlaşyk modeli (BC-iň içinde/arasynda) hasaba alyndy we synagdan geçirildi.
  • Shemalary wersiýalaşdyrmak we laýyklyk strategiýasy (v1/v2).
  • Lagyň/ýalňyşlyklaryň/öndürijiligiň metrikleri we töwekgelçilikler sazlanýar.
  • Köp tenantlyk we data-residency syýasaty berjaý edilýär.
  • Iş pleýbuklary: schema-mismatch, redrive, rebuild proýeksiýalary.

17) Çalt reseptler

Pul we çäkler: CP we amallar, API diňe toparlar bilen aýratyn BC, okamak üçin hakykatyň netijesi hökmünde wakalar.
Fid/kataloglar: EC bilen BC, proýeksiýalar we kesh, aýdyň 'freshness'.
Daşarky üpjün edijiler bilen integrasiýa: elmydama ACL, wakalar/buýruklar, shemalary wersiýalaşdyrmak arkaly.
Toparyň ösüşi: bir BC - bir topar, toparyň "dil eýesi" we "üýtgewsiz saklaýjy" bar.
Monolitiň refaktoringi: ilki şertnamalar we ACL, soň bolsa fiziki bölünişik.

Netije

Bounded Context diňe bir diagramma däl, eýsem dil, düzgünler we ewolýusiýa usuly barada iş şertnamasydyr. Anyk serhetler baglanyşygy azaldýar, üýtgeşmeleri çaltlaşdyrýar we ulgamy işlemegi öňünden aýdyp bolýar. Manylaryna we üýtgeşikliklerine görä bölüň, ACL çäklerini we şertnamalaryny goraň, hemme zady metrikler bilen ölçäň - domen we buýruk çalt össe-de arhitekturaňyz çeýe we ygtybarly bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.