Πώς τα Event-Sourced Domain Models κάνουν τα APIs πιο δυνατά
Πώς να φτιάξεις καλύτερα APIs με event-sourced domain models
Ξέρουμε καλά τι συμβαίνει όταν παραλαμβάνεις έναν μεγάλο κώδικα. Ψάχνεις στην τεκμηρίωση και συνήθως δεν βρίσκεις τίποτα. Ή, ακόμα χειρότερα, βρίσκεις κείμενα που δεν έχουν καμία σχέση με την πραγματικότητα. Οι κανόνες του συστήματος είναι σκορπισμένοι σε πολλά αρχεία, οι αληθινές επιχειρηματικές λογικές είναι κρυμμένες σε migrations της βάσης, και κανείς δεν ξέρει πια τι κάνει το σύστημα.
Υπάρχει όμως μια διαφορετική προσέγγιση που αξίζει να δοκιμάσεις. Ξεκινάει από την ιδέα του event sourcing.
Γιατί το event sourcing είναι σημαντικό σήμερα
Συνηθισμένα συστήματα αποθηκεύουν μόνο την τρέχουσα κατάσταση των δεδομένων. Το event sourcing όμως καταγράφει όλη την ιστορία των αλλαγών. Κάθε ενέργεια γίνεται ένα immutable event μέσα σε ένα log. Έτσι το σύστημα δεν κρατάει μόνο το «τι είναι τώρα», αλλά και το «πώς έφτασε εδώ».
Για όσους φτιάχνουν APIs, cloud εφαρμογές ή microservices, το event sourcing προσφέρει σημαντικά πλεονεκτήματα:
- Έχεις πλήρη audit trail χωρίς να το στήνεις ξεχωριστά
- Μπορείς να δεις ακριβώς πώς έφτασε το σύστημα σε μια συγκεκριμένη κατάσταση
- Ξεχωρίζεις τις εγγραφές από τις αναζητήσεις, ώστε να κλιμακώνεται το σύστημα
- Σε αναγκάζει να καταλάβεις καλύτερα τι πραγματικά συμβαίνει στην επιχείρηση
Το κομμάτι του domain modeling που παραλείπουν πολλοί
Πριν ξεκινήσεις να γράφεις κώδικα με event sourcing, πρέπει να χαρτογραφήσεις το domain. Χρειάζεται να ορίσεις τι είναι κάθε επιχειρηματική ενέργεια και τι αλλαγές προκαλεί. Επίσης πρέπει να καταγράψεις τι πρέπει να ισχύει πάντα στο σύστημα.
Αυτή η διαδικασία είναι πολύ πιο σοβαρή από μια απλή τεκμηρίωση. Αν δεν γίνει σωστά, το σύστημα γίνεται δυσχρηστο και δεν κλιμακώνεται. Αν όμως έχεις μια ξεκάθαρη περιγραφή, μπορείς να τη μοιραστείς με την ομάδα και να δείν