Hier ist die Geschichte meines letzten Pull Requests – die kurze Version – für die ich zwei Wochen gebraucht habe, obwohl sie am Ende nur eine neue Codezeile hinzugefügt hat. Seit einiger Zeit arbeite ich daran, die Architekten in meinem Team davon zu überzeugen, dass wir überall in unseren Online-Web-Lösungen verwaltete Identitäten verwenden müssen, und es ist mir endlich gelungen.
Warum ist das wichtig?
Dies macht die Systeme nicht nur sicherer, weil es keine Geheimnisse zu verwalten gibt, sondern reduziert auch den Aufwand für das Schreiben der „Infrastruktur-als-Code“-Dateien erheblich.
Wenn Sie zum Beispiel eine Azure-Funktion erstellen möchten, müssen Sie keinen Code schreiben, um den Zugriffsschlüssel für das zugehörige Speicherkonto abzurufen. Oder wenn Sie eine SQL Azure-Datenbank programmieren müssen, brauchen Sie keinen Tresor zu konfigurieren, um das anfängliche Kennwort zu speichern.
Um die Dinge zu beschleunigen, griff ich sogar zur Bestechung, indem ich anbot, selbst einige Codeänderungen vorzunehmen – nicht, dass sie so schwer zu überzeugen gewesen wären, aber sie hatten nicht die Ressourcen, um dies so schnell zu erledigen, wie ich es wollte.
Und selbst als ich mich selbst ans Steuer setzte, stellte sich heraus, dass ich immer noch zwei Wochen brauchte, um die Änderung zu implementieren, die den Code so konfiguriert, dass eine verwaltete Identität für den Zugriff auf die SQL Azure-Datenbanken verwendet wird.
Das Lustige daran ist, dass nur eine einzige Änderung nötig war: das NuGet-Paket Microsoft.Data.SqlClient zum Datenzugriffsmodul hinzufügen.
Die Entfaltung der Ereignisse
Wie kommt es also, dass ich so viel Zeit gebraucht habe, um nur eine Zeile Code hinzuzufügen? Hier ist eine sukzessive Auflistung der Ereignisse, wie ich sie gefühlsmäßig in Erinnerung habe:
- Ich habe die Lösung recherchiert (das war schnell und einfach, es gibt ein Tutorial auf Microsoft Learn).
- Finden Sie heraus, dass keine Code-Änderungen erforderlich sein sollten – juhu!
- Konfigurieren Sie eine Testumgebung – das ging schnell, ich musste nur dem Tutorial folgen.
- Konfigurieren Sie eine Build-Konfiguration für die Testumgebung – auch das geht schnell.
- Führen Sie einen Build durch.
- Führen Sie einen Test durch – nein, ärgerlicherweise funktioniert es nicht.
- StackOverflow zu retten, aber von den mehreren Lösungen vorgeschlagen ist es nicht klar, welche spezifische sollte ich wählen, und warum.
- Experimentieren Sie mit der Aktualisierung von NuGet-Paketen – die Lösung ist alt, wirklich, wirklich alt, und sie musste vor der Aktualisierung der Pakete auf .NET 6 migriert werden; das erforderte viel manuelle Arbeit, da die Befehlszeile direkt für die .NET 7-Pakete verwendet wurde. Am Ende musste der Architekt die Arbeit wiederholen, da ich nicht weiterkam – er kennt EF und alle SQL-bezogenen .NET-Bibliotheken, im Gegensatz zu mir – ich habe seit etwa acht Jahren keinen SQL-bezogenen Code mehr geschrieben, wenn ich mich richtig erinnere; Juhu, ich, der verwöhnte Chef der Ingenieure!
- Erneut erstellen und testen – es funktioniert immer noch nicht.
- Folgen Sie dem SO-Thread, versuchen Sie, einige NuGet-Pakete zu aktualisieren, es funktioniert immer noch nicht.
- Re-read der SO-Thread, haben eine Ahnung, dass ich die einfachste Lösung zuerst versuchen sollte – fügen Sie einfach ein NuGet-Paket.
- Erstellen und testen, und schließlich meldet die Website, dass sie auf die Datenbank zugreifen kann.
- Erstellen Sie eine Pull-Anfrage und stellen Sie fest, dass sie Änderungen enthält, die mehrere NuGet-Pakete aktualisieren.
- Erstellen Sie einen neuen Zweig, fügen Sie nur das einzelne NuGet-Paket hinzu, erstellen Sie es und machen Sie eine lange, lange Pause.
- Testen Sie und beginnen Sie zu singen, wenn die Anwendung meldet, dass sie auf die Datenbank zugreifen kann.
- Erstellen Sie den „echten“ Pull Request – eine Zeile in einer .csproj-Datei.
- Ich weiß nicht, warum ich die Erfahrung hier wegschmeiße – wahrscheinlich, um meinen Kopf frei zu bekommen.
Nachdem ich mich ein wenig beruhigt hatte, wurde mir klar, dass dies ein ganz normales Geschäft war. Und ich freute mich bei dem Gedanken, dass ich nur versprochen habe, die IaC-Systeme zu organisieren, was Spaß macht, und dass ich keinen SQL-bezogenen Code schreiben muss; oh, verwöhnt ich!