Контексти маҳдуд ва сарҳадҳои домейн
Контексти сарҳадӣ (BC) сарҳади возеҳест, ки дар доираи он як забони ҳозиразамон, моделҳои доимӣ ва ғайривариантҳо фаъолият мекунанд. Дар дохили сарҳад, истилоҳҳо яксон нестанд ("Бет", "Мизоҷ", "Маҳдудият") ва берун аз контекст бо шартномаҳо (рӯйдодҳо/дастаҳо) иртибот доранд ва думҳои семантикии одамони дигарро намегиранд. "Сарҳадҳои оқилона интихобшуда пайвастшавиро коҳиш медиҳанд, миқёсро содда мекунанд ва таҳаввулоти маҳсулотро суръат мебахшанд.
1) Чаро ба мо марзҳо лозиманд
Кам кардани сарбории маърифатӣ. Гурӯҳ бо як модел ва як забон кор мекунад, на "тамоми тиҷорат якбора".
Ҷудокунии инвариантҳо. Қоидаҳои интиқодӣ (тавозун ≥ 0, беҳамтоии вуруд) дар як ҷо зиндагӣ мекунанд ва бо агрегатҳо ҳифз карда мешаванд.
Идоракунии тағирот. Таҳаввулоти схема/қоидаҳо дар доираи пеш аз милод ҳамсояро вайрон намекунад - шартномаҳои возеҳ мавҷуданд.
Иҷро ва эътимоднокӣ. Дар доираи пеш аз милод, модели мувофиқ ва нигоҳдории мувофиқро интихоб кардан мумкин аст; берун - пешгӯиҳои асинхронӣ.
2) Чӣ гуна контексти маҳдудро муайян кардан мумкин аст
Усули зуд (семинар 2-4 соат):1. Ҳодисаи шадид: рӯйдодҳои домениро "чӣ ҳодиса рӯй дод" нависед, пас фармонҳо "шумо чӣ кор кардан мехоҳед" ва сипас агрегатҳо "ки қоидаро кафолат медиҳанд".
2. Кластерҳои забон: дар он ҷое ки калимаҳо ва қоидаҳо пайваста мувофиқанд - эҳтимолияти пеш аз милод. Дар куҷо калимаи "Мизоҷ" маънои гуногунро дорад (пардохткунанда ва плеер) - заминаҳои возеҳ мавҷуданд.
3. Инвариантҳо ва моликият: чӣ набояд вайрон карда шавад ва кӣ масъул аст? Инвариант → дар дохили милод, ки онро кафолат дода метавонад.
4. Ҷараёни арзиш: Қадамҳои гурӯҳӣ, ки аксар вақт якҷоя иваз мешаванд - инҳо номзадҳо барои як милод мебошанд.
5. Сохтори Org: агар як қисм аз ҷониби дастаи алоҳида бо KPI-ҳои алоҳида сохта шуда бошад - ин эҳтимолан пеш аз милод алоҳида аст (аммо баръакс: сохтори ташкилӣ набояд моделро кӯр-кӯрона дикта кунад).
Сигналҳои сарҳадӣ:- Баҳс дар бораи истилоҳот ("бет", "чипта", "давр" - маъноҳои гуногун).
- Гармтарин инвариант тавассути хидматҳо "ҷорист".
- SLO-ҳои гуногун ва суръати тағирот.
- "Дучанд-нависед" байни модулҳо ба хотири атом.
3) Заминаҳои маъмулӣ (мисоли домейн)
Шахсият/KYC - бақайдгирӣ, сатҳи санҷиш, ҳолати маҳдудият.
Ҳамён/китобча - тавозун, муомилот, захираҳо, асъор.
Гарав/фармоиш - қабул, нохунак, ҳисоб.
Бозӣ/давр - даври ҳаёти даврӣ, натиҷаҳо.
Бонус/Promo - аккредитатсия, вагер, табдили.
Пардохтҳо - пасандозҳо/бозхонд, ҳолати дарвозаи пардохт.
Мувофиқат/Ҳисобот - ҳисоботҳо, аудитҳо, намоишҳои танзимкунанда.
Каталог/Интегратсияи провайдерҳо - бозиҳо, версияҳо, ҳолати провайдерҳо.
Аналитика/Моделҳои хондан - пешгӯиҳо ва нуқтаи назари моддӣ.
4) Харитаи контекст: чӣ гуна BC-ҳо бо ҳам ҳамкорӣ мекунанд
Харитаи контекст намуди муносибатро сабт мекунад:- Фармоишгар-таъминкунанда. Яке аз BC (Таҳвилгар) ҳодисаҳо/маълумотро таҳвил медиҳад, дигаре (Фармоишгар) моделҳои худро танзим мекунад.
- Конформист. Фармоишгар забон ва модели Таъминкунандаро қабул мекунад (масалан, дафтари танзимкунанда).
- Шарикӣ. Ду пеш аз милод забон ва шартномаҳоро ҳамоҳанг месозанд (аксар вақт як фармон/харитаи роҳ).
- Kernel муштарак. Sublanguage/китобхонаи маъмулии ҳадди аққал, якҷоя бо версия; бодиққат истифода баред.
- Қабати зиддикоррупсионӣ (ACL). Қабати муҳофизатӣ, ки моделҳои одамони дигарро ба забони худ тарҷума мекунад.
- Хидмати мизбони кушод/Забони нашршуда. Протоколҳо/схемаҳои оммавӣ, таҳриршуда ва ҳуҷҷатгузорӣ карда шудаанд.
Амал: Бо нобаёнӣ ACL ва рӯйдодҳои асинхрониро истифода баред; Conformist - танҳо дар сурате, ки провайдер стандартро дикта кунад, Shared Kernel - ҳадди аққал ва огоҳона.
5) Bound = забон + модел + инвариантҳо + нигоҳдорӣ
Дар дохили милод, муайян кунед:- Забони ҳозиразамон. Луғати истилоҳот бо мисолҳо.
- Агрегатҳо ва инвариантҳо. Кӣ қоидаҳоро "риоя мекунад" ва ба кадом амалиёт иҷозат дода шудааст.
- Модели мутобиқат. Қавӣ/CP барои пул, EC/сабабҳо барои дӯконҳо.
- Нигоҳдорӣ ва индексатсияҳо. Барои инвариантҳо ва SLO интихоб шудааст.
- Шартномаҳои баромадан. Чорабиниҳо/фармонҳо, версияҳои схема, таҳвили SLO.
Берун: вобастагии мустақими SQL/ҷадвал нест. Алоқа - тавассути шартнома.
6) Сарҳадҳо ва пайдарҳамӣ (PACELC)
Дар дохили пеш аз милод: барои инвариантҳо намуна интихоб кунед (Ҳамён - Қавӣ, Букмекерӣ - Дар қабули қавӣ).
Байни милод: Аксар вақт тавассути рӯйдодҳо ва пешгӯиҳо. Агар санҷиши синхронӣ лозим бошад, фармони возеҳ бо мӯҳлат ва нокомӣ ҳангоми дастнорас будан (на занги "пинҳоншуда" REST).
7) Қабати зиддикоррупсионӣ (ACL)
Вазифаи ACL аз он иборат аст, ки ба забони каси дигар ва маълумоти ифлос дар дохили милод роҳ надиҳед.
Харитасозии схема: берунии 'Payment' Status = SOLED '→ дохилии' Ledger 'Entry (намуди = Кредит, сабаб = PS' ettle) '.
Санҷиш ва ғанисозӣ: санҷиши инвариантҳо, ба эътидол овардани вақтҳо, асъорҳо.
Версия: дастгирии шартномаи берунии 'schema _ version', мутобиқати қафо.
Idempotence: аз ҷониби 'берунӣ _ id '/' operation _ id'.
Мушоҳида: пайгирии барчаспҳои 'манбаъ', 'schema _ version', 'mapping _ id', DLQ барои паёмҳои 'заҳролуд'.
8) Сарҳадҳо ва маълумот: моликият, пешгӯиҳо, API
Моликият: "Ҳақиқат" кист? Танҳо соҳиб сабтро иваз мекунад. Қисми боқимондаи пеш аз милод - моделҳои хондан ва пайвандҳо.
Пешгӯиҳо: ҷадвалҳои ғайримуқаррарӣ барои хониш; аз рӯйдодҳо нав карда мешаванд.
API: фармонҳо (мутатсия дар соҳиби) ва дархостҳо (пешгӯиҳоро хонед). Не навсозиҳои "ниҳоӣ" маълумоти одамони дигар.
9) Эволютсия ва версияҳо
Ҳодисаҳо ва API - бо 'schema _ version' ва сиёсати мутобиқат (иловагиҳо + таназзул).
Кабуд/Сабз аз ҷониби пеш аз милод: шартномаи нави 'v2' дар баробари 'v1' нашр мешавад, трафик тадриҷан гузаронида мешавад.
Муҳоҷират: барои тағиротҳои асосӣ - дурнамо/хидмати нав, "гузариши думарҳилавӣ" -и хониш.
10) Санҷиши сарҳадӣ
Санҷишҳои шартномавӣ: санҷидани он, ки BC ба шартномаи нашршуда (санҷишҳои истеҳсолкунанда) мувофиқат мекунад ва санҷиши каси дигарро дуруст мефаҳмад (санҷишҳои истеъмолӣ).
Ба амвол асос ёфтааст: инвариантҳои агрегатҳо дар доираи пеш аз милод (тавозун, маҳдудиятҳо, беҳамтоӣ).
Бетартибӣ дар ҳамгироӣ: таъхирҳо, тартибот, нусхаҳо, схема-эволютсия; ҳузури DLQ ва redrave бехатар.
Санҷишҳои NFR: p95/сарбории баландтарин дар сарҳад (сервери ҳодиса/ACL).
11) Мушоҳида ва SLO аз рӯи сарҳад
Нишондиҳандаҳо: интиқоли рӯйдодҳо/фармонҳо, 'projection _ lag _ ms', 'dlq _ rate', хатогиҳои харитасозӣ, p95 API.
Пайгирӣ: барчаспҳои ҳатмии 'bc', 'иҷорагир _ ид', 'event _ id', 'operation _ id', 'schema _ version'.
Огоҳиҳо: зиёдтар аз ақибмонии дурнамо, зиёд шудани нокомии фармон, схемаи "flap" (бисёр 'schema _ match').
12) Бисёр иҷорагир ва минтақаҳо
'иҷорагир _ ид' - дар калидҳои ҳама рӯйдодҳо ва пешгӯиҳо дар сарҳад.
Адолат: Маҳдудиятҳои нашр/бозсозӣ ба як иҷорагир барои нигоҳ доштани "ғавғо" аз вайрон кардани SLO-ҳои ҳамсояҳо.
Истиқомат: Маълумотҳои пеш аз милод дар минтақаи "хона" зиндагӣ мекунанд; байниминтақавӣ - агрегатҳо/ҳисоботҳо.
13) Анти-намунаҳо (дар натиҷа сарҳади номуайян)
Giant "хидмати аслӣ. "Ҳама чиз дар як ҷо → мубориза барои муомилот, релизҳои дароз, мустақилияти паст.
Интегратсияи ҷадвал. Хатҳои SELECT ба ҷадвалҳои хориҷӣ → осебпазирӣ ва пайвастшавӣ аз рӯи схема.
Дучанд-нависед. Ҳамзамон, дар ду соли пеш аз милод "барои роҳат" навиштан, номувофиқатӣ ва саботажи инвариантҳо.
Конформист бо нобаёнӣ. "Модели каси дигарро қабул кард, зеро ин" → ихроҷи маъноҳои одамони дигар, имконнопазирии эволютсия.
Зангҳои синхронии пинҳоншуда. REST занг занед "дар ҷое дар дохили" бидуни шартномаи возеҳ ва мӯҳлати муайян → вобастагии ғайричашмдошт аз мавҷудият.
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. Кашидани харитаи контекст ва навъҳои муносибат.
4. Модели мувофиқатро дар дохили ва дар буғумҳо ҳал кунед.
5. Шартномаҳои тарроҳӣ (рӯйдодҳо/фармонҳо) ва ACL.
6. Нақшаи мушоҳида (ченакҳо/пайгирӣ/огоҳиҳо) ва DLQ/redrive.
7. Гузаронидани озмоишҳои шартномавӣ ва бетартибӣ барои ҳамгироӣ.
8. Танзими идоракунӣ: кӣ забон/схемаро дорост, чӣ гуна тағирот ворид карда мешавад.
16) Рӯйхати санҷиши пеш аз фурӯш
- Ҳар як пеш аз милод луғат, агрегатҳо ва ғайривариантҳо дорад.
- Муносибатҳо дар Харитаи контекст муайян карда мешаванд ва шартномаҳо ҳуҷҷатгузорӣ карда мешаванд.
- Ҳамгироӣ тавассути рӯйдодҳо/фармонҳо ва ACL, вобастагии мустақими SQL нест.
- Фармондиҳии фармонҳо/ҳодисаҳо; қуттиҳо/паёмдонҳо ва DLQ мавҷуданд.
- Модели мутобиқат (inta/inter BC) собит ва озмуда шудааст.
- Стратегияи версия ва мутобиқати схема (v1/v2).
- Андозагирии ақибмонӣ/хатогӣ/иҷро ва огоҳиҳо танзим карда мешаванд.
- Сиёсати бисёрҳуҷрагӣ ва истиқомати маълумот татбиқ карда мешавад.
- Китобҳои амалиётӣ: номувофиқатии схема, бозсозӣ, барқарор кардани пешгӯиҳо.
17) Дорухатҳои зуд
Пул ва маҳдудиятҳо: ҷудо кардани милод бо CP ва муомилот, API танҳо фармонҳо, рӯйдодҳо ҳамчун натиҷаи ҳақиқат барои хондан.
Каналҳо/феҳристҳо: пеш аз милод бо EC, пешгӯиҳо ва кэш, "тару тоза".
Интегратсия бо провайдерҳои беруна: ҳамеша тавассути ACL, рӯйдодҳо/фармонҳо, версияи схема.
Афзоиши даста: Як милод як даста аст, даста "соҳиби забон" ва "нигаҳбони инвариантҳо" дорад.
Рефакторинги монолит: шартномаҳо ва ACL-ҳо аввал, баъд ҷудошавии ҷисмонӣ.
Хулоса
Контексти маҳдудшуда на танҳо диаграмма, балки созишномаи корӣ оид ба забон, қоидаҳо ва роҳи эволютсия мебошад. Ҳудуди дақиқ пайвастшавӣ, тағирёбии суръатро коҳиш медиҳад ва системаро барои кор пешгӯӣ мекунад. Аз рӯи маъно ва ғайривариантҳо ҷудо шавед, сарҳадҳо ва шартномаҳои ACL-ро ҳифз кунед, ҳама чизро бо ченакҳо чен кунед - ва меъмории шумо ҳатто бо афзоиши босуръати домейн ва даста чандир ва боэътимод боқӣ хоҳад монд.