Die Regel gibt es aus einem guten Grund: Ein schlechter Freitagsdeploy ruiniert ein Wochenende. Aber die Regel behandelt den Tag als das Risiko, und der Tag ist nicht das Risiko, der Deploy ist es. Eine Pipeline, die am Freitagnachmittag gefährlich ist, war es am Dienstagmorgen schon; der Freitag verschiebt die Entdeckung nur auf einen schlechteren Zeitpunkt.
Die vier Eigenschaften#
- 01Rollback in unter zwei Minuten
Nicht «den vorherigen Commit nochmals deployen und auf die CI warten», sondern das Hochstufen des vorherigen Builds, eine Aktion, kein Build-Schritt. Wenn ein Rollback so lange dauert wie ein Vorwärtsfix, haben Sie kein Rollback, sondern einen zweiten Deploy.
- 02Hinter einem Flag
Alles, was Nutzerinnen sehen, geht dunkel raus und wird getrennt eingeschaltet. Das entkoppelt «der Code ist draussen» von «die Änderung ist live», und es heisst, dass die Behebung einer schlechten Änderung ein Schalter ist und kein Release.
- 03Rückwärtskompatible Migrationen
Spalten hinzufügen, nachfüllen, dann lesen. Nie eine Migration, deren Rollback eine Wiederherstellung aus dem Backup ist. Das ist die eine Art von Änderung, die wir tatsächlich nicht am Freitag ausliefern.
- 04Jemand, der wirklich erreichbar ist
Namentlich, nicht angenommen, und mit einem geladenen Laptop. Wer deployt hat, bleibt zwei Stunden erreichbar. Meistens sind es die langweiligsten zwei Stunden der Woche.
Warum wir uns die Mühe machen#
Weil die Alternative schlechter ist. Ein Freitagsstopp heisst, dass der Montag zwei Tage Arbeit trägt, der Deploy am Montag also grösser ist, und ein grösserer Deploy ist ein riskanterer Deploy mit mehr Stellen, an denen sich ein Fehler verstecken kann. Änderungen zu bündeln, um Risiko zu vermeiden, konzentriert es meistens.
Es tut noch etwas Leiseres: Den Freitag sicher zu machen zwingt die Pipeline dazu, gut zu sein. Jede der vier Eigenschaften oben gibt es, weil wir an einem Freitag ausliefern wollten und feststellten, dass wir es nicht ehrlich konnten. Der Stopp hätte alle vier unbegrenzt kaputt bleiben lassen.