Der Migrationsprozess: Wechsel von RequireJS zu Webpack
Die Notwendigkeit, von RequireJS zu Webpack zu wechseln, war klar, aber der Umfang des Unterfangens bedeutete, dass sie davon ausgingen, dass der Prozess mindestens ein Jahr dauern und viel Komplexität und technische Bandbreite erfordern würde. Die damalige Überlegung war, dass wir die Codebasis systematisch Abschnitt für Abschnitt durchgehen und alles manuell migrieren müssten, was wirklich mühsam gewesen wäre.
Mein Durchbruch, wenn Sie es so nennen wollen, war die Erkenntnis, dass ich Code schreiben konnte, der in der Lage war, den Code des Braze-Dashboards in großen Mengen durch einen automatisierten Prozess zu ändern – und auch unseren Code rückgängig zu machen, wenn wir diese Änderungen rückgängig machen mussten schnell. Am Ende habe ich nach meinem Hack-Day-Projekt einen Proof of Concept erstellt, nur um zu zeigen, dass es funktionieren könnte, und dann in meiner Freizeit als eine Art Leidenschaftsprojekt weiter daran gearbeitet.
Das heißt, die Dinge nahmen nicht wirklich Fahrt auf, bis Greg Beaver – ein Senior Software Engineer im Braze Dashboard-Team – sich einmischte. Er konnte die Skripte, die ich als Teil meines Proof of Concept geschrieben hatte, in ein Tool integrieren, das wir mit anderen Ingenieuren teilen konnten. Das wiederum bedeutete, dass wir von RequireJS zu Webpack migrieren konnten, ohne dass alle Ingenieure, die an Code im Zusammenhang mit dem Dashboard arbeiteten, währenddessen anhalten mussten. Stattdessen konnten sie das Tool verwenden, um jeden Code, an dem sie arbeiteten, automatisch mit den allgemeinen Änderungen zu synchronisieren.
Das Tool war so schnell – es dauerte nur etwa zwei Minuten – und funktionierte so gut, dass es während der Vorbereitungen für die Migrationen tatsächlich von einem Techniker als Workaround für die langsamen Builds im Zusammenhang mit RequireJS genutzt wurde. Sie haben einfach ihren Branch auf Webpack umgestellt, die erforderlichen Änderungen vorgenommen und sie dann wieder zurückkonvertiert, damit sie sie im alten Code festschreiben konnten.
Mit dieser neuen Funktion, die uns zur Verfügung stand, bestand unser Migrationsplan darin, Gregs Tool einige Wochen lang jede Nacht auf unserem Hauptzweig auszuführen und die Leute dazu zu bringen, die QA-Umgebung dieses Zweigs manuell zu überprüfen, nur um zu sehen, ob etwas kaputt war. Als wir sicher waren, dass alles gut aussah, informierten wir den Rest der Organisation über das geplante Update, führten sie durch, wie sie ihren Code von RequireJS zu Webpack migrieren konnten, und gaben ihnen eine Vorwarnung zu einigen wichtigen Überlegungen, bevor sie es bekamen unterwegs.
Dank unseres Ansatzes wurde ein Projekt, das über ein Jahr dauern sollte, in nur drei Wochen abgeschlossen, was ziemlich unglaublich ist. Noch unerwarteter waren die Auswirkungen der Migration – insbesondere dauert der Build-Prozess auf Webpack jetzt im Allgemeinen nur etwa eine Sekunde, wodurch die für jede Codeprüfung benötigte Zeit um mehr als 99 % reduziert wird.