Η διαφορά έγκειται κυρίως στο χρονοδιάγραμμα
Μια συντακτική ομάδα δημοσιεύει ένα αναθεωρημένο κέντρο συμβουλευτικής στις 10:14 π.μ. Ο ιστότοπος πρέπει να εμφανίσει αμέσως τον νέο αριθμό τηλεφώνου, μια μηχανή αναζήτησης στην πύλη πρέπει να ενημερώσει το ευρετήριό της και μια κατανοητή γλωσσική έκδοση θα απαιτήσει μια επαγγελματική αναθεώρηση αργότερα. Αυτές οι συνέπειες εμπίπτουν όλες στην ίδια αλλαγή, αλλά δεν χρειάζεται να υποβληθούν όλες σε επεξεργασία ταυτόχρονα.
Ένα webhook είναι ένα μήνυμα που ένα σύστημα στέλνει σε ένα άλλο αμέσως μετά από ένα συμβάν. Για παράδειγμα, το σύστημα διαχείρισης περιεχομένου αναφέρει: "Αυτή η σελίδα έχει δημοσιευτεί". Το σύστημα λήψης μπορεί στη συνέχεια να ανακτήσει και να επεξεργαστεί με ακρίβεια αυτό το περιεχόμενο. Δεν περιμένει την επόμενη γενική εκτέλεση ούτε ελέγχει συνεχώς για νέες αλλαγές.
Η μαζική επεξεργασία περιλαμβάνει τη συλλογή και εκτέλεση πολλαπλών εργασιών μαζί. Για παράδειγμα, κάθε βράδυ, όλες οι σελίδες που άλλαξαν εκείνη την ημέρα μπορούν να εξεταστούν για μια αναφορά. Μια τέτοια εκτέλεση δεν είναι στιγμιαία, αλλά σχεδιάζεται εύκολα. Μπορεί να επεξεργαστεί μεγάλες ποσότητες διαδοχικά και να παρέχει τα αποτελέσματα ως μια συνεκτική επισκόπηση. Η επεξεργασία ακολουθεί μια γνωστή αρχή και ένα καθορισμένο τέλος.
Τα webhook είναι κατάλληλα για συγκεκριμένα, σημαντικά συμβάντα.
Τα webhook είναι χρήσιμα όταν μια έγκαιρη απόκριση προσφέρει ένα σαφές πλεονέκτημα. Μετά τη δημοσίευση ενός μηνύματος προειδοποίησης, η εφαρμογή θα πρέπει να λαμβάνει το ίδιο ενημερωμένο περιεχόμενο. Μετά την απόσυρση μιας σελίδας, θα πρέπει να εξαφανίζεται από τα εσωτερικά αποτελέσματα αναζήτησης. Το μήνυμα ενεργοποιείται από μια συγκεκριμένη ενέργεια και σχετίζεται με σαφώς καθορισμένο περιεχόμενο.
Για την ομάδα σύνταξης, αυτή η διαδικασία φαίνεται άμεση. Εγκρίνουν μια ανάρτηση και βλέπουν τη νέα έκδοση στο συνδεδεμένο κανάλι λίγο αργότερα. Ωστόσο, αυτή η ταχύτητα δεν πρέπει να συγχέεται με την εγγυημένη ταυτόχρονη επεξεργασία. Σφάλματα δικτύου, συντήρηση ή ένας απασχολημένος διακομιστής μπορούν να καθυστερήσουν την επεξεργασία. Το σύστημα πρέπει να είναι σε θέση να αντέχει σε τέτοιες διακοπές.
Δεν θα πρέπει κάθε αποθηκευμένη αλλαγή να ενεργοποιεί ένα webhook. Ένα αυτόματα αποθηκευμένο προσχέδιο δεν είναι ακόμη σχετικό με τη δημόσια αναζήτηση. Τα σημαντικά συμβάντα βασίζονται στην ορατή τους σημασία: δημοσιεύτηκαν, ενημερώθηκαν ουσιαστικά, αποσύρθηκαν ή διαγράφηκαν. Αυτό μειώνει τον αριθμό των ειδοποιήσεων που λαμβάνουν τα συνδεδεμένα συστήματα και τους επιτρέπει να χειρίζονται τις σημαντικές αλλαγές κατάστασης με μεγαλύτερη σαφήνεια. Οι εσωτερικές διορθώσεις τυπογραφικών λαθών μπορούν να αντιμετωπιστούν διαφορετικά από τις νέες πληροφορίες, εάν είναι απαραίτητο.
Η μαζική επεξεργασία είναι κατάλληλη για μεγάλους όγκους και σταθερά χρονοδιαγράμματα.
Μια μεγαλύτερη εκτέλεση είναι κατάλληλη όταν πολλά κομμάτια περιεχομένου επεξεργάζονται σύμφωνα με τους ίδιους κανόνες. Ένας οργανισμός μπορεί να θέλει να ελέγχει όλες τις δημοσιευμένες σελίδες για ημερομηνίες αναθεώρησης που λείπουν κάθε βράδυ. Το αν το αποτέλεσμα είναι διαθέσιμο στις 2:00 π.μ. ή στις 2:20 π.μ. δεν έχει μεγάλη διαφορά για τους αναγνώστες. Η αποστολή άμεσης ειδοποίησης μετά από κάθε μικρή επεξεργασία θα ήταν άσκοπα απαιτητική σε πόρους.
Μια πλήρης ανακατασκευή μπορεί επίσης να πραγματοποιηθεί σκόπιμα σε παρτίδες. Μετά από μια αλλαγή στο σύστημα αναζήτησης, ενδέχεται να χρειαστεί να σαρωθούν ξανά έως και 80.000 σελίδες. Τα μεμονωμένα webhooks δεν θα αντιπροσωπεύουν αξιόπιστα ολόκληρο το απόθεμα, επειδή θα επηρεαστεί και το αμετάβλητο περιεχόμενο. Μια μαζική εκτέλεση ξεκινά με έναν γνωστό αριθμό σελίδων και εγγράφων, οι σελίδες των οποίων υποβλήθηκαν σε επιτυχή επεξεργασία.
Ένας σταθερός χρόνος διευκολύνει τον προγραμματισμό φόρτωσης. Οι περιγραφές εικόνων, τα προσχέδια μετάφρασης ή οι εκτεταμένοι έλεγχοι ποιότητας απαιτούν χρόνο επεξεργασίας και εξωτερικές υπηρεσίες. Μια νυχτερινή εκτέλεση μπορεί να περιορίσει αυτόν τον φόρτο εργασίας χωρίς να επιβραδύνει τη δημοσίευση στο σύστημα διαχείρισης περιεχομένου. Αυτό καθιστά τη διάρκειά του πιο προβλέψιμη τόσο για τον χειριστή όσο και για τους παρόχους υπηρεσιών. Το επείγον περιεχόμενο εξακολουθεί να χρειάζεται μια ταχύτερη διαδρομή εάν μια μακρά αναμονή θα οδηγούσε σε ανακριβείς πληροφορίες.
Η επιτρεπόμενη καθυστέρηση είναι η κύρια παράμετρος.
Το πιο σημαντικό ερώτημα είναι: Για πόσο καιρό μπορεί το συνδεδεμένο σύστημα να εμφανίζει μια ξεπερασμένη έκδοση; Σε περίπτωση προειδοποίησης για σοβαρά καιρικά φαινόμενα, τα λεπτά μπορεί να είναι κρίσιμα. Για μια μηνιαία ανάλυση ποιότητας κειμένου, μία ημέρα είναι συνήθως χωρίς προβλήματα. Ένα σαφές χρονικό πλαίσιο είναι πιο χρήσιμο από τη γενική απαίτηση ότι κάθε διαδικασία πρέπει να είναι όσο το δυνατόν πιο γρήγορη.
Στη συνέχεια, το εύρος μιας τυπικής αλλαγής είναι κρίσιμο. Εάν συνήθως δημοσιεύεται μόνο μία σελίδα, ένα webhook μπορεί να καθορίσει αυτήν ακριβώς τη σελίδα. Εάν ολόκληρες βάσεις δεδομένων αλλάζουν τακτικά, μια προγραμματισμένη εκτέλεση είναι πιο διαχειρίσιμη. Η εισαγωγή νέων ιστότοπων με 4.000 καταχωρήσεις δεν θα πρέπει να ενεργοποιεί ανεξέλεγκτα 4.000 ταυτόχρονες διαδικασίες παρακολούθησης.
Οι συνέπειες μιας διακοπής αποτελούν επίσης μέρος της απόφασης. Εάν χαθεί ένα μήνυμα, ένας παρωχημένος αριθμός τηλεφώνου μπορεί να παραμείνει στην εφαρμογή. Εάν μια νυχτερινή αναφορά αποτύχει, η συντακτική ομάδα μπορεί να την επανεκκινήσει το πρωί. Η αποδεκτή καθυστέρηση θα πρέπει να συμφωνηθεί ρητά για κάθε συνδεδεμένο κανάλι. Όσο μεγαλύτερη είναι η άμεση ζημιά, τόσο πιο σημαντικές γίνονται οι γρήγορες επαναλήψεις, οι ορατές προειδοποιήσεις και ένας επιπλέον έλεγχος ολόκληρου του αρχείου.
Ένα μήνυμα webhook παραμένει μικρό και σαφές.
Ένα καλό μήνυμα αναφέρει τι συνέβη, ποιο περιεχόμενο αφορά και πότε συνέβη το συμβάν. Περιλαμβάνει επίσης έναν μοναδικό αριθμό συμβάντος και την έκδοση της μορφής του μηνύματος. Το σύστημα λήψης μπορεί στη συνέχεια να ανακτήσει τα πλήρη, ενημερωμένα δεδομένα μέσω μιας ασφαλούς διεπαφής. Αυτό διατηρεί το μήνυμα διαχειρίσιμο και αποφεύγει την άσκοπη συμπερίληψη ολόκληρου του άρθρου.
Αυτή η προσέγγιση αποτρέπει επίσης τη διανομή ενός παρωχημένου κειμένου από ένα καθυστερημένο μήνυμα. Ας υποθέσουμε ότι μια συντακτική ομάδα διορθώνει τον ίδιο αριθμό τηλεφώνου δύο φορές σε γρήγορη διαδοχή. Το πρώτο μήνυμα φτάνει αργότερα από το δεύτερο λόγω τεχνικού προβλήματος. Εάν ο παραλήπτης ελέγξει για την πιο πρόσφατη έκδοση, εξακολουθεί να λαμβάνει την πιο πρόσφατα εγκεκριμένη έκδοση και όχι το περιεχόμενο του καθυστερημένου μηνύματος.
Δεν πρέπει να περιλαμβάνονται άσκοπα προσωπικές ή εμπιστευτικές πληροφορίες στα μηνύματα. Τα αρχεία καταγραφής, οι αναφορές σφαλμάτων και οι διεπαφές διαχείρισης συχνά αποθηκεύουν δεδομένα webhook για μεγάλα χρονικά διαστήματα. Σε πολλές περιπτώσεις, ένα αναγνωριστικό περιεχομένου και ο τύπος συμβάντος είναι επαρκή. Ο εξουσιοδοτημένος παραλήπτης ανακτά περαιτέρω πληροφορίες μόνο όταν χρειάζεται πραγματικά να τις επεξεργαστεί. Αυτό διατηρεί επίσης τις αναφορές τεχνικών σφαλμάτων απαλλαγμένες από περιττές τεχνικές λεπτομέρειες.
Τα επαναλαμβανόμενα μηνύματα είναι συνηθισμένα.
Εάν ο παραλήπτης δεν επιβεβαιώσει την παραλαβή ενός μηνύματος, το σύστημα αποστολής το στέλνει ξανά. Το πρώτο μήνυμα μπορεί να έχει ήδη υποβληθεί σε επεξεργασία, αλλά η επιβεβαίωσή του χάθηκε. Επομένως, ο παραλήπτης πρέπει να είναι σε θέση να αποδεχτεί το ίδιο συμβάν πολλές φορές χωρίς να δημοσιεύσει την ίδια ανάρτηση δύο φορές ή να παραγγείλει την ίδια μετάφραση δύο φορές.
Ο μοναδικός αριθμός συμβάντος βοηθά σε αυτό. Εάν αυτός ο αριθμός έχει ήδη υποβληθεί σε επεξεργασία με επιτυχία, το σύστημα μπορεί να επιβεβαιώσει και να παραλείψει την επανάληψη. Αυτό είναι πιο αξιόπιστο από τη σύγκριση χρόνων ή τίτλων. Δύο διαφορετικές αλλαγές μπορούν να συμβούν σχεδόν ταυτόχρονα και ένας τίτλος μπορεί να αλλάξει παρόλο που το περιεχόμενο παραμένει το ίδιο.
Ακόμα και η παραγγελία δεν είναι πάντα αξιόπιστη. Μια ειδοποίηση σχετικά με τη δημοσίευση μπορεί να φτάσει μετά από μια ειδοποίηση σχετικά με μια μεταγενέστερη διόρθωση. Οι αριθμοί έκδοσης ή η τρέχουσα ημερομηνία πρόσβασης του περιεχομένου εμποδίζουν την παλαιότερη έκδοση να έχει προτεραιότητα. Για τις συντακτικές ομάδες, αυτό σημαίνει: Η ορατή έκδοση πρέπει να είναι σωστή, ακόμη και αν τα τεχνικά μηνύματα ακολουθούν μια κάπως ακανόνιστη διαδρομή. Η ημερομηνία παραλαβής από μόνη της δεν θα πρέπει επομένως να καθορίζει την έγκυρη έκδοση.
Ο παραλήπτης πρέπει να επαληθεύσει την προέλευση.
Μια δημόσια προσβάσιμη διεύθυνση webhook μπορεί, κατ' αρχήν, να προσπελαστεί και από μη εξουσιοδοτημένα μέρη. Ο παραλήπτης δεν θα πρέπει επομένως να εμπιστεύεται ένα μήνυμα απλώς και μόνο επειδή φτάνει στην αναμενόμενη διαδρομή. Μια ψηφιακή υπογραφή, που υπολογίζεται από το περιεχόμενο και ένα κοινόχρηστο μυστικό κλειδί, είναι συνήθης πρακτική. Ο παραλήπτης την υπολογίζει ξανά και συγκρίνει τις δύο τιμές.
Η μετάδοση πραγματοποιείται μέσω HTTPS για την προστασία του περιεχομένου και την πρόσβαση σε δεδομένα κατά τη μεταφορά. Το μυστικό κλειδί δεν ανήκει στον πηγαίο κώδικα, τη δημόσια τεκμηρίωση ή το σώμα του μηνύματος. Αποθηκεύεται με ασφάλεια, καθίσταται προσβάσιμο μόνο στις απαραίτητες υπηρεσίες και ανανεώνεται τακτικά. Τα παλιά κλειδιά πρέπει να ακυρώνονται μετά από μια ελεγχόμενη μετάβαση.
Μια χρονική σήμανση περιορίζει περαιτέρω το χρονικό διάστημα αποδοχής ενός σωστά υπογεγραμμένου μηνύματος. Αυτό αποτρέπει την αυθαίρετη επανάληψη ενός καταγεγραμμένου αιτήματος αργότερα. Οι απαντήσεις σφάλματος δεν πρέπει να αποκαλύπτουν εσωτερικές λεπτομέρειες στους εισβολείς. Ωστόσο, διατηρούνται αρκετές πληροφορίες ώστε η ομάδα να διερευνήσει συγκεκριμένα μια απορριφθείσα υπογραφή ή μια παρωχημένη μορφή μηνύματος. Οι ύποπτες προσπάθειες πρόσβασης περιορίζονται και καταγράφονται με ιχνηλάσιμο τρόπο για ελέγχους ασφαλείας. Ισχύουν κατάλληλες και σαφώς τεκμηριωμένες περίοδοι διατήρησης.
Μια μεγάλη εκτέλεση απαιτεί ιχνηλάσιμη κατάσταση.
Με 20.000 σελίδες, μια εκτέλεση σπάνια είναι πλήρως επιτυχημένη ή εντελώς ανεπιτυχής. Κάποιο περιεχόμενο μπορεί να περιέχει μη έγκυρες πληροφορίες, ενώ το υπόλοιπο υποβάλλεται σε σωστή επεξεργασία. Η διαδικασία θα πρέπει επομένως να καταγράφει για κάθε καταχώρηση τι ήταν επιτυχές και τι πρέπει να επαναληφθεί. Μια μεμονωμένη ελαττωματική σελίδα δεν πρέπει να μπλοκάρει όλες τις επόμενες σελίδες.
Πρέπει να ληφθούν υπόψη οι περιορισμοί των εξωτερικών υπηρεσιών. Μια διεπαφή μπορεί να επιτρέπει μόνο έναν ορισμένο αριθμό αιτημάτων ανά λεπτό. Στη συνέχεια, η διαδικασία διαιρεί τον τόμο σε διαχειρίσιμα τμήματα και συνεχίζει μετά από μια παύση. Αποθηκεύει την πρόοδό της, ώστε να μην ξεκινήσει ξανά μια επανεκκίνηση από την πρώτη σελίδα και να επαναληφθεί άσκοπα η εργασία για την οποία έχει ήδη πληρωθεί.
Για την ομάδα σύνταξης, ένα σαφές και συνοπτικό αποτέλεσμα είναι πιο σημαντικό από ένα μακροσκελές αρχείο τεχνικού καταγραφής. Πρέπει να είναι σε θέση να δουν ποια εκτέλεση επηρεάζεται, πόσο περιεχόμενο είναι πλήρες και ποιες σελίδες απαιτούν τεχνική βοήθεια. Ένα μήνυμα όπως "37 σφάλματα" δεν αρκεί. Η αντιστοίχιση του σφάλματος στον τίτλο της σελίδας, τη διεύθυνση και τον συγκεκριμένο λόγο το μετατρέπει σε μια διαχειρίσιμη εργασία. Οι επιτυχημένες επαναλήψεις εξαφανίζονται στη συνέχεια από την ανοιχτή προβολή σύνταξης.
Συχνά, μια προγραμματισμένη εκτέλεση συμπληρώνει τα webhooks.
Τα webhooks και η μαζική επεξεργασία δεν αλληλοαποκλείονται. Μια πύλη ειδήσεων μπορεί να αναφέρει αμέσως νέα άρθρα στη λειτουργία αναζήτησής της και να συγχρονίσει ολόκληρο το αρχείο όλη τη νύχτα. Αυτή η ταχύτερη προσέγγιση διατηρεί τις σημαντικές αλλαγές ενημερωμένες. Η προγραμματισμένη εκτέλεση εντοπίζει συμβάντα που λείπουν λόγω δυσλειτουργίας, εσφαλμένης ρύθμισης ή προσωρινά εκτός σύνδεσης διακομιστή.
Μια σαφής και συνοπτική γραπτή έκδοση μπορεί επίσης να απαιτεί και τις δύο προσεγγίσεις. Εάν τροποποιηθεί μια εξειδικευμένη σελίδα, το webhook δημιουργεί αμέσως μια εργασία για την υπεύθυνη συντακτική ομάδα. Η αναθεωρημένη έκδοση δεν αντικαθίσταται αυτόματα. Μια ημερήσια αναφορά εμφανίζει επιπλέον όλες τις ανοιχτές εργασίες, τις προθεσμίες τους και το περιεχόμενο για το οποίο λείπει η σύνδεση με τη σελίδα προέλευσης.
Μια σαφής πηγή για την έγκυρη κατάσταση είναι ζωτικής σημασίας. Ένα webhook αναφέρει μια αλλαγή και ο τακτικός συγχρονισμός επιβεβαιώνει την τρέχουσα κατάσταση. Εάν και τα δύο παρέχουν διαφορετικές πληροφορίες, η πιο πρόσφατα εκτελεσμένη διεργασία δεν πρέπει να υπερισχύει κατά λάθος. Το σύστημα δημοσίευσης παραμένει έγκυρο και τα συνδεδεμένα συστήματα συγχρονίζουν την κατάστασή τους με αυτό. Αυτός ο κανόνας πρέπει να παραμένει σαφώς τεκμηριωμένος ακόμη και μετά από μια αλλαγή συστήματος.
Η λειτουργία πρέπει να παραμένει κατανοητή για τους χρήστες.
Η τεχνική αξιοπιστία αποδεικνύεται από τις ορατές πληροφορίες. Οι ομάδες θα πρέπει να γνωρίζουν πόσο χρόνο διαρκεί συνήθως μια μετάδοση και πότε αναφέρεται μια καθυστέρηση. Μια προειδοποίηση καθορίζει το επηρεαζόμενο κανάλι και το περιεχόμενο, όχι μόνο ένα εσωτερικό όνομα διεργασίας. Αυτό επιτρέπει στην συντακτική ομάδα να αξιολογήσει εάν οι επισκέπτες βλέπουν αυτήν τη στιγμή μια ξεπερασμένη έκδοση.
Κάθε διεργασία απαιτεί ένα υπεύθυνο μέρος. Μπορεί να στείλει ξανά ένα μήνυμα που έχει κολλήσει, να συνεχίσει μια μαζική εκτέλεση ή να διακόψει μια εσφαλμένη δημοσίευση. Ταυτόχρονα, πρέπει να είναι σαφές πότε απαιτείται η ευθύνη του ειδικού. Μια τεχνική ομάδα μπορεί να μεταφέρει ένα αρχείο, αλλά δεν μπορεί να αποφασίσει εάν μια τροποποιημένη συνθήκη αξίωσης έχει εξηγηθεί σωστά.
Η κατάλληλη λύση προκύπτει επομένως από το περιεχόμενο, τον χρόνο και την πιθανή ζημιά. Τα webhook αντιδρούν γρήγορα σε μεμονωμένα συμβάντα. Οι μαζικές εκτελέσεις επεξεργάζονται προβλέψιμους όγκους και συμφωνούν τα αποθέματα. Μαζί, καλύπτουν τις τρέχουσες αλλαγές και διασφαλίζουν την πληρότητα του αποθέματος. Εάν οι επαναλήψεις, η ασφάλεια και τα κατανοητά μηνύματα ληφθούν υπόψη από την αρχή, οι συνδεδεμένοι ιστότοποι και οι υπηρεσίες παραμένουν ενημερωμένες χωρίς να επιβαρύνουν την καθημερινή εργασία της συντακτικής ομάδας με περιττή τεχνολογία.