Symbolbild · mit KI erstellt
Sichere Softwareauslieferung: Deploy, Migration, Pakete
Deploy, Datenbankmigration und neue Abhängigkeiten sind die drei Stellen, an denen ein Fehler unmittelbar den laufenden Betrieb trifft. Dieser Beitrag zeigt, worauf es an jeder dieser drei Stellen ankommt, damit eine Auslieferung sicher bleibt.
Drei Stellen, an denen es teuer wird
Ein Großteil der ernsthaften Probleme in der Softwareauslieferung entsteht an drei wiederkehrenden Stellen: beim Deploy selbst, bei Datenbankmigrationen und beim Einbinden neuer Abhängigkeiten. Alle drei haben gemeinsam, dass ein Fehler dort nicht lokal bleibt, sondern unmittelbar die produktive Umgebung betrifft – anders als ein Fehler, der beim Schreiben des Codes noch folgenlos korrigiert werden kann.
Deploy: der Moment ohne Rückweg
Ein Deploy bringt eine neue Version in Betrieb, oft während das System weiterläuft und genutzt wird. Fehlt ein klar definierter Rollback-Weg, wird aus einem fehlerhaften Deploy schnell ein Ausfall, der sich nicht in Minuten, sondern in Stunden beheben lässt. Entscheidend ist deshalb weniger, ob ein Deploy fehlerfrei verläuft – das lässt sich nie vollständig garantieren – sondern, ob ein Fehler nach dem Deploy schnell erkannt und der vorherige Zustand zuverlässig wiederhergestellt werden kann.
Migrationen: irreversibel, wenn niemand daran gedacht hat
Eine Datenbankmigration verändert nicht nur Code, sondern bestehende Daten. Eine Spalte, die gelöscht wird, ein Datentyp, der sich ändert, oder eine Umbenennung ohne Übergangsphase kann Daten unwiderruflich verlieren, selbst wenn der zugehörige Code fehlerfrei ist. Zwei Dinge senken dieses Risiko deutlich: eine Sicherung vor der Migration, die tatsächlich getestet zurückspielbar ist, und eine Migration, die so weit möglich rückgängig gemacht werden kann, statt nur in eine Richtung zu funktionieren.
Neue Abhängigkeiten: fremder Code im eigenen System
Jedes eingebundene Paket bringt fremden Code mit in die eigene Software – inklusive aller Abhängigkeiten, die dieses Paket seinerseits mitbringt. Ein Paket, das kaum noch gepflegt wird, eine Version, die ungeprüft auf die neueste Ausgabe aktualisiert wird, oder eine Bibliothek, die weit mehr Rechte einfordert, als ihre eigentliche Aufgabe erfordert, sind typische Einfallstore. Anders als eigener Code lässt sich fremder Code selten vollständig lesen, bevor er zum Einsatz kommt – umso wichtiger ist eine bewusste Prüfung, bevor eine neue Abhängigkeit überhaupt Teil des Systems wird.
Was eine sichere Auslieferung an allen drei Stellen ausmacht
- Ein Deploy-Prozess mit klar definiertem, getestetem Rollback statt einer Hoffnung, dass nichts schiefgeht
- Migrationen, die vor der Ausführung auf einer Kopie der echten Daten geprüft werden
- Eine Sicherung, die tatsächlich zurückgespielt und nicht nur erstellt wird
- Eine bewusste Prüfung neuer Abhängigkeiten auf Pflegezustand und tatsächlichen Umfang, bevor sie eingebunden werden
- Automatisierte Gates in der Pipeline, die diese Prüfungen bei jeder Auslieferung gleich durchsetzen, statt sie dem Zufall zu überlassen
Wie sich solche Prüfungen als feste Bestandteile in eine bestehende Pipeline einfügen, beschreibt der Beitrag zu Quality Gates in der CI/CD-Pipeline. Wie eng dieses Risiko mit ungetestetem, unter Zeitdruck übernommenem Code zusammenhängt, zeigt der Artikel zur Testabdeckung bei KI-generiertem Code, und wer am Ende für einen Schaden aus einer fehlerhaften Auslieferung einsteht, behandelt der Beitrag Wer haftet für KI-generierten Code?.
Warum diese drei Stellen zusammengehören
Deploy, Migration und neue Abhängigkeiten wirken auf den ersten Blick wie getrennte Themen, teilen sich aber dieselbe Eigenschaft: Ein Fehler dort trifft nicht nur den Code, sondern unmittelbar den laufenden Betrieb und mitunter echte Daten. Wer diese drei Stellen mit derselben Sorgfalt behandelt wie die eigentliche Programmierung, senkt genau dort das Risiko, wo ein Fehler am teuersten wird.
Häufige Fragen
Warum ist ein Rollback beim Deploy so wichtig?
Weil sich nicht jeder Fehler vor dem Deploy erkennen lässt, egal wie sorgfältig geprüft wurde. Ein getesteter, schneller Rollback begrenzt den Schaden eines fehlerhaften Deploys auf Minuten statt auf Stunden, in denen das System im schlechten Zustand bleibt.
Was macht eine Migration besonders riskant?
Anders als reiner Code verändert eine Migration bestehende Daten, oft unwiderruflich. Eine gelöschte Spalte oder ein geänderter Datentyp lässt sich nicht einfach zurücksetzen, selbst wenn der zugehörige Code danach fehlerfrei läuft – deshalb braucht jede Migration eine getestete Sicherung vorab.
Wie prüft man eine neue Abhängigkeit vor dem Einbinden?
Über den Pflegezustand des Pakets, die Anzahl und Aktualität seiner eigenen Abhängigkeiten sowie die tatsächlich benötigten Rechte im Verhältnis zu seiner Aufgabe. Ein Paket, das deutlich mehr Zugriff verlangt, als seine Funktion erfordert, verdient besondere Vorsicht.
Reicht eine automatische Sicherung vor der Migration?
Nur, wenn sie tatsächlich zurückgespielt werden kann. Eine Sicherung, die zwar erstellt, aber nie im Ernstfall getestet wurde, ist kein verlässlicher Schutz – die Wiederherstellung sollte regelmäßig geprobt werden, nicht nur die Erstellung.
Wer trägt die Verantwortung, wenn eine Auslieferung schiefgeht?
Das hängt vom Einzelfall und der vertraglichen Situation ab und lässt sich nicht pauschal beantworten. Klar ist, dass eine sorgfältig geprüfte Auslieferung mit funktionierendem Rollback das Risiko deutlich senkt, unabhängig davon, wie die Haftung im Streitfall verteilt wird.
Weitere Code-Audit-Themen
Code-Audit: Ablauf, Prüfschritte und Ergebnis im Überblick
Ein Code-Audit prüft fremden oder gewachsenen Quellcode strukturiert auf Sicherheit, Wartbarkeit und Architektur – vom ersten Scan bis zum priorisierten Maßnahmenkatalog. Dieser Beitrag zeigt den typischen Ablauf und was am Ende tatsächlich vorliegt.
Mehr erfahrenCode Review für KI-generierten Code: Worauf es ankommt
Ein klassisches Code Review prüft, ob Code funktioniert und dem Stil entspricht – bei KI-generiertem Code reicht das nicht aus. Dieser Beitrag zeigt, welche Fragen ein Review zusätzlich stellen muss, wenn niemand die Logik selbst geschrieben hat.
Mehr erfahrenQuality Gates in der Entwicklung: Definition und Nutzen
Ein Quality Gate ist eine feste Prüfstelle im Entwicklungsprozess, die eine Änderung nur bei erfüllter Bedingung durchlässt. Dieser Beitrag erklärt, wo ein Gate sitzen sollte, was es prüft und warum es sich auch unter Zeitdruck nicht umgehen lassen darf.
Mehr erfahrenTechnische Schulden erkennen und richtig bewerten
Technische Schulden entstehen durch schnelle statt saubere Lösungen und wachsen mit jeder weiteren Änderung an derselben Stelle. Dieser Beitrag zeigt, woran sie sich erkennen lassen, wie sich ihre Priorität bestimmen lässt und was sie im Alltag kosten.
Mehr erfahrenStatische Codeanalyse: Werkzeuge und ihre Grenzen
Statische Codeanalyse findet zuverlässig bekannte Schwachstellenmuster, hohe Komplexität und veraltete Abhängigkeiten – aber nicht, ob Code fachlich das Richtige tut. Dieser Beitrag zeigt, was Werkzeuge leisten und wo ihre Grenzen prinzipiell liegen.
Mehr erfahrenSichere Softwareauslieferung: Deploy, Migration, Pakete für Ihr Unternehmen?
Sprechen Sie mit den Code-Audit-Experten von Provimedia – unverbindlich und ohne versteckte Kosten.
