Ας πούμε ότι μια παραγγελία πρέπει να ενημερώνει ένα δεύτερο σύστημα. Η σύνδεση λειτουργεί στη δοκιμή, αλλά στην πράξη το δεύτερο σύστημα μπορεί να καθυστερήσει, να επιστρέψει σφάλμα ή να λάβει το ίδιο μήνυμα δύο φορές. Αν δεν έχουμε αποφασίσει τι θα γίνει τότε, η αυτοματοποίηση απλώς μεταφέρει τη χειροκίνητη δουλειά σε ένα σημείο που είναι πιο δύσκολο να παρακολουθήσουμε.
Συμφωνήστε ποιο σύστημα κρατά την αλήθεια
Πριν γραφτεί η σύνδεση, καταγράψτε ποια πεδία μεταφέρονται, προς ποια κατεύθυνση και ποιο σύστημα θεωρείται έγκυρο όταν τα δεδομένα διαφέρουν. Αν η παραγγελία ακυρωθεί, ποιος ενημερώνει ποιον; Αν αλλάξει ένα email και στα δύο συστήματα, ποιο υπερισχύει; Οι απαντήσεις αποτρέπουν διπλές εγγραφές και διαφωνίες που δεν λύνονται με περισσότερο κώδικα.
Περιορίστε την πρόσβαση στο απαραίτητο
Μια σύνδεση δεν χρειάζεται γενική πρόσβαση σε ολόκληρο τον λογαριασμό για να διαβάσει ένα συγκεκριμένο πεδίο. Ζητήστε μόνο τα δικαιώματα της λειτουργίας, κρατήστε τους μυστικούς κωδικούς εκτός του προγράμματος περιήγησης και του δημόσιου κώδικα και ορίστε ποιος τους ανανεώνει ή τους ανακαλεί. Το OWASP API Security Project είναι χρήσιμο σημείο αναφοράς για τον έλεγχο κινδύνων, αλλά η ακριβής ρύθμιση εξαρτάται από το κάθε σύστημα.
Αντιμετωπίστε την επανάληψη ως κανονικό σενάριο
Μια αυτόματη ειδοποίηση από το άλλο σύστημα μπορεί να σταλεί ξανά. Ελέγξτε ότι προέρχεται από την αναμενόμενη υπηρεσία και χρησιμοποιήστε τον μοναδικό αριθμό της ώστε η ίδια παραγγελία να μη δημιουργηθεί δύο φορές. Ξεχωρίστε επίσης το «παραλάβαμε το αίτημα» από το «ολοκληρώθηκε η ενέργεια». Μια απάντηση ότι η μεταφορά έγινε δεκτή δεν πρέπει να κρύβει αποτυχία στη μετέπειτα επεξεργασία.
Δείξτε καθαρά πότε χρειάζεται άνθρωπος
Ορίστε πόσο θα περιμένει το σύστημα απάντηση και πόσες φορές θα δοκιμάσει ξανά. Μετά από επαναλαμβανόμενη αποτυχία, το πρόβλημα πρέπει να παραμένει ορατό για έλεγχο, με αρκετές πληροφορίες ώστε να μπορεί κάποιος να συνεχίσει με ασφάλεια. Δοκιμάστε τη ροή και όταν η άλλη υπηρεσία είναι εκτός λειτουργίας. Μια αξιόπιστη σύνδεση δεν είναι εκείνη που δεν αποτυγχάνει ποτέ· είναι εκείνη της οποίας η αποτυχία γίνεται αντιληπτή και μπορεί να διορθωθεί χωρίς να χαθούν δεδομένα.
Συχνές ερωτήσεις
Ποιο είναι το πρώτο βήμα πριν από ένα integration;
Η καταγραφή της ροής δεδομένων, της πηγής αλήθειας, των απαιτούμενων δικαιωμάτων και της συμπεριφοράς όταν το εξωτερικό σύστημα αποτυγχάνει.
Γιατί χρειάζεται idempotency στα webhooks;
Επειδή το ίδιο συμβάν μπορεί να παραδοθεί ξανά. Ο ασφαλής χειρισμός αποτρέπει διπλές χρεώσεις, εγγραφές ή άλλες επαναλαμβανόμενες ενέργειες.

