Εγκατάσταση σε μηδενικό χρόνο
(Τμήμα: Αρχιτεκτονική και Πρωτόκολλα)
1) Τι είναι μηδέν-downtime και γιατί είναι απαραίτητη
Το Zero-Downtime (ZDT) είναι ένας τρόπος για να κυκλοφορήσει νέες εκδόσεις μιας εφαρμογής χωρίς η υπηρεσία να είναι μη διαθέσιμη στους χρήστες και χωρίς να χάνει αιτήματα. Στόχοι:- Μηδενικός χρόνος διακοπής για τους πελάτες και τις ενοποιήσεις.
- Προβλέψιμες εκλύσεις, γρήγορες ανατροπές και διαχειρίσιμος κίνδυνος.
- Διατήρηση της SLO/SLI (καθυστέρηση, σφάλματα, διαθεσιμότητα) εντός των ορίων των συμφωνιών.
Το κλειδί για την ZDT δεν είναι μια «μαγική» τεχνική, αλλά ένας συνδυασμός των προτύπων παράδοσης, συμβατότητα δεδομένων και αρμόδια δρομολόγηση της κυκλοφορίας.
2) Βασικές αρχές μηδενικού χρόνου πτώσης
1. Συμβατότητα έκδοσης: Οι νέες και παλαιές εκδόσεις πρέπει να χειρίζονται σωστά την κίνηση και τα δεδομένα ταυτόχρονα.
2. Ιδιαιτερότητα των εργασιών: η επανεπεξεργασία δεν πρέπει να σπάσει την κατάσταση.
3. Χαριτωμένο κλείσιμο και αποχέτευση σύνδεσης.
4. Βήμα προς βήμα έλεγχος υγείας: δοκιμές ετοιμότητας/ζωντάνιας, τελικά σημεία υγείας.
5. Rollback ως πολίτης πρώτης κατηγορίας: η rollback είναι ευκολότερη και ταχύτερη από το hotfix.
6. Παρατηρησιμότητα κατά σχεδιασμό: σήματα απελευθέρωσης, πίνακες ενός ταμπλό, προειδοποιήσεις SLO.
7. Αυτοματοποίηση: Τα σενάρια απελευθέρωσης και ανατροπής είναι κωδικός, όχι χειροκίνητες οδηγίες.
3) Πρότυπα παράδοσης χωρίς μείωση χρόνου
3. 1 Επικαιροποίηση κύλισης
Σταδιακά αφαιρέστε μέρος των περιπτώσεων της παλιάς έκδοσης από την κυκλοφορία, ενημερώστε τα στο νέο και επιστρέψτε τα στην πισίνα.
Πλεονεκτήματα: οικονομικά στις υποδομές, μόνο στην k8s/ASG.
Cons: για κάποιο χρονικό διάστημα το σύμπλεγμα λειτουργεί με δύο εκδόσεις ταυτόχρονα (έκδοση skew).
3. 2 Γαλάζιο-πράσινο
Δύο πλήρεις προτάσεις: ενεργό (μπλε) και υποψήφια (πράσινο). Αλλαγή κυκλοφορίας - ατομική ανατροπή.
Pros: άμεση ανατροπή, καθαρή απομόνωση.
Κατά: ↑ κόστος υποδομής, δυσκολότερο με το stateful.
3. 3 Κανάρια/Προοδευτική ανάπτυξη
Δίνουμε ένα μικρό μερίδιο της κυκλοφορίας (1-5-10-25-50-100%) στη νέα έκδοση με πύλες με μετρήσεις.
Πλεονεκτήματα: ελάχιστη ακτίνα έκρηξης, λύσεις βασισμένες σε δεδομένα.
Κατά: Χρειάζεται ώριμη παρατηρησιμότητα και ευφυής δρομολόγηση.
3. 4 Σκιώδης/Σκοτεινή εκτόξευση
Αντανάκλαση πραγματικών αιτημάτων στη νέα έκδοση (χωρίς απάντηση στο χρήστη) ή εκτόξευση κρυμμένων για τη συλλογή μετρήσεων.
Υπέρ: Έγκαιρος εντοπισμός των προβλημάτων.
Κατά: διπλή φόρτιση σε εθισμούς, πρέπει να ελέγχετε τις παρενέργειες.
4) Διαχείριση κυκλοφορίας και σύνδεσης
4. 1 Ετοιμότητα/Ζωντάνια
Η Ζωντανότητα λέει στον ενορχηστρωτή να «με ξαναρχίσει».
Ετοιμότητα - «μην κατευθύνετε την κίνηση, δεν είμαι έτοιμος ακόμα».
Αδύνατη η απελευθέρωση χωρίς σωστή λογική ετοιμότητας και χρονοδιαγράμματα.
4. Αποστράγγιση σύνδεσης 2
Πριν αφαιρέσετε ένα παράδειγμα από την κοινοπραξία:- να πάψουν να δέχονται νέες συνδέσεις,
- αναμονή της ολοκλήρωσης της δραστηριότητας,
- διακόπτει το «κρεμασμένο» timeout.
4. 3 Κολλώδεις συνεδρίες και δρομολόγηση L7
Το Sticky είναι χρήσιμο για σενάρια, αλλά περιπλέκει το ισοζύγιο φορτίου.
Οι κανόνες L7 (διαδρομή, κεφαλίδα, cookie, εκδόσεις API) είναι βολικό για καναρίνι/δαχτυλίδι.
4. 4 Μακροχρόνιες συνδέσεις
WebSocket/gRPC streaming: ενεργοποιήστε τη λειτουργία αποχέτευσης + σήμα «GOAWAY» πριν την ενημέρωση.
Σχεδίαση παραθύρων για την υπέρβαση ροών και πελατών backhoe.
5) Συμβατότητα δεδομένων και μετάβαση στη βάση δεδομένων
5. 1 Σύμβαση επέκτασης-μετανάστευσης
1. Επέκταση: προσθήκη νέων στηλών/δεικτών/πινάκων χωρίς παραβίαση της παλαιάς έκδοσης.
2. Μετανάστευση: μεταφέρουμε δεδομένα στο παρασκήνιο και ταυτοχρόνως (παρτίδες, σημεία ελέγχου).
3. Σύμβαση: διαγραφή του παλαιού μόνο μετά τη σταθεροποίηση.
5. 2 Πρακτικές
Αποφύγετε αποκλειστικές κλειδαριές DDL στο παράθυρο απελευθέρωσης.
Έκδοση συμβάσεων API/συμβάντων (μητρώο σχημάτων, CDC).
Για μεγάλες μεταναστεύσεις - επιγραμμικά εργαλεία, αντίγραφα, σταδιακή αλλαγή.
Διπλή γραφή μόνο με απεμπλοκή και ευφυείς καταναλωτές.
Outbox/Inbox για αξιόπιστη ενσωμάτωση μέσω ουρών αναμονής.
6) Κρύπτες, σύνοδοι και θέσεις εργασίας στο παρελθόν
Οι συνεδρίες και η κρύπτη είναι εξωτερικές (Redis/Memcached) έτσι ώστε οι εκδόσεις να είναι εναλλάξιμες.
Προθέρμανση των δεικτών cache/jits/tempo πριν από τη συγκέντρωση.
Διαχωρίστε τις ουρές φόντου με έκδοση ή χρησιμοποιήστε την ηγεσία για να αποφύγετε τους αγώνες.
7) Παρατηρησιμότητα και πύλες SLO
Χρυσά σήματα: p95/p99 καθυστέρηση, ρυθμός σφάλματος, RPS, κορεσμός, καθυστέρηση αναμονής.
Business SLA: άδειες, μετατροπές, επιτυχείς πληρωμές, άρνηση ανά στάδιο χοάνης.
Πύλες: η ανάπτυξη προωθείται μόνο εάν τα καναρίνια ≤ βάση + όρια υποβάθμισης, και ο προϋπολογισμός σφάλματος δεν καίγεται.
8) Ασφαλής ολοκλήρωση και ανατροπή
Το Rollback είναι ο ίδιος αγωγός, μόνο προς την αντίθετη κατεύθυνση: σταθερές εντολές, όχι «χειροκίνητα κραφτ».
Για γαλάζιο-πράσινο - αναποδογυρίστε. για τα καναρίνια - απώλεια βάρους έως 0% ή προηγούμενο σταθερό βήμα.
Στοιχεία: συμψηφισμός συναλλαγών, επανεπεξεργασία, απεμπλοκή γεγονότων.
9) Κατάλογοι ελέγχου μηδενικού χρόνου
Πριν την απελευθέρωση
- Συλλέγονται ένα υπογεγραμμένο τεχνούργημα (αμετάβλητο), SBOM και έλεγχος εξάρτησης.
- Εφαρμογή και δοκιμή ετοιμότητας/ζωντάνιας.
- Σχέδιο μετανάστευσης σε κατάσταση επέκτασης, επιβεβαιωμένη η αναστρεψιμότητα.
- Τα ταμπλό και οι προειδοποιήσεις για τη νέα έκδοση είναι έτοιμες, ρίχνονται σημάδια απελευθέρωσης.
- Rollback checked for stage/pre-prod.
Κατά τη στιγμή της απελευθέρωσης
- Η αποχέτευση σύνδεσης είναι ενεργοποιημένη, τα χρονοδιαγράμματα είναι επαρκή.
- Κυκλοφορία είναι καναρίνι/δακτύλιος ή flip (μπλε-πράσινο).
- Οι μετρήσεις συγκρίνονται με τη γραμμή βάσης, και τηρούνται τα κατώτατα όρια πύλης.
Μετά την απελευθέρωση
- Μετά την παρακολούθηση N ώρες, χωρίς συμβάντα.
- Ολοκληρωμένες συμβατικές μεταναστεύσεις, αφαίρεση προσωρινών σημαιών/διαδρομών.
- Αναδρομική, ενημέρωση του playbook.
10) Αντι-μοτίβα
Αναδημιουργία χωρίς αποστράγγιση και ετοιμότητα ⇒ διακοπή αιτήσεων.
Απροετοίμαστο DDL ⇒ κλειδαριές και χρονοδιαγράμματα στον πρώτο χρόνο.
Ανάμειξη ασύμβατων συστημάτων μεταξύ εκδόσεων υπηρεσιών.
Έλλειψη ευελιξίας στους χειριστές και τους εργαζομένους.
«Roll out by feel» χωρίς πύλες και σύγκριση με τη γραμμή βάσης.
Το Long DNS- TTL με μπλε-πράσινο, γι 'αυτό το flip διαρκεί ώρες.
Τοπικές συνεδρίες/κρυφή μνήμη με κύλιση/καναρίνι.
11) Σενάρια εφαρμογής
11. 1 Kubernetes (κύλιση + καναρίνι)
Εγκατάσταση с 'maxUnailable = 0', 'maxSurge = 25%'.
Η ετοιμότητα περιμένει προθέρμανση (αρχικοποίηση της μνήμης, ελάσσονος σημασίας μετανάστευση).
Πλέγμα υπηρεσίας/Είσοδος με σταθμισμένη διαδρομή (1-5-10-25-50-100%).
Ειδοποιήσεις: p95, 5xx, καθυστέρηση στη σειρά αναμονής, επιχειρηματική χοάνη.
11. 2 Γαλάζιο-πράσινο στο νέφος
Δύο στοίβες πίσω από τον ισορροπητή: 'μπλε. παράδειγμα. com 'и' πράσινο. παράδειγμα. com '.
Προθέρμανση πράσινου, καπνός/οπισθοδρόμηση, στη συνέχεια ανταλλαγή ακροατών/διαδρομής (ή διακόπτης DNS με χαμηλή TTL).
Σε περίπτωση προβλήματος- αμέσως αναποδογυρίστε.
11. 3 Κρατική υπηρεσία
αντίγραφα δεδομένων + διαδικτυακές μεταναστεύσεις· διπλή ανάγνωση με επικύρωση.
Παρασκήνια εκτελούνται από την έκδοση «ηγεσία» ή διαιρεμένες ουρές αναμονής.
Σύνοδοι/κρυφή μνήμη εκτός της περίπτωσης· το κολλώδες είναι μόνο προσωρινά ενεργοποιημένο.
12) Ficheflags και εφαρμογές πελατών
Τα νέα χαρακτηριστικά ενεργοποιούνται με σημαίες (τμήματα: εργαζόμενοι → βήτα → όλοι).
Για τους πελάτες κινητών/επιτραπέζιων υπολογιστών, εξετάστε τα όρια συμβατότητας πρωτοκόλλου και την κληρονομημένη πολιτική υποβάθμισης (εφεδρική γραμμή εξυπηρετητή).
13) Επιδόσεις και κόστος
Η κίνηση είναι φθηνότερη, αλλά απαιτεί προσεκτική συμβατότητα.
Το μπλε-πράσινο είναι πιο ακριβό κατά τη στιγμή της απελευθέρωσης, αλλά η ανατροπή είναι άμεση.
Τα Κανάρια ισοσκελίζουν τον κίνδυνο και το κόστος, αλλά απαιτούν ισχυρή παρατηρησιμότητα.
Αποθήκευση μέσω εφήμερων προεπισκοπήσεων και περίπτερα αυτόματου καθαρισμού.
14) Ελάχιστος αγωγός αναφοράς ZDT
1. Κατασκευή: ενιαίο τεχνούργημα, υπογραφή, SBOM.
2. Δοκιμή: μονάδα/ενσωμάτωση/σύμβαση + ασφάλεια.
3. Στάθμευση: καπνός, φορτίο, επέκταση των μεταναστεύσεων, έλεγχος ανατροπής.
4. Prod: σκιά → καναρίνι (πύλες) ή μπλε-πράσινο flip.
5. Μετά την εγκατάσταση: επιτήρηση, καθαρισμός συμβάσεων, ρετρό.
15) Σύντομη περίληψη
Το Zero-Downtime είναι μια πειθαρχία: συμβατές εκδόσεις + σωστή δρομολόγηση + διαχειριζόμενες μεταναστεύσεις + παρατηρησιμότητα και γρήγορη ανατροπή. Επιλέξτε ένα μοτίβο για το πλαίσιο (κύλιση, μπλε-πράσινο, καναρίνι), αυτόματες πύλες SLO, κρατήστε τα δεδομένα idempotent - και οι κυκλοφορίες θα πάψουν να είναι ένα γεγονός, μετατρέποντας σε μια αξιόπιστη διαδικασία ρουτίνας.