Aufwandsschätzung für eine CI/CD-Umstellung
So schätzen Sie den Aufwand für eine CI/CD-Umstellung ein: Da es für die Pipeline-Arbeiten keine Demo gibt, unterteilen Sie das Projekt in Teile, die gestrichen werden können. Das vierteljährliche Projekt, das im Backlog als Refactoring versteckt ist.
Bei Pipeline-Arbeiten gibt es keine Demo. Gehen Sie nach dem Kriterium „Welcher Build kann heute gelöscht werden?“ vor, um die Einschätzbarkeit zu gewährleisten.
CI/CD-Überarbeitungen sind die am schlechtesten definierten Aufgaben im Backlog. Es gibt kein für den Nutzer sichtbares Ergebnis, keine Demo und keinen Screenshot, den man in die Release-Notes aufnehmen könnte. Die Arbeit ist struktureller Natur: eine Pipeline durch eine andere ersetzen, ein Build-System migrieren, drei Testausführungsumgebungen zu einer zusammenfassen, von einem selbst geschriebenen Shell-Skript zu einer ordnungsgemäßen Workflow-Datei wechseln. Das Team weiß, dass diese Arbeit erledigt werden muss. Das Team weiß auch, dass dies ein Quartal in Anspruch nehmen wird und dass dieses Quartal von außerhalb der Entwicklungsabteilung nicht sichtbar sein wird.
Der Grund für das Scheitern der Schätzung ist vorhersehbar. Das Team stimmt für 13, weil „es sich um eine Refaktorisierung handelt und diese umfangreich ist“. Nach drei Sprints läuft die alte Pipeline immer noch parallel zur neuen, zwei Systeme sind nur teilweise konfiguriert, und jeder Entwickler hat eine andere Vorstellung davon, welches System verwendet werden soll. Die Story ist noch nicht abgeschlossen, da es keine Definition von „fertig“ gibt – Pipelines werden nicht ausgeliefert; sie werden eingeführt, und die Einführung ist eine andere Frage als die, ob „das Neue existiert“.
Was in dem Raum gesagt wird
SRE: „Wir müssen den alten Läufer ablösen. Zwei Sprints.“
Leitfrage: „Was bedeutet ‚fertig‘?“
SRE: „…das neue funktioniert.“
Leitzeile: „Das neue Modell eignet sich bereits für die Hälfte unserer Aufgaben.“
Backend: „Aber das alte System läuft für die andere Hälfte weiterhin.“
Einleitung: „Genau. Wir sind also fertig, sobald wir die alte Version löschen können.“
Das ist der entscheidende Schritt. Bei der Aufgabe geht es nicht darum, „die neue Pipeline zu erstellen“ – das Team hat diese wahrscheinlich bereits vor Monaten im Rahmen eines in der Freizeit durchgeführten Spike-Projekts erstellt. Die Story lautet vielmehr: „Die alte Pipeline löschen.“ Solange das alte Build-System noch vorhanden ist, ist die Umstellung nicht abgeschlossen; es handelt sich um eine parallele Infrastruktur mit allen Kosten, aber ohne jeglichen Nutzen. Die Einstufung der Story als Entfernung statt als Erstellung gibt dem Team eine Definition von „fertig“, über die es abstimmen kann.
Wie man es in Scheiben schneidet
Erstellen Sie eine Bestandsaufnahme der Jobs, die noch auf dem alten System laufen. Für jeden Job gilt: Was wäre erforderlich, um die alte Version zu löschen? Das ist eine eigene Aufgabe. Manche Fälle sind trivial (der Job wurde bereits in die neue Pipeline gespiegelt; entfernen Sie einfach die alte YAML-Datei). Andere erfordern einen gewissen Aufwand (die Testsuite enthält einen fest codierten Pfad; der Deploy-Schritt hängt von einer alten Umgebungsvariablen ab). Jede Entfernung ist ein kleiner Schritt, den das Team umsetzen und vorführen kann. „Wir haben die Jenkins-Datei für den Authentifizierungsdienst gelöscht“ ist ein vorführbares Ergebnis.
Jede Entfernung lässt sich auf die übliche Weise abschätzen: Klären Sie zunächst die Unbekannten (gibt es für diese Funktion Nutzer, von denen wir nichts wissen?), und schätzen Sie dann den Aufwand für die Entfernung anhand einer Referenzentfernung, die Sie bereits umgesetzt haben. Die meisten Abschnitte liegen bei 2 oder 3 Punkten. Die Story, die als „13, Refactoring, groß“ bezeichnet wurde, bestand in Wirklichkeit aus fünfzehn 2ern und einer 3 in einem Trenchcoat.
Fragen, die man sich vor der Stimmabgabe stellen sollte
- Was wird gelöscht, wenn dieser Artikel fertig ist?
- Welche Berufe sind noch vom alten System abhängig?
- Gibt es einen Nutzer der alten Pipeline, von dem wir nichts wissen – ein externes Team, einen geplanten Job?
- Was ist die Rückabwicklungsmaßnahme, falls die neue Pipeline nach dem Löschen der alten einen Rückschritt verzeichnet?
- Wer gilt als maßgebende Instanz in Bezug auf die Aussage „Die neue Pipeline ist die Quelle der Wahrheit“?
- Verfolgt jemand Woche für Woche, welche Aufträge auf dem alten bzw. dem neuen System ausgeführt werden?
Wenn die Antwort auf die Frage „Was wird gestrichen?“ lautet: „In diesem Sprint nichts“, befindet sich das Team weiterhin in der Phase der parallelen Infrastruktur, und die Story erfüllt die Voraussetzungen für das Readiness-Gate nicht.
Die Arbeiten an der Pipeline werden durchgeführt, sobald die alte Anlage entfernt wurde. Gehen Sie schrittweise vor; schätzen Sie den Aufwand für jede einzelne Entfernung separat.
Lesen Sie unter horizontale vs. vertikale Aufteilung, warum „das neue System aufbauen“ die falsche Aufteilungsachse ist, sowie die weiteren Beispiele für funktionierende Schätzungen. Starten Sie eine kostenlose Planning-Poker-Sitzung, sobald das Team eine Liste der zu entfernenden Elemente erstellt hat.