Facebook skizzierte seine Migration zu MySQL 8.0, eine Menge Kopfschmerzen und einen Zeitplan, der hervorhebt, dass Upgrades selbst für ein Unternehmen, das für seine technische Kompetenz und Größe bekannt ist, schmerzhaft sein können.
In einem Blogbeitrag hat das Entwicklerteam von Facebook ein MySQL-Upgrade von 5.6 auf 8.0 beschrieben. MySQL dient als Basis für Facebooks Speicher-Engine, Replikation und Workloads. Facebook hatte benutzerdefinierte Funktionen mit der Open-Source-Datenbank, musste sicherstellen, dass die Replikation kompatibel war, und musste Änderungen minimieren und gleichzeitig die Leistung steigern.
Das Upgrade ist lesenswert, da es zeigt, wie Unternehmen Open-Source-Software anpassen können und am Ende alle Komplikationen eines proprietären Systems haben. Hier sind ein paar Erkenntnisse aus der MySQL 8.0-Upgrade-Analyse von Facebook.
Die Fertigstellung des Projekts dauerte einige Jahre. Das letzte große Versions-Upgrade von Facebook auf MySQL 5.6 hat mehr als ein Jahr gedauert, bis es eingeführt wurde. Facebook entschied sich bei der Entwicklung seiner MyRocks-Speicher-Engine, ein Upgrade auf 5.7 zu überspringen. MySQL 8.0 wurde angekündigt, als MyRocks fertiggestellt war, also entschied sich Facebook für ein Upgrade, um seine Speicher-Engine zu verbessern. Facebook musste 1.700 Code-Patches von seinem angepassten MySQL 5.6-Zweig auf 8.0 portieren. Der Aufwand wurde durch neue MySQL-Funktionen von Facebook und Fixes erschwert, die der 5.6-Codebasis ständig hinzugefügt wurden. Beim Upgrade von 5.6 auf 8.0 wurde 5.7 vollständig übersprungen und einige APIs wurden entweder veraltet oder vollständig entfernt. Jede Anwendung, die die alten APIs verwendet, benötigt ein Update. Die Dokumentation des benutzerdefinierten Codes war fleckig. Facebook sagte, dass der größte Teil seines benutzerdefinierten Codes gute Kommentare und Dokumentationen enthielt. Anderer Code war ebenfalls nicht dokumentiert, und Facebook musste alte Dokumente, Posts und Codekommentare durchforsten, um den Verlauf zu verstehen. Die komplexesten Funktionen erforderten erhebliche Änderungen an MySQL 8.0 und es mussten Kompatibilitätsprobleme gelöst werden. Am Ende hat Facebook mehr als 2.300 Patches ausgewertet und 1.500 davon auf MySQL 8.0 portiert.
War sich das Upgrade gelohnt? Facebook argumentierte, dass das MySQL 8.0-Upgrade die Möglichkeiten des Unternehmens erheblich verbessert. Möglicherweise möchte Facebook jedoch bereits über zukünftige Upgrades nachdenken.
Verwandte Themen:
Unternehmenssoftware Digitale Transformation Robotik Internet der Dinge Innovation CXO