Μετάβαση στο περιεχόμενο
leeveel
← Ευρετήριο
Nº 008 · 18 Απρ · 4 λεπτά ανάγνωσης#process

Γιατί κάνουμε ship τις Παρασκευές

Η χειρότερη μέρα της εβδομάδας για ship αποδεικνύεται και η πιο ειλικρινής. Επιχειρηματολογούμε γιατί, και μετά δείχνουμε το deploy log μας.

από Νεφέλη Κ.

++++

Αυτό που λένε όλοι είναι "ποτέ μην κάνεις deploy την Παρασκευή." Εμείς το κάνουμε, και συχνά. Όχι σαν παλικαριά — σαν forcing function. Τα Friday deploys σημαίνουν ότι δεν βγάζουμε τίποτα που θα μισούσαμε να debug-άρουμε ένα Σάββατο, που σημαίνει ότι δεν βγάζουμε πράγματα που δεν εμπιστευόμαστε.

Η άλλη πλευρά είναι αυτό που κανείς δεν σου λέει. Μια κουλτούρα deploy την Τετάρτη αφήνει κακό κώδικα να γλιστρήσει γιατί υπάρχει πάντα χώρος να γίνει patch αργότερα. Η Παρασκευή κλείνει την πόρτα. Η αλλαγή είναι σε production για το Σαββατοκύριακο ή δεν είναι. Αυτό το δυαδικό είναι άβολο, και είναι όλο το νόημα.

Επιφυλάξεις. Τα migrations προγραμματίζονται στη μέση της εβδομάδας. Οτιδήποτε αγγίζει payment, auth ή μια queue σε κλίμακα βγαίνει πίσω από feature flag με προ-συμφωνημένο rollback. Ο κανόνας δεν είναι απερίσκεπτος — είναι για το να μη λέμε ποτέ ψέματα στον εαυτό μας για το αν κάτι έχει τελειώσει.

Κοιτάξαμε το deploy log μας για αυτό το post. Από τα τελευταία 60 production deploys, τα 24 βγήκαν Παρασκευή. Τρία έγιναν rollback. Τα δύο από αυτά έγιναν rollback το ίδιο απόγευμα της Παρασκευής, από τον engineer που τα έβγαλε. Κανένα δεν συνέβη Σάββατο. Αυτός είναι ο μόνος αριθμός που μετράει.

Η Παρασκευή δεν είναι ομοιόμορφα κατανεμημένη στην εβδομάδα — είναι εκεί που προσγειώνεται η δουλειά. Το σχήμα του bar chart παραπάνω είναι το σχήμα της πραγματικής μας πρακτικής. Όταν κοιτάμε το ημερολόγιο την Τρίτη, η αλλαγή είναι ήδη σε draft PR. Μέχρι την Πέμπτη έχει γίνει review. Η Παρασκευή είναι η μέρα που η δουλειά συναντά τον κόσμο. Να την τραβήξεις πίσω στην Τετάρτη δεν θα άλλαζε το engineering — απλώς θα άλλαζε τη μέρα που λέμε ψέματα ότι τελειώσαμε.

Το άλλο που επιβάλλει η Παρασκευή είναι πραγματικός on-call ρυθμός. Όποιος βγάζει την αλλαγή την κρατάει μέχρι την Δευτέρα το πρωί. Όχι "θα το δούμε," όχι "ο επόμενος στη βάρδια θα το αναλάβει" — ο ίδιος engineer σηκώνει το τηλέφωνο. Αυτή η ευθύνη μικραίνει το σύνολο των αλλαγών που κάποιος είναι διατεθειμένος να βγάλει στις 4 το απόγευμα της Παρασκευής, που είναι ακριβώς αυτό που θέλουμε να κάνει. Ο κανόνας είναι το φίλτρο.

Τι άλλαξε από τότε που το γράψαμε εσωτερικά πριν τρία χρόνια: τίποτα. Το retro μετά από κάθε Friday rollback έλεγε παλιά "ίσως πρέπει να σταματήσουμε." Τώρα λέει "γιατί δεν το έπιασε το test;" — που είναι η συζήτηση που θέλαμε εξαρχής.