Was passiert wirklich, wenn ein Entwickler Code pusht
Ein Bug-Report geht ein. Ein Benutzer kann eine Zahlung nicht abschließen, weil der Bestätigungsbildschirm einfriert. Ein Entwickler öffnet den Code, findet das Problem, schreibt einen Fix und testet lokal. Auf seinem Rechner funktioniert alles. Er pusht die Änderung ins gemeinsame Repository.
Dieser Push ist erst der Anfang. Was danach passiert, entscheidet darüber, ob der Fix die Benutzer in Minuten, Stunden oder Tagen erreicht. Es entscheidet auch darüber, wie viel Stress, Verwirrung und Nacharbeit das Team dabei erlebt.
Gehen wir den gesamten Weg einer einzelnen Änderung durch – vom Laptop des Entwicklers bis in die Produktion. Wir schauen uns an, was jede Rolle tatsächlich tut und warum die Übergaben zwischen ihnen wichtiger sind, als die meisten Teams glauben.
Entwickler: Vom Lokalen ins Gemeinsame Repository
Der Entwickler committet seinen Code zunächst in die Versionsverwaltung. Ein Commit ist nur ein Snapshot der Änderungen, der in einem gemeinsamen Repository wie Git gespeichert wird. Aber allein das Committen bedeutet noch nicht, dass die Änderung bereit ist. Der Entwickler erstellt dann einen Pull Request oder Merge Request und bittet darum, seine Änderungen in den Hauptbranch zu mergen.
An diesem Punkt starten automatisierte Prüfungen. Der Code wird kompiliert oder zu einem ausführbaren Artefakt gebaut. Unit-Tests laufen, um einzelne Funktionen zu verifizieren. Integrationstests prüfen, ob verschiedene Teile der Anwendung zusammenarbeiten. Auch grundlegende Sicherheitsscans können laufen. All das geschieht, ohne dass jemand eine Taste drückt.
Wenn ein Test fehlschlägt, wird der Entwickler benachrichtigt. Er behebt das Problem, committed erneut, und der Zyklus wiederholt sich. Wenn alle Tests bestanden sind, ist der Code bereit für die nächste Stufe.
Hier bleiben viele Teams stecken. Eine grüne Pipeline bedeutet nicht, dass die Änderung sicher ist. Sie bedeutet nur, dass die automatisierten Prüfungen bestanden wurden. Jemand muss sich die Änderung noch aus menschlicher Perspektive ansehen.
Das folgende Sequenzdiagramm zeigt den gesamten Weg einer Codeänderung vom Push des Entwicklers bis zur Produktion und veranschaulicht die wichtigsten Interaktionen zwischen Rollen und Systemen.
QA: Testen jenseits der Automatisierung
Qualitätssicherung beginnt nicht erst, wenn der Build fertig ist. QA-Ingenieure bereiten Testszenarien in der Regel schon vor, während das Feature oder der Fix noch geplant wird. Sie denken an Randfälle, ungewöhnliche Eingaben, langsame Netzwerkbedingungen und Interaktionen mit anderen Teilen des Systems.
Wenn der Build die automatisierten Prüfungen bestanden hat, nimmt QA ihn auf und deployed ihn in eine Staging-Umgebung. Staging ist eine Kopie der Produktion, auf die keine echten Benutzer zugreifen. Hier findet manuelles Testen statt.
QA führt die vorbereiteten Szenarien durch. Funktioniert das neue Feature wie erwartet? Zerbricht es etwas anderes? Fühlt sich der Benutzerablauf natürlich an? Sie erkunden auch Pfade, die automatisierte Tests übersehen könnten. Was passiert, wenn jemand eine sehr lange Zeichenkette in ein Textfeld eingibt? Was, wenn die Datenbankverbindung langsam ist?
Wenn QA ein Problem findet, melden sie es dem Entwickler. Der Entwickler behebt es, committed erneut, und der Zyklus wiederholt sich, bis QA freigibt. Dieses Hin und Her ist normal. Es ist kein Zeichen von Versagen. Es ist die Art und Weise, wie Teams Probleme erkennen, die automatisierte Tests nicht vorhersagen können.
Der entscheidende Punkt ist: QA testet nicht nur am Ende. Sie beeinflussen von Anfang an, was gebaut wird. Ein Team, das QA als letztes Tor behandelt, wird Probleme immer zu spät finden.
DevOps: Die Änderung sicher in die Produktion bringen
Sobald QA den Build freigegeben hat, geht es ans Deployment. Hier übernimmt DevOps die Führung. DevOps-Ingenieure sind dafür verantwortlich, den freigegebenen Build ohne Schäden in die Produktion zu bringen.
In einer einfachen Einrichtung kann das Deployment manuell erfolgen. Ein DevOps-Ingenieur loggt sich auf dem Server ein, zieht den neuesten Build und führt Befehle aus, um die alte Version durch die neue zu ersetzen. In einer ausgereifteren Einrichtung ist das Deployment automatisiert. Ein einziger Knopfdruck oder sogar ein automatischer Auslöser nach der QA-Freigabe erledigt den gesamten Prozess.
Aber das Deployment ist nicht das Ende. Sobald die neue Version live ist, überwacht DevOps das System. Sind die Fehlerraten normal? Ist die Antwortzeit akzeptabel? Können Benutzer auf das neue Feature zugreifen? Wenn etwas falsch aussieht, kann DevOps auf die vorherige Version zurückrollen, während der Entwickler und QA die Ursache untersuchen.
Diese Überwachungsphase wird oft übersehen. Teams feiern ein erfolgreiches Deployment und machen weiter, nur um Stunden später zu entdecken, dass ein subtiler Bug Benutzer beeinträchtigt. Gute DevOps-Praktiken beinhalten, das System nach jedem Deployment für mindestens eine kurze Zeit zu beobachten.
Die Übergaben sind wichtiger als die Werkzeuge
Ein häufiges Missverständnis ist, dass Entwickler, QA und DevOps in einer strengen Fließbandarbeit arbeiten. Entwickler wird fertig, übergibt an QA, QA wird fertig, übergibt an DevOps. In Wirklichkeit kommunizieren sie während des gesamten Prozesses.
Ein Entwickler fragt DevOps vielleicht nach der Konfiguration der Staging-Umgebung. QA bittet den Entwickler möglicherweise, bestimmte automatisierte Tests hinzuzufügen. DevOps teilt dem Entwickler mit, dass das letzte Deployment länger gedauert hat als erwartet, weil eine Konfiguration fehlte. Je reibungsloser diese Gespräche fließen, desto schneller erreichen Änderungen die Benutzer.
Werkzeuge wie CI/CD-Pipelines, automatisierte Test-Frameworks und Deployment-Automatisierung helfen. Aber sie ersetzen keine Kommunikation. Ein Team, das mit einfachen Werkzeugen gut kommuniziert, wird ein Team übertreffen, das fortschrittliche Werkzeuge nutzt, aber nicht miteinander spricht.
Wenn weitere Rollen ins Spiel kommen
Wenn Teams wachsen und die Deployment-Häufigkeit zunimmt, tauchen oft zwei weitere Rollen auf: Site Reliability Engineers (SRE) und Platform Engineers.
SRE konzentriert sich auf Zuverlässigkeit. Sie legen Service-Level-Objectives fest, überwachen die Systemgesundheit und bauen Automatisierung zur Bewältigung von Incidents auf. Sie werden in der Regel notwendig, wenn ein Team mehrmals täglich deployed und sicherstellen muss, dass jedes Deployment das System nicht verschlechtert.
Platform Engineers bauen interne Werkzeuge und Infrastruktur, die andere Teams nutzen. Sie erstellen Self-Service-Plattformen, damit Entwickler deployen können, ohne auf DevOps warten zu müssen. Sie werden notwendig, wenn die Organisation mehrere Teams hat und die Infrastruktur zu komplex wird, als dass jedes Team sie unabhängig verwalten könnte.
Diese Rollen ersetzen nicht Entwickler, QA oder DevOps. Sie erweitern die Fähigkeit des Teams, mit höherer Geschwindigkeit und Komplexität umzugehen.
Praktische Checkliste für den Änderungsfluss
Verwenden Sie diese Checkliste, um zu bewerten, wie Ihr Team eine Änderung vom Commit bis zur Produktion handhabt:
- Löst jeder Commit automatische Builds und Tests aus?
- Bereitet QA Testszenarien vor, bevor der Build fertig ist?
- Gibt es eine Staging-Umgebung, die die Produktion widerspiegelt?
- Kann DevOps ein Deployment innerhalb von Minuten zurückrollen?
- Überwacht jemand das System für mindestens 30 Minuten nach dem Deployment?
- Gibt es einen klaren Kommunikationskanal zwischen Entwickler, QA und DevOps während des Prozesses?
Wenn einer dieser Punkte fehlt, wird dort Reibung auftreten.
Was das für Ihr Team bedeutet
Eine Änderung, die vom Code in die Produktion wandert, ist kein technischer Prozess mit menschlichen Unterbrechungen. Es ist ein menschlicher Prozess, der von technischen Werkzeugen unterstützt wird. Die Qualität der Kommunikation zwischen den Rollen bestimmt, wie schnell und wie sicher Änderungen die Benutzer erreichen. Automatisierung hilft, aber sie kann klare Übergaben, gemeinsames Verständnis und die Bereitschaft, zur richtigen Zeit die richtige Person einzubeziehen, nicht ersetzen.
Wenn Ihr Team das nächste Mal eine Änderung pusht, beobachten Sie die Übergaben. Dort findet die eigentliche Arbeit statt.