Πλέγμα και κανόνες που τρέχουν ενσωματωμένα στη διαδικασία

Οι μηχανές κανόνων γίνονται ακριβές όταν κάθε απόφαση μετατρέπεται σε κλήση δικτύου, πέρασμα διερμηνέα ή ανακατασκευή ελέγχου. Η Lattice μεταγλωττίζει τα...

Πλέγμα και κανόνες που τρέχουν ενσωματωμένα στη διαδικασία

Ο κανόνας δεν θα έπρεπε να είναι ένα απομακρυσμένο μαντείο

Οι επιχειρηματικοί κανόνες συνήθως παρουσιάζονται ως κάτι απλό. Ένας πελάτης είναι επιλέξιμος ή όχι. Μια συναλλαγή περνά ή αποτυγχάνει. Μια προσφορά παίρνει έκπτωση. Ένας χρήστης μπορεί να έχει πρόσβαση σε έναν πόρο. Μετά οι κανόνες μεγαλώνουν, έρχονται οι εξαιρέσεις, η συμμόρφωση ζητά αποδείξεις, και ξαφνικά ο απλός έλεγχος έχει γίνει μια υπηρεσία πολιτικής, ένας διερμηνέας, μια κρυφή μνήμη, μια εργασία συμφιλίωσης και μια συνάντηση με τον προμηθευτή. Υπέροχα. Εφευρήκαμε εκ νέου ένα φανάρι με συνδρομητικό πρόγραμμα.

Το Lattice ξεκινά από μια λιγότερο θεατρική ιδέα: ο κανόνας θα έπρεπε να εκτελείται εκεί όπου λαμβάνεται η απόφαση. Η τρέχουσα σελίδα του Lattice περιγράφει ένα στοιχείο Rust με άδεια Apache 2.0 που μεταγλωττίζει εκ των προτέρων τους κανόνες σε ένα δυαδικό τεχνούργημα που μπορεί να αντιστοιχιστεί στη μνήμη. Η αξιολόγηση είναι ένας ενδοδιεργασιακός περίπατος σε συσκευασμένο δέντρο. Το τεχνούργημα φέρει αθροίσματα ελέγχου. Οι ίδιοι κανόνες και τα ίδια δεδομένα περιγράφονται ότι παράγουν την ίδια απάντηση σε υποστηριζόμενους στόχους. Καμία επιπλέον υπηρεσία δεν χρειάζεται να παρεμβάλλεται στη διαδρομή μιας απόφασης. Αυτό είναι το χρήσιμο σχήμα.

Αυτό δεν είναι κατά της διακυβέρνησης. Είναι το αντίθετο. Η διακυβέρνηση εξασθενεί όταν οι κανόνες ζουν μακριά από τα συστήματα που τους χρησιμοποιούν και οι εξηγήσεις πρέπει να ανασυντεθούν αργότερα. Ένας κανόνας που είναι εκδοσιωμένος, μεταγλωττισμένος, με άθροισμα ελέγχου, φορτωμένος στη διεργασία και αναπαράξιμος δίνει στους ελεγκτές κάτι πιο συγκεκριμένο από το «ρωτήσαμε την υπηρεσία πολιτικής και είπε όχι». Αυτή η πρόταση μπορεί να είναι αληθής. Δεν αρκεί.

Το Lattice μεταφέρει τη δουλειά έξω από την κρίσιμη διαδρομή. Συγγράψτε κανόνες, μεταγλωττίστε περιορισμούς, συσκευάστε ένα τεχνούργημα και μετά αξιολογήστε χωρίς να ρωτάτε ένα απομακρυσμένο μαντείο.

Μεταγλωττίστε μία φορά, σταματήστε να διερμηνεύετε για πάντα

Η διοχέτευση της σελίδας είναι σαφής: συγγραφή, μεταγλώττιση, συσκευασία, αξιολόγηση. Οι κανόνες και οι περιορισμοί βρίσκονται δίπλα στον πηγαίο κώδικα και στο ιστορικό εκδόσεων. Η μεταγλώττιση ταξινομεί τους περιορισμούς και καθορίζει τον επιλυτή. Η συσκευασία παράγει ένα δυαδικό τεχνούργημα με αθροίσματα ελέγχου XXH3-64 για την κεφαλίδα, το περιεχόμενο και το αρχείο. Η φόρτωση είναι μια κλήση συστήματος, όχι ανάλυση. Η αξιολόγηση διασχίζει το συσκευασμένο δέντρο στη διεργασία. Αυτή η ακολουθία έχει σημασία επειδή μετατρέπει τη δουλειά του χρόνου εκτέλεσης σε δουλειά του χρόνου κατασκευής.

Οι διερμηνείς είναι βολικοί μέχρι να βρεθούν σε κάθε αίτημα. Μια απομακρυσμένη υπηρεσία πολιτικής είναι βολική μέχρι το άλμα δικτύου να γίνει μέρος του προϋπολογισμού καθυστέρησης και η υπηρεσία να γίνει κάτι άλλο που μπορεί να είναι εκτός λειτουργίας. Ένας JIT είναι βολικός μέχρι διαφορετικοί κεντρικοί υπολογιστές, εκδόσεις ή βελτιστοποιητές να γίνουν μέρος της εξήγησης. Το Lattice είναι σκόπιμα λιγότερο δραματικό. Λέει ότι ο κανόνας θα έπρεπε να γίνει ένα αρχείο που η εφαρμογή μπορεί να αντιστοιχίσει και να εκτελέσει ντετερμινιστικά. Η διαδρομή αιτήματος δεν θα έπρεπε να ανακαλύπτει ξανά τους κανόνες κάθε φορά.

Η σελίδα αναφέρει αριθμούς συγκριτικής αξιολόγησης για την τρέχουσα διαδρομή τεχνουργήματος, συμπεριλαμβανομένου ενός αριθμού για θερμή αξιολόγηση, μιας ψυχρής αναζήτησης μετά από mmap και στοιχείων απόδοσης. Αυτοί οι αριθμοί ανήκουν στη σελίδα και στο πλαίσιο συγκριτικής αξιολόγησής της, όχι σε έναν μύθο που θα έπρεπε να αντιγραφεί σε κάθε μελλοντική έκδοση. Το διαρκές σημείο της μηχανικής είναι ο σχεδιασμός: ένα συσκευασμένο τεχνούργημα, αξιολόγηση τοπική στην κρυφή μνήμη, κανένας αναλυτής στην κρίσιμη διαδρομή, κανένας κατανεμητής μνήμης στην κρίσιμη διαδρομή και κανένα άλμα δικτύου ανά απόφαση.

Ένα ενιαίο API κανόνων δεν θα έπρεπε να κρύβει την πραγματικότητα του επιλυτή

Οι κανόνες δεν είναι όλοι ίδιοι. Κάποιοι είναι καθαροί έλεγχοι boolean. Κάποιοι συνδυάζουν λογική με αριθμητική. Κάποιοι είναι γραμμικά προγράμματα. Κάποιοι χρειάζονται αποφάσεις ακεραίων. Κάποιοι είναι περιορισμοί πεπερασμένου πεδίου. Κάποιοι είναι προβλήματα διαδρομής ή μαλακοί περιορισμοί. Μια σοβαρή μηχανή κανόνων δεν θα έπρεπε να εξαναγκάζει κάθε περίπτωση μέσα από μία τρύπα σε σχήμα επιλυτή. Θα έπρεπε να ταξινομεί τον κανόνα και να τον δρομολογεί στο σωστό παρασκήνιο.

Η σελίδα Lattice εντάσσει τα SAT, SMT, LP, MIP, CP, A* και MaxSAT σε ένα ενιαίο rule API. Το SAT καλύπτει καθαρά boolean rules και feature gates. Το SMT διαχειρίζεται μικτές θεωρίες, όπως λογική, αριθμητική, πίνακες και bitvectors. Το LP καλύπτει συνεχή βελτιστοποίηση. Το MIP ή ILP διαχειρίζεται ακέραιες αποφάσεις. Το CP διαχειρίζεται πεπερασμένα πεδία και μη γραμμικούς περιορισμούς. Τα A* και MaxSAT καλύπτουν προβλήματα διαδρομών και μαλακών περιορισμών. Το βασικό μήνυμα του προϊόντος είναι ότι ο καλών γράφει rules, όχι κλήσεις solver.

Ένα κοινό rule API δεν πρέπει να υποθέτει ότι όλοι οι περιορισμοί είναι ίδιοι. Ο selector δρομολογεί το rule στην οικογένεια solver που ταιριάζει στη μορφή του.

Αυτό έχει σημασία για τη συντηρησιμότητα. Αν κάθε ομάδα προϊόντος γράφει κώδικα ενοποίησης ειδικό για τον solver της, το επίπεδο πολιτικής γίνεται μια συλλογή από έξυπνα τοπικά κόλπα. Τα έξυπνα τοπικά κόλπα είναι ακριβά στους ελέγχους, γιατί κανείς δεν θυμάται ποιο κόλπο ήταν έξυπνο και ποιο ήταν απλώς της Παρασκευής. Μια ταξινομημένη επιφάνεια rule δίνει στις ομάδες ένα σημείο για να επιθεωρήσουν το rule, την κατηγορία backend, το μεταγλωττισμένο artefact και την απάντηση που παρήγαγε.

Η καθυστέρηση είναι και αυτή business rule

Τα συστήματα αποφάσεων λατρεύουν να προσποιούνται ότι η καθυστέρηση είναι τεχνική λεπτομέρεια. Δεν είναι. Αν ένας έλεγχος συμμόρφωσης βρίσκεται σε κάθε συναλλαγή, η καθυστέρηση είναι μέρος του προϊόντος. Αν ο έλεγχος πρόσβασης βρίσκεται σε μια πύλη, η καθυστέρηση είναι μέρος της ασφάλειας. Αν η τιμολόγηση γίνεται τη στιγμή της προσφοράς, η καθυστέρηση είναι μέρος των εσόδων. Αν ο έλεγχος απάτης γίνεται πριν από τον διακανονισμό, η καθυστέρηση είναι μέρος του κινδύνου. Ένα αργό rule μπορεί να είναι σωστό και παρόλα αυτά λειτουργικά λάθος.

Γι' αυτό έχει σημασία η αξιολόγηση εντός διεργασίας. Η τρέχουσα σελίδα Lattice αντιπαραβάλλει τους ερμηνευμένους ή απομακρυσμένους ελέγχους σε κλίμακα χιλιοστών του δευτερολέπτου με τη διαδρομή του συσκευασμένου artefact, και επισημαίνει το κόστος των network hops, των sidecar υπηρεσιών και των κενών ελέγχου. Ο ακριβής αριθμός για ένα benchmark έχει μικρότερη σημασία από τη μορφή του κόστους. Αν ένα αίτημα χρειάζεται δέκα ελέγχους, ίσως η παλιά διαδρομή αντέχει. Αν ένα αίτημα χρειάζεται δέκα χιλιάδες ελέγχους, η παλιά διαδρομή αρχίζει να καταλαμβάνει χώρο στον προϋπολογισμό του αιτήματος. Σε αυτό το σημείο, ο μηχανισμός rule δεν είναι πλέον ένα εξάρτημα. Είναι αυτό που περιμένουν οι χρήστες.

Η καθυστέρηση πολλαπλασιάζεται με τον όγκο αποφάσεων. Όσο μικρότερο είναι το κόστος ανά έλεγχο, τόσο λιγότερο μπαίνει το rulebook εμπόδιο στη ροή εργασίας που υποτίθεται ότι προστατεύει.

Το λειτουργικό όφελος δεν είναι μόνο η ταχύτητα. Είναι τα λιγότερα κινούμενα μέρη. Χωρίς επιπλέον υπηρεσία πολιτικής. Χωρίς δίκτυο που πρέπει να διατηρείται υγιές. Χωρίς ξεχωριστή διεργασία parser. Χωρίς ξεχωριστή κρυφή μνήμη για να εξηγείται. Το rulebook βρίσκεται μαζί με την εφαρμογή, εντός της δικαιοδοσίας και των λειτουργικών ορίων που ήδη ελέγχετε. Αυτό είναι λιγότερο εντυπωσιακό από ένα dashboard. Είναι όμως και λιγότερο πιθανό να ξυπνήσει κάποιον.

Η απάντηση στον έλεγχο είναι η αναπαραγωγή

Όταν ένας ελεγκτής ρωτά γιατί απορρίφθηκε μια απόφαση, η χειρότερη απάντηση είναι μια παράγραφος ανακατασκευασμένη από μνήμης. Η δεύτερη χειρότερη απάντηση είναι ένα στιγμιότυπο οθόνης. Η χρήσιμη απάντηση είναι: αυτή η έκδοση rulebook εκτελέστηκε με αυτή την είσοδο και παρήγαγε αυτή την έξοδο, ορίστε το checksum του artefact, ορίστε το rule, ορίστε η αναπαραγωγή. Το Lattice είναι χτισμένο για να κάνει αυτή την απάντηση δυνατή.

Η σελίδα συνδέει το Lattice με τις αυτοματοποιημένες αποφάσεις του GDPR, τη διαφάνεια του AI Act της ΕΕ, την επιχειρησιακή ανθεκτικότητα του DORA και τη διασφάλιση της εφοδιαστικής αλυσίδας του NIS2. Αυτές οι ετικέτες μπορούν να γίνουν φυλλάδια αν το σύστημα δεν μπορεί να δείξει κάτι συγκεκριμένο. Το συγκεκριμένο κομμάτι είναι το τεχνούργημα. Ένα μεταγλωττισμένο βιβλίο κανόνων μπορεί να ονομαστεί. Ένα άθροισμα ελέγχου μπορεί να απορρίψει την παραποίηση. Τα καταγεγραμμένα δεδομένα εισόδου μπορούν να αναπαράγουν την απόφαση. Η ακριβής έξοδος σε επίπεδο bit σημαίνει ότι η ανακατεύθυνση σε εφεδρικό σύστημα δεν θα πρέπει να αλλάζει σιωπηλά μια απάντηση. Η εκτέλεση εντός διεργασίας σε ελεγχόμενα συστήματα βοηθά στην αποφυγή του προβλήματος της εξωτερικής υπηρεσίας στη διαδρομή απόφασης.

Η εξήγηση δεν είναι ένα νέο δοκίμιο που γράφτηκε μετά το παράπονο. Είναι το βιβλίο κανόνων, τα δεδομένα εισόδου και η έξοδος που αναπαράγονται από το τεχνούργημα που πραγματικά εκτελέστηκε.

Πού ταιριάζει πρώτα

Το Lattice έχει νόημα σε σημεία απόφασης που συμβαίνουν συχνά και χρειάζονται αποδεικτικά στοιχεία αργότερα. Έλεγχοι συμμόρφωσης σε συναλλαγές. Τιμολόγηση και επιλεξιμότητα κατά την προσφορά. Αποφάσεις πρόσβασης σε πύλες. Έλεγχος απάτης πριν από τον διακανονισμό. Έλεγχοι επιλεξιμότητας στον δημόσιο τομέα. Πύλες αναδοχής ασφαλίσεων. Δικαιώματα σε εσωτερικές ροές εργασίας. Αυτά είναι σημεία όπου το ναι ή το όχι δεν αρκεί. Το σύστημα πρέπει να γνωρίζει ποια έκδοση του ναι ή του όχι συνέβη.

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

Γι' αυτό και ο ανοιχτός κώδικας έχει σημασία εδώ. Μια μηχανή κανόνων που συμμετέχει στη συμμόρφωση, την πρόσβαση, την τιμολόγηση ή την απάτη δεν είναι μια διακοσμητική εξάρτηση. Είναι μέρος του επιπέδου ελέγχου. Αν κανείς μέσα στον οργανισμό δεν μπορεί να την επιθεωρήσει, να την καθηλώσει, να τη δοκιμάσει και να τη διατηρήσει, τότε το βιβλίο κανόνων δεν είναι πραγματικά δικό τους. Είναι ενοικιασμένη εξουσία.

Τι να ελέγξετε πριν την υιοθέτηση

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

Δεύτερον, εξετάστε τη μορφή των κανόνων. Οι περιορισμοί είναι δυαδικοί, αριθμητικοί, γραμμικοί, ακέραιοι, πεπερασμένου πεδίου, διαδρομής ή μαλακοί; Ποια κατηγορία παρασκηνίου θα πρέπει να τους διαχειρίζεται; Αν ο κανόνας δεν μπορεί να εξηγήσει γιατί δρομολογείται σε μια οικογένεια επιλυτών, η αφαίρεση είναι υπερβολικά μαγική.

Τρίτον, εξετάστε την πειθαρχία του τεχνουργήματος. Πού αποθηκεύεται ο κανόνας προέλευσης; Ποια κατασκευή παρήγαγε το τεχνούργημα; Ποιο άθροισμα ελέγχου φορτώθηκε; Ποια έκδοση εφαρμογής το χρησιμοποίησε; Ποια δεδομένα εισόδου καταγράφηκαν; Ποια διαδρομή αναπαραγωγής αποδεικνύει την απάντηση; Αν η απάντηση είναι κατανεμημένη σε τρία συστήματα και ένα άτομο που ονομάζεται Γιάννης, το βιβλίο κανόνων δεν είναι ακόμη αντικείμενο ελέγχου. Είναι παράδοση.

Το μάθημα

Το Lattice είναι μια ιστορία μηχανής κανόνων, αλλά στην πραγματικότητα είναι μια ιστορία ελέγχου. Μεταγλωττίστε το βιβλίο κανόνων πριν από το αίτημα. Συσκευάστε το σε ένα τεχνούργημα που η εφαρμογή μπορεί να αντιστοιχίσει στη μνήμη. Ελέγξτε το τεχνούργημα πριν το φορτώσετε. Δρομολογήστε τους περιορισμούς στη σωστή οικογένεια επιλυτών. Εκτελέστε εντός διεργασίας. Αναπαράγετε αργότερα με τα ίδια δεδομένα εισόδου και την ίδια έκδοση βιβλίου κανόνων.

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

Το βιβλίο κανόνων δεν θα πρέπει να είναι ένα απομακρυσμένο χρηστήριο. Θα πρέπει να είναι κάτι που το σύστημα μπορεί να εκτελέσει, να ονομάσει και να αναπαράγει.