Πλατφόρμα πληρωμών από την Αθήνα
Μια εφαρμογή πληρωμών δεν αντέχει διακοπή, οπότε κάθε κυκλοφορία περνά από blue-green με smoke tests πάνω στη ροή πληρωμής, πριν αλλάξει η κίνηση.
Rollback σε μία εντολή, όχι νέα κυκλοφορία
Blue-Green deployments στην Ελλάδα σημαίνει ότι κάθε νέα έκδοση ανεβαίνει σε πανομοιότυπο δεύτερο περιβάλλον, δοκιμάζεται εκεί και μετά η κίνηση περνάει στο load balancer με ένα κλικ. Αν κάτι δεν πάει καλά, το rollback είναι στιγμιαίο, όχι νέα κυκλοφορία υπό πίεση. Προσθέτουμε canary με ποσοστά κίνησης και metric gates όπου το θέλετε, και σχεδιάζουμε τα database migrations ώστε να είναι συμβατά με τις δύο εκδόσεις.
Το blue-green δουλεύει μόνο αν τα δύο περιβάλλοντα είναι πραγματικά ίδια: ίδια configuration, ίδιες μεταβλητές, ίδια σύνδεση με τη βάση δεδομένων, με τη διαφορά μόνο στην έκδοση κώδικα. Στήνουμε τη μεταγωγή στο επίπεδο του load balancer ή του ingress, ώστε η εναλλαγή να είναι στιγμιαία και αόρατη για τον χρήστη. Πριν από κάθε μεταγωγή τρέχουν αυτοματοποιημένα smoke tests στο νέο περιβάλλον, και το παλιό μένει ενεργό μέχρι τα metrics να επιβεβαιώσουν ότι όλα είναι εντάξει.
Οι περισσότερες αποτυχημένες κυκλοφορίες δεν σχετίζονται με τον κώδικα, αλλά με τα database migrations ή με απουσία σχεδίου rollback. Τις παρακάτω αρχές τις εφαρμόζουμε πάντα και τις γράφουμε στη δική σας τεκμηρίωση, μαζί με το παράθυρο κυκλοφορίας που ταιριάζει στο ωράριο της επιχείρησής σας. Δεν πρόκειται για θεωρητικές συστάσεις, είναι οι συγκεκριμένοι έλεγχοι που εφαρμόζουμε σε κάθε παράδοση, χωρίς εξαίρεση.
Το blue-green αλλάζει όλη την κίνηση μαζί· το canary τη μετακινεί σταδιακά, με ποσοστά όπως 5%, 25%, 100%, και automated gates πάνω σε error rate και latency που αποφασίζουν αν συνεχίζει ή γυρίζει πίσω. Τα feature flags προσθέτουν ακόμα ένα επίπεδο: μπορείτε να ενεργοποιήσετε μια λειτουργία μόνο για συγκεκριμένους χρήστες, χωρίς νέα κυκλοφορία, ή να την απενεργοποιήσετε άμεσα αν κάτι δεν πάει καλά, χωρίς rollback κώδικα.
Ο σχεδιασμός blue-green ή canary και η σύνδεσή του με το CI/CD μπαίνουν στις μηνιαίες ώρες: 1–8 ώρες σε VPS, 5–10 ώρες σε dedicated servers ανάλογα με το πλάνο και 10 ώρες σε GPU servers. Ζητάτε το έργο από τον πίνακα πελάτη, στις Υπηρεσίες DevOps, και προτείνετε προθεσμία. Η αρχική ρύθμιση συνήθως χωράει σε έναν μήνα, ενώ τα migrations database expand/contract τα σχεδιάζουμε ανά κυκλοφορία. Οι ώρες δεν μεταφέρονται, και ό,τι ξεπερνά την ποσόστωση τιμολογείται ξεχωριστά.
Κάθε συνδρομή περιλαμβάνει μηνιαίες ώρες DevOps, Κυβερνοασφάλειας και Προγραμματισμού: 1 ώρα από το πακέτο cPanel Advanced και πάνω, 1–8 ώρες σε VPS και 5–10 ώρες σε αποκλειστικούς διακομιστές ανάλογα με το πλάνο και 10 ώρες σε GPU. Οι ώρες ζητούνται από τον πίνακα πελάτη, δεν μεταφέρονται στον επόμενο μήνα, και ό,τι ξεπερνά το όριο γίνεται δεκτό και χρεώνεται ξεχωριστά.
Μια εφαρμογή πληρωμών δεν αντέχει διακοπή, οπότε κάθε κυκλοφορία περνά από blue-green με smoke tests πάνω στη ροή πληρωμής, πριν αλλάξει η κίνηση.
Ένα σύστημα κρατήσεων με κίνηση όλο το εικοσιτετράωρο χρησιμοποιεί canary με 5% κίνηση πριν την πλήρη κυκλοφορία, ώστε ένα σφάλμα να επηρεάσει ελάχιστες κρατήσεις.
Μια εφαρμογή με database migrations σε κάθε κυκλοφορία σχεδιάζει expand/contract, ώστε η παλιά και η νέα έκδοση να λειτουργούν ταυτόχρονα κατά τη μεταγωγή.
Περιγράφετε πώς κυκλοφορείτε σήμερα, τι σας ανησυχεί περισσότερο σε μια αποτυχημένη κυκλοφορία, και προτείνετε προθεσμία από τις Υπηρεσίες DevOps.
Επιλέγουμε blue-green ή canary ανάλογα με τη ρίσκο ανοχή σας, σχεδιάζουμε τα migrations βάσης ως expand/contract και εκτιμάμε τις ώρες.
Στήνουμε τα δύο περιβάλλοντα ή το canary, τα smoke tests και το rollback, και δοκιμάζουμε πραγματική μεταγωγή κίνησης πριν την πρώτη κανονική κυκλοφορία.
Παίρνετε τη διαδικασία μεταγωγής, το σχέδιο rollback, τα smoke tests στο repository σας και τους κανόνες για τα μελλοντικά migrations.
Είναι μια τεχνική κυκλοφορίας όπου διατηρείτε δύο πανομοιότυπα περιβάλλοντα, το ενεργό (blue) και το νέο (green). Δοκιμάζετε το green ξεχωριστά, και όταν είναι έτοιμο, μεταφέρετε την κίνηση σε αυτό με μία ενέργεια στο load balancer, χωρίς διακοπή για τον χρήστη.
Το blue-green αλλάζει όλη την κίνηση μαζί, ιδανικό όταν η νέα έκδοση έχει περάσει πλήρη δοκιμή. Το canary τη μετακινεί σταδιακά με ποσοστά, καλύτερο όταν θέλετε να δείτε πραγματική συμπεριφορά σε πραγματικούς χρήστες πριν από πλήρη κυκλοφορία.
Επειδή το παλιό περιβάλλον παραμένει ενεργό μέχρι να επιβεβαιωθούν τα metrics, το rollback είναι απλώς επαναφορά της κίνησης στο load balancer προς το παλιό περιβάλλον. Δεν χρειάζεται νέα κυκλοφορία ούτε ανακατασκευή, είναι μία εντολή.
Με τη στρατηγική expand/contract: πρώτα προσθέτετε τη νέα στήλη ή δομή χωρίς να αφαιρέσετε την παλιά, κυκλοφορείτε τον κώδικα που τη χρησιμοποιεί, και μόνο αργότερα αφαιρείτε την παλιά δομή. Έτσι παλιά και νέα έκδοση λειτουργούν ταυτόχρονα κατά τη μετάβαση.
Όχι απαραίτητα. Μπορείτε να το στήσετε με δύο VPS και ένα load balancer μπροστά, ή με Docker Compose και εναλλαγή στο reverse proxy. Το Kubernetes με Argo Rollouts απλοποιεί το canary με αυτόματα gates, αλλά δεν είναι προαπαιτούμενο.
Είναι διακόπτες στον κώδικα που ενεργοποιούν ή απενεργοποιούν μια λειτουργία χωρίς νέα κυκλοφορία. Επιτρέπουν να δείξετε μια λειτουργία μόνο σε συγκεκριμένους χρήστες ή να την κλείσετε άμεσα αν εμφανιστεί πρόβλημα, χωρίς rollback κώδικα.
Στήνουμε blue-green ή canary με smoke tests και rollback σε μία εντολή, μέσα στις ώρες που περιλαμβάνει η συνδρομή σας.