Blue-Green deployments χωρίς downtime

Υπηρεσίες DevOps · Κυκλοφορίες · Ελλάδα

Rollback σε μία εντολή, όχι νέα κυκλοφορία

Blue-Green deployments στην Ελλάδα σημαίνει ότι κάθε νέα έκδοση ανεβαίνει σε πανομοιότυπο δεύτερο περιβάλλον, δοκιμάζεται εκεί και μετά η κίνηση περνάει στο load balancer με ένα κλικ. Αν κάτι δεν πάει καλά, το rollback είναι στιγμιαίο, όχι νέα κυκλοφορία υπό πίεση. Προσθέτουμε canary με ποσοστά κίνησης και metric gates όπου το θέλετε, και σχεδιάζουμε τα database migrations ώστε να είναι συμβατά με τις δύο εκδόσεις.

  • Canary με ποσοστά κίνησης και metric gates
  • Migrations βάσης συμβατά με παλιά και νέα έκδοση
  • VPS 1–8 ώρες/μήνα· dedicated 5–10 ώρες/μήνα ανάλογα με το πλάνο· GPU 10 ώρες/μήνα
    Ώρες που περιλαμβάνονται
  • Φρανκφούρτη, στην ΕΕ
    Datacenters
  • σε EUR, με ΦΠΑ 24% διαχωρισμένο στο τιμολόγιο
    Χρέωση

Πώς στήνουμε δύο πανομοιότυπα περιβάλλοντα

Το blue-green δουλεύει μόνο αν τα δύο περιβάλλοντα είναι πραγματικά ίδια: ίδια configuration, ίδιες μεταβλητές, ίδια σύνδεση με τη βάση δεδομένων, με τη διαφορά μόνο στην έκδοση κώδικα. Στήνουμε τη μεταγωγή στο επίπεδο του load balancer ή του ingress, ώστε η εναλλαγή να είναι στιγμιαία και αόρατη για τον χρήστη. Πριν από κάθε μεταγωγή τρέχουν αυτοματοποιημένα smoke tests στο νέο περιβάλλον, και το παλιό μένει ενεργό μέχρι τα metrics να επιβεβαιώσουν ότι όλα είναι εντάξει.

  • Ίδια configuration στα δύο περιβάλλοντα, διαφορά μόνο στην έκδοση
  • Μεταγωγή κίνησης στο load balancer ή ingress, χωρίς DNS αλλαγές
  • Αυτοματοποιημένα smoke tests πριν από κάθε μεταγωγή
  • Session draining, ώστε ενεργές συνδέσεις να ολοκληρώνονται ομαλά

Βέλτιστες πρακτικές που εφαρμόζουμε

Οι περισσότερες αποτυχημένες κυκλοφορίες δεν σχετίζονται με τον κώδικα, αλλά με τα database migrations ή με απουσία σχεδίου rollback. Τις παρακάτω αρχές τις εφαρμόζουμε πάντα και τις γράφουμε στη δική σας τεκμηρίωση, μαζί με το παράθυρο κυκλοφορίας που ταιριάζει στο ωράριο της επιχείρησής σας. Δεν πρόκειται για θεωρητικές συστάσεις, είναι οι συγκεκριμένοι έλεγχοι που εφαρμόζουμε σε κάθε παράδοση, χωρίς εξαίρεση.

  • Ποτέ migration που σπάει το schema μαζί με τον κώδικα στο ίδιο βήμα
  • Αυτοματοποιημένα smoke tests πριν τη μεταγωγή κίνησης
  • Rollback σε μία εντολή, δοκιμασμένο, όχι μόνο τεκμηριωμένο
  • Το παλιό περιβάλλον μένει ενεργό μέχρι τα metrics να είναι πράσινα
  • Παράθυρα κυκλοφορίας ευθυγραμμισμένα με τις τοπικές ώρες λειτουργίας

Canary και feature flags για σταδιακή εξέλιξη

Το blue-green αλλάζει όλη την κίνηση μαζί· το canary τη μετακινεί σταδιακά, με ποσοστά όπως 5%, 25%, 100%, και automated gates πάνω σε error rate και latency που αποφασίζουν αν συνεχίζει ή γυρίζει πίσω. Τα feature flags προσθέτουν ακόμα ένα επίπεδο: μπορείτε να ενεργοποιήσετε μια λειτουργία μόνο για συγκεκριμένους χρήστες, χωρίς νέα κυκλοφορία, ή να την απενεργοποιήσετε άμεσα αν κάτι δεν πάει καλά, χωρίς rollback κώδικα.

  • Canary με σταδιακή αύξηση ποσοστού κίνησης
  • Automated gates σε error rate και latency
  • Feature flags για ενεργοποίηση χωρίς κυκλοφορία

Πώς μπαίνει στις ώρες DevOps

Ο σχεδιασμός 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 πάνω στη ροή πληρωμής, πριν αλλάξει η κίνηση.

Booking engine ξενοδοχειακής αλυσίδας

Ένα σύστημα κρατήσεων με κίνηση όλο το εικοσιτετράωρο χρησιμοποιεί canary με 5% κίνηση πριν την πλήρη κυκλοφορία, ώστε ένα σφάλμα να επηρεάσει ελάχιστες κρατήσεις.

SaaS διαχείρισης επιχειρήσεων

Μια εφαρμογή με database migrations σε κάθε κυκλοφορία σχεδιάζει expand/contract, ώστε η παλιά και η νέα έκδοση να λειτουργούν ταυτόχρονα κατά τη μεταγωγή.

Πώς δουλεύουμε

  1. Ζητάτε το έργο από τον πίνακα

    Περιγράφετε πώς κυκλοφορείτε σήμερα, τι σας ανησυχεί περισσότερο σε μια αποτυχημένη κυκλοφορία, και προτείνετε προθεσμία από τις Υπηρεσίες DevOps.

  2. Ορίζουμε πεδίο και προθεσμία

    Επιλέγουμε blue-green ή canary ανάλογα με τη ρίσκο ανοχή σας, σχεδιάζουμε τα migrations βάσης ως expand/contract και εκτιμάμε τις ώρες.

  3. Παραδίδουμε και δοκιμάζουμε την εναλλαγή

    Στήνουμε τα δύο περιβάλλοντα ή το canary, τα smoke tests και το rollback, και δοκιμάζουμε πραγματική μεταγωγή κίνησης πριν την πρώτη κανονική κυκλοφορία.

  4. Παραδίδουμε με τεκμηρίωση

    Παίρνετε τη διαδικασία μεταγωγής, το σχέδιο rollback, τα smoke tests στο repository σας και τους κανόνες για τα μελλοντικά migrations.

Τεχνολογίες

  • Traefik
  • Nginx
  • Argo Rollouts
  • Kubernetes
  • GitHub Actions
  • Prometheus
  • Grafana
  • Flagsmith

Συχνές ερωτήσεις

  • Τι είναι το blue-green deployment;

    Είναι μια τεχνική κυκλοφορίας όπου διατηρείτε δύο πανομοιότυπα περιβάλλοντα, το ενεργό (blue) και το νέο (green). Δοκιμάζετε το green ξεχωριστά, και όταν είναι έτοιμο, μεταφέρετε την κίνηση σε αυτό με μία ενέργεια στο load balancer, χωρίς διακοπή για τον χρήστη.

  • Blue-green ή canary deployment;

    Το blue-green αλλάζει όλη την κίνηση μαζί, ιδανικό όταν η νέα έκδοση έχει περάσει πλήρη δοκιμή. Το canary τη μετακινεί σταδιακά με ποσοστά, καλύτερο όταν θέλετε να δείτε πραγματική συμπεριφορά σε πραγματικούς χρήστες πριν από πλήρη κυκλοφορία.

  • Πώς γίνεται rollback χωρίς downtime;

    Επειδή το παλιό περιβάλλον παραμένει ενεργό μέχρι να επιβεβαιωθούν τα metrics, το rollback είναι απλώς επαναφορά της κίνησης στο load balancer προς το παλιό περιβάλλον. Δεν χρειάζεται νέα κυκλοφορία ούτε ανακατασκευή, είναι μία εντολή.

  • Πώς χειρίζομαι database migrations χωρίς διακοπή;

    Με τη στρατηγική expand/contract: πρώτα προσθέτετε τη νέα στήλη ή δομή χωρίς να αφαιρέσετε την παλιά, κυκλοφορείτε τον κώδικα που τη χρησιμοποιεί, και μόνο αργότερα αφαιρείτε την παλιά δομή. Έτσι παλιά και νέα έκδοση λειτουργούν ταυτόχρονα κατά τη μετάβαση.

  • Χρειάζομαι Kubernetes για blue-green deployments;

    Όχι απαραίτητα. Μπορείτε να το στήσετε με δύο VPS και ένα load balancer μπροστά, ή με Docker Compose και εναλλαγή στο reverse proxy. Το Kubernetes με Argo Rollouts απλοποιεί το canary με αυτόματα gates, αλλά δεν είναι προαπαιτούμενο.

  • Τι είναι τα feature flags και πώς βοηθούν;

    Είναι διακόπτες στον κώδικα που ενεργοποιούν ή απενεργοποιούν μια λειτουργία χωρίς νέα κυκλοφορία. Επιτρέπουν να δείξετε μια λειτουργία μόνο σε συγκεκριμένους χρήστες ή να την κλείσετε άμεσα αν εμφανιστεί πρόβλημα, χωρίς rollback κώδικα.

Η τελευταία σας κυκλοφορία είχε downtime;

Στήνουμε blue-green ή canary με smoke tests και rollback σε μία εντολή, μέσα στις ώρες που περιλαμβάνει η συνδρομή σας.

Οδηγοί για επιχειρήσεις στην Ελλάδα