GH GambleHub

Οριοθετημένο πλαίσιο και όρια τομέα

Το Bounded Context (BC) είναι ένα σαφές όριο εντός του οποίου λειτουργεί μια ενιαία Ubiquitous Language, συνεπή μοντέλα και αναλλοίωτες. Εντός των συνόρων, οι όροι είναι σαφείς ("Bet", "Client", "Limit"), και εκτός του πλαισίου επικοινωνούν με συμβάσεις (εκδηλώσεις/ομάδες) και δεν μπαίνουν μέσα στις σημασιολογικές "ουρές άλλων ανθρώπων. "Τα έξυπνα επιλεγμένα όρια μειώνουν τη συνδεσιμότητα, απλοποιούν την κλιμάκωση και επιταχύνουν την εξέλιξη των προϊόντων.

1) Γιατί χρειαζόμαστε σύνορα

Μείωση νοητικού φορτίου. Η ομάδα εργάζεται με ένα μοντέλο και μία γλώσσα, όχι «ολόκληρη την επιχείρηση ταυτόχρονα».
Απομόνωση αναλλοίωτων ουσιών. Οι κρίσιμοι κανόνες (ισοζύγιο ≥ 0, μοναδικότητα σύνδεσης) ζουν σε ένα μέρος και προστατεύονται από συγκεντρωτικά μεγέθη.
Διαχείριση αλλαγών. Η εξέλιξη του καθεστώτος/των κανόνων εντός του BC δεν παραβιάζει τον γείτονα - υπάρχουν ρητές συμβάσεις.
Επιδόσεις και αξιοπιστία. Εντός του BC μπορεί να επιλεγεί κατάλληλο μοντέλο συνοχής και αποθήκευσης. εκτός - ασύγχρονες προβολές.

2) Τρόπος προσδιορισμού του οριοθετημένου πλαισίου

Ταχεία μέθοδος (εργαστήριο 2-4 ώρες):

1. Event Storming: γράψτε τα domain events «τι συνέβη», τότε οι εντολές «τι ζητάτε να κάνετε», τότε τα συγκεντρωτικά στοιχεία «ποιος εγγυάται τον κανόνα».

2. Γλωσσικές ομάδες: όπου οι λέξεις και οι κανόνες ταιριάζουν σταθερά - δυνητικό π.Χ. Όπου η λέξη «πελάτης» σημαίνει διαφορετική (πληρωτής έναντι παίκτης) - υπάρχουν σαφώς διαφορετικά πλαίσια.

3. Αναλλοίωτοι και ιδιοκτησία: τι δεν μπορεί να παραβιαστεί και ποιος είναι υπεύθυνος Η αναλλοίωτη → μέσα στο BC που μπορεί να την εγγυηθεί.

4. Ροή αξίας: Ομαδικά βήματα που συχνά αλλάζουν μαζί - αυτά είναι υποψήφια για ένα π.Χ.

5. Org δομή: αν ένα μέρος γίνεται από μια ξεχωριστή ομάδα με ξεχωριστούς KPIs - αυτό είναι πιθανώς ένα ξεχωριστό BC (αλλά όχι αντίστροφα: η οργανωτική δομή δεν θα πρέπει να υπαγορεύει τυφλά το μοντέλο).

Οριακά σήματα:
  • Διαφωνία σχετικά με τους όρους («στοίχημα», «εισιτήριο», «γύρος» - διαφορετικές έννοιες).
  • Οι πιο έντονες αναλλοίωτες «ροές» μέσω των υπηρεσιών.
  • Διαφορετικοί SLO και ρυθμός αλλαγής.
  • «Διπλή γραφή» μεταξύ ενοτήτων για χάρη της ατομικότητας.

3) Τυπικά πλαίσια (παράδειγμα τομέα)

Ταυτότητα/KYC - καταχώριση, επίπεδα επαλήθευσης, καθεστώς περιορισμού.
Πορτοφόλι/Βιβλίο - υπόλοιπα, συναλλαγές, αποθεματικά, νομίσματα.
Στοιχήματα/Παραγγελίες - παραλαβή, εισαγωγικά, υπολογισμός.
Παιχνίδι/Στρογγυλός κύκλος ζωής, αποτελέσματα.
Bonus/Promo - δεδουλευμένα, βεβαρημένα, μετατροπή.
Πληρωμές - καταθέσεις/αναλήψεις, καταστάσεις πύλης πληρωμής.
Συμμόρφωση/Υποβολή εκθέσεων - εκθέσεις, λογιστικοί έλεγχοι, κανονιστικές εκθέσεις.
Ενσωμάτωση καταλόγου/παρόχου - παιχνίδια, εκδόσεις, καταστάσεις παρόχων.
Analytics/Read Models - προβολές και υλοποιημένες απόψεις.

💡 Αυτές δεν είναι μικροϋπηρεσίες μιας κατηγορίας. Ένα BC μπορεί να είναι μία υπηρεσία ή μια αρθρωτή μονόλιθος με σαφή διεπαφή.

4) Χάρτης πλαισίου: πώς αλληλεπιδρούν τα BC

Ο χάρτης πλαισίου αποτυπώνει τον τύπο σχέσης:
  • Πελάτης-προμηθευτής. Το ένα BC (Προμηθευτής) παραδίδει γεγονότα/δεδομένα, το άλλο (Πελάτης) προσαρμόζει τα μοντέλα του.
  • Κομφορμιστής. Ο πελάτης δέχεται τη γλώσσα και το μοντέλο του προμηθευτή όπως είναι (π.χ. Κανονιστικό βιβλίο).
  • Εταιρική σχέση. Δύο BC εξελίσσονται συγχρονισμένα γλώσσα και συμβάσεις (συχνά ένας χάρτης εντολών/οδικός χάρτης).
  • Κοινόχρηστος πυρήνας. Κοινή ελάχιστη υπογλωσσία/βιβλιοθήκη, που εκδίδεται από κοινού. να χρησιµοποιείται προσεκτικά.
  • Στρώμα κατά της διαφθοράς (ACL). Ένα προστατευτικό στρώμα που μεταφράζει τα μοντέλα άλλων ανθρώπων στη δική τους γλώσσα.
  • Ανοικτή υπηρεσία υποδοχής/δημοσιευμένη γλώσσα. Δημόσια πρωτόκολλα/συστήματα, που έχουν εκδοθεί και τεκμηριωθεί.

Πρακτική: Χρήση ACL και ασύγχρονων γεγονότων εξ ορισμού. Κομφορμιστής - μόνο αν ο πάροχος υπαγορεύει το πρότυπο, Shared Kernel - ελάχιστα και συνειδητά.

5) Δεσμευμένη = γλώσσα + μοντέλο + αναλλοίωτες + αποθήκευση

Εντός του BC, ορίστε:
  • Πανταχού παρούσα γλώσσα. Λεξικό όρων με παραδείγματα.
  • Συγκεντρωτικά στοιχεία και αναλλοίωτες. Ποιος «τηρεί» τους κανόνες και ποιες πράξεις επιτρέπονται.
  • Μοντέλο συνέπειας. Ισχυρή/CP για χρήματα, ΕΚ/αιτιώδης συνάφεια για τα καταστήματα.
  • Αποθήκευση και δείκτες. Επιλογή αναλλοίωτων και SLO.
  • Συμβάσεις εξόδου. Εκδηλώσεις/εντολές, εκδόσεις σχημάτων, SLO παράδοσης.

Εκτός: δεν υπάρχουν άμεσες εξαρτήσεις SQL/πίνακα. Επικοινωνία - μέσω σύμβασης.

6) Όρια και συνέπεια (PACELC)

Εντός π.Χ.: επιλέξτε ένα μοντέλο για τις αναλλοίωτες (πορτοφόλι - ισχυρό, στοίχημα - ισχυρό στη δεξίωση).
Μεταξύ BC: Πιο συχνά, μέσω γεγονότων και προβολών. Αν απαιτείται σύγχρονη επαλήθευση, μια ρητή εντολή με προθεσμία και αποτυχία όταν δεν είναι διαθέσιμη (όχι μια «κρυφή» κλήση REST).

7) Στρώμα καταπολέμησης της διαφθοράς (ACL)

Το καθήκον της ACL δεν είναι να αφήνει τη γλώσσα κάποιου άλλου και τα βρώμικα δεδομένα μέσα στο BC.

Χαρτογράφηση σχήματος: εξωτερική 'CheckStatus = SETLED' → εσωτερική 'LedgerEntry (τύπος = Πίστωση, λόγος = PsPSettle)'.
Επικύρωση και εμπλουτισμός: επαλήθευση των αναλλοίωτων, εξομάλυνση των χρονικών ζωνών, νομίσματα.
Έκδοση: υποστήριξη για 'schema _ version' external συμβόλαιο, οπισθοδρομική συμβατότητα.
Idempotence: by 'external _ id '/' operation _ id'.
Παρατηρησιμότητα: ανιχνεύσιμες ετικέτες 'πηγή', 'schema _ version', 'mapping _ id', DLQ για 'δηλητηριώδη' μηνύματα.

8) Όρια και δεδομένα: κυριότητα, προβλέψεις, API

Ιδιοκτησία: Σε ποιον ανήκει η «αλήθεια» Μόνο ο ιδιοκτήτης αλλάζει την εγγραφή. Το υπόλοιπο του BC - μοντέλα ανάγνωσης και σύνδεσμοι.
Προβολές: απομαλοποιημένοι πίνακες για ενδείξεις. ενημερώνονται από τα γεγονότα.
API: εντολές (μεταλλάσσονται στον ιδιοκτήτη) και αιτήματα (ανάγνωση προβολών). Καμία ενημέρωση των δεδομένων των άλλων.

9) Εξέλιξη και εκδόσεις

Εκδηλώσεις και API - με 'schema _ version' και πολιτική συμβατότητας (πρόσθετο + εφεδρικό).
Blue/Green by BC: η νέα σύμβαση «v2» δημοσιεύεται παράλληλα με το «v1», η κυκλοφορία μεταφέρεται σταδιακά.
Μετανάστευση: για σημαντικές αλλαγές - μια νέα προβολή/υπηρεσία, ένας «διφασικός διακόπτης» αναγνώσεων.

10) Έλεγχος των ορίων

Δοκιμές συμβάσεων: έλεγχος της συμμόρφωσης του BC με τη δημοσιευμένη σύμβαση (δοκιμές παραγωγού) και ορθή κατανόηση κάποιου άλλου (δοκιμές καταναλωτή).
Βάσει περιουσιακών στοιχείων: αναλλοίωτες συγκεντρώσεις εντός του BC (ισοζύγιο, όρια, μοναδικότητα).
Χάος για την ολοκλήρωση: καθυστερήσεις, εκτός τάξης, αντίγραφα, σχηματική εξέλιξη. παρουσία DLQ και ασφαλούς redrave.
Δοκιμές NFR: p95/φορτίο αιχμής στα σύνορα (εξυπηρετητής γεγονότων/ACL).

11) Παρατηρησιμότητα και SLO ανά όριο

Μετρήσεις: διακίνηση γεγονότων/εντολών, 'προβολή _ lag _ m ,' dlq _ rate ', σφάλματα χαρτογράφησης, p95 API.
Εντοπισμός: υποχρεωτικές ετικέτες 'bc', 'tenant _ i ,' event _ id ',' operation _ id ',' schema _ version '.
Ειδοποιήσεις: υπέρβαση της καθυστέρησης προβολής, αύξηση των αποτυχιών εντολών, σχήμα «flap» (πολλά 'schema _ match').

12) Πολυπληθείς και περιφέρειες

'tenant _ i - στα κλειδιά όλων των γεγονότων και των προβολών στα σύνορα.
Δίκαιη μεταχείριση: Εκδοτικά/επανασχεδιασμένα όρια ανά ενοικιαστή για να μην εκτροχιάζονται οι SLO των γειτόνων.
Κατοικία: Στοιχεία BC ζουν σε περιοχή «κατοικίας». διαπεριφερειακά μεγέθη/εκθέσεις.

13) Αντι-μοτίβα (που οδηγούν σε θολή οριακή τιμή)

Γιγαντιαία "βασική υπηρεσία. "Τα πάντα σε ένα μέρος → ο αγώνας για συναλλαγές, μεγάλες κυκλοφορίες, χαμηλή αυτονομία.
Ενσωμάτωση πινάκων. ΕΠΙΛΕΓΟΥΝ γραμμές σε ξένους πίνακες → ευπάθεια και σύζευξη σύμφωνα με το σύστημα.
Διπλή γραφή. Ταυτόχρονα, γράφοντας σε δύο BC «για λόγους ευκολίας» → ασυμφωνίες και σαμποτάζ αναλλοίωτων.
Ο κομφορμιστής εξ ορισμού. «Αποδέχτηκε το μοντέλο κάποιου άλλου όπως είναι» → διαρροή των νοημάτων των άλλων ανθρώπων, η αδυναμία της εξέλιξης.
Κρυφές σύγχρονες κλήσεις. 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) Κατάλογος επιλογών πριν από την πώληση

Κάθε BC έχει ένα λεξιλόγιο, συγκεντρωτικά στοιχεία και αναλλοίωτες.

  • Οι σχέσεις ορίζονται στον χάρτη πλαίσιο και οι συμβάσεις τεκμηριώνονται.
  • Ενσωμάτωση μέσω γεγονότων/εντολών και ACL, καμία άμεση εξάρτηση SQL.
  • Ιδιαιτερότητα εντολής/γεγονότος. υπάρχουν outbox/inbox και DLQ.
  • Σταθερό και δοκιμασμένο μοντέλο συνέπειας (intra/inter BC).
  • Στρατηγική έκδοσης και συμβατότητας σχημάτων (v1/v2).
  • Οι μετρήσεις και οι ειδοποιήσεις Lag/σφάλματος/απόδοσης είναι διαμορφωμένες.
  • Εφαρμόζονται οι πολιτικές πολλαπλής μίσθωσης και διαμονής δεδομένων.
  • Λειτουργικά βιβλία: σχήματα-αναντιστοιχία, redrive, ανακατασκευή προβολών.

17) Γρήγορες συνταγές

Χρήματα και όρια: ξεχωριστό BC με CP και συναλλαγές, API μόνο εντολές, γεγονότα ως αποτέλεσμα της αλήθειας για αναγνώσεις.
Feeds/καταλόγους: BC με EC, προβολές και cache, ρητή «φρεσκάδα».
Ενοποίηση με εξωτερικούς παρόχους: πάντα μέσω ACL, συμβάντων/εντολών, έκδοσης σχημάτων.
Ομαδική ανάπτυξη: Ένα π.Χ. είναι μία ομάδα, η ομάδα έχει έναν «ιδιοκτήτη γλώσσας» και έναν «φύλακα αναλλοίωτων».
Αναπλήρωση μονόλιθου: συμβάσεις και ACL πρώτα και μετά φυσικό διαχωρισμό.

Συμπέρασμα

Το οριοθετημένο πλαίσιο δεν είναι μόνο ένα διάγραμμα, αλλά και μια συμφωνία εργασίας για τη γλώσσα, τους κανόνες και τον τρόπο εξέλιξης. Τα σαφή όρια μειώνουν τη συνδεσιμότητα, την αλλαγή ταχύτητας και κάνουν το σύστημα προβλέψιμο να λειτουργεί. Χωριστά από το νόημα και τις αναλλοίωτες, προστατέψτε τα όρια και τις συμβάσεις ACL, μετρήστε τα πάντα με μετρήσεις - και η αρχιτεκτονική σας θα παραμείνει ευέλικτη και αξιόπιστη ακόμα και με την ταχεία ανάπτυξη του τομέα και της ομάδας.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Telegram
@Gamble_GC
Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.