Schritt 1: Den echten Bedarf erheben
Am Anfang steht kein Werkzeug, sondern eine Messung. Wer nicht weiß, wo die Zeit verloren geht, baut die falsche Plattform.
# Wie lange liegen Infrastrukturanfragen im Ticketsystem?
glab api "projects/:id/issues?labels=infra&state=closed&per_page=100" \
| jq -r '.[] | [.iid, .created_at, .closed_at] | @tsv'
# Wie oft liefern die Teams aus, und wie lange dauert ein Lauf?
gh api repos/acme/order-api/actions/runs --paginate \
| jq -r '.workflow_runs[] | [.created_at, .conclusion] | @tsv' | head -50
# Wie viele Varianten derselben Pipeline gibt es?
gh search code --owner acme --filename '*.gitlab-ci.yml' --json repositoryVier Zahlen reichen für den Anfang: mittlere Liegezeit einer Infrastrukturanfrage, Anzahl der Auslieferungen pro Team und Monat, Zeit von der ersten Zeile bis zur laufenden Umgebung und Anzahl der Pipeline-Varianten. Diese vier Werte sind später auch der Nachweis, dass die Plattform wirkt.
Fünf Fragen für die Gespräche mit den Produktteams
- Was hat dich in den letzten vier Wochen am meisten aufgehalten?
- Welchen Schritt umgehst du regelmäßig, weil er zu lange dauert?
- Was hast du dir selbst gebaut, weil es zentral nicht gab?
- Welche Entscheidung würdest du gern abgeben, statt sie jedes Mal neu zu treffen?
- Was müsste eine zentrale Plattform können, damit du sie freiwillig nutzt?
Aus den Antworten entsteht die erste Version, und die fällt fast immer kleiner aus als geplant. In der Regel lösen zwei Dinge den größten Teil der Reibung: ein neuer Dienst ohne Ticket und ein einheitlicher Weg von Git in die Umgebung. Welcher Auslieferungsweg dabei passt, behandelt Argo CD oder Flux.