Zero Downtime? Ein simpler Updateworkflow von Shopware4 auf Version 5

Zero Downtime? Ein simpler Updateworkflow von Shopware4 auf Version 5

Noch immer geistern zahlreiche Shopware4 Versionen im Netz umher. Nachdem ich jetzt schon einige Shops auf Shopware5 aktualisiert habe, wird es Zeit, mit einem Gerücht aufzuräumen: Ich hatte bisher noch keine Aktualisierung dieser Art bei der eine Zero Downtime möglich gewesen wäre. Und das ist bei diesem Versionssprung leider auch nicht machbar. Die Gründe dafür möchte ich hier beschreiben.

Der optimale update-Workflow

Aber zunächst zu dem Workflow, der sich so bei meinen Aktualisierungen bewährt hat:

  1. Kopiere die Liveseite komplett auf eine passwortgeschützte Testumgebung. Zum Beispiel auf test.meinedomain.de. Kopiere dafür auch die Datenbank.
  2. Aktualisiere alle Plugins auf der neuen Testumgebung.
  3. Aktualisiere Shopware auf dem Testsystem so lange, bis die aktuelle Version erreicht ist. Lege nach jedem Update ein Backup an, damit du im Notfall nicht alles nochmal machen musst.
  4. Aktualisiere das Theme und passe das neue Design an. Lasse die Designanpassungen vom Kunden freigeben.
  5. Vergewissere dich, dass alle Plugins richtig funktionieren und der Shop das tut, was er soll
  6. Erstelle eine Backup der Liveseite
  7. Nimm die Liveseite vom Netz und verweise auf eine Wartungsseite (Benutze nicht den Wartungsmodus). Sorge zum Beispiel mit einem IP-basierten Rewrite dafür, dass du die Liveseite weiterhin erreichen kannst.
  8. Führe das Update (Schritt 2-4 auf dem Livesystem noch einmal durch)
  9. Übertrage alle notwendigen Einstellungen vom Testsystem auf das Livesystem
  10. Nimm die Liveseite wieder online

Warum das Doppel-Update?

Der oben gezeigte Workflow enthält eine überschaubare Ausfallzeit von 2-3 Stunden. Aber warum eigentlich? Weil das relativ umfangreiche Update auf dem Testsystem zunächst sehr lange dauern kann. Bis alle Plugins und das Design dort wieder wie gewünscht funktionieren, kann es schon ein paar Tage dauern. Der Liveshop ist aber in dieser Zeit weiterhin online und erzeugt neue Bestellungen und Kundendaten. Dadurch entsteht ein Unterschied in der Datenbasis der beiden Systeme, die so leicht nicht mehr angeglichen werden kann. Aus diesem Grund wird das Update auf dem Livesystem dann einfach wiederholt. Das dauert dann nicht mehr so lange wie auf dem Testsystem, da ja die ganzen Stolperfallen nun bekannt sind.

Mögliche Zero Downtime Szenarien

Grundsätzlich gibt es die folgenden Szenarien, die versuchen die Downtime zu vermeiden:

  1. Das Update erfolgt direkt auf der Liveseite: Das ist keine gute Idee. Denn zum einen ist die Wahrscheinlichkeit hoch, dass irgendetwas nicht mehr funktioniert und zum anderen muss das Design neu angepasst werden. Wenn der Shop also dabei nicht crashed, sieht er für eine ganze Weile zumindest nicht so toll aus
  2. Das Update wird zwar auf einer Testumgebung durchgeführt aber beide Systeme teilen sich die gleiche Datenbank. So müsste man quasi nur die Filebase austauschen und der Übergang könnte Nahtlos gestaltet werden. Leider wird bei den einzelnen Updates die Datenbank mehrfach migriert und angepasst. Das bedeutet, dass die Liveseite während des Updates der Testseite crashen würde.
  3. Man macht das Update zwar auf der Testumgebung schaltet diese jedoch danach als neue Livesite online. Die Downtime wäre hier minimal oder gar nicht da. Aber es gibt einen Haken: Während des Updates und der Abnahme durch den Kunden ist Zeit vergangen. In dieser Zeit haben sich auf der Live-Seite neue Kunden registriert und Bestellungen ausgeführt. Diese Daten würden mit dem Livegang der Testumgebung verschwinden. Dieses Szenario ist nur denkbar, wenn in der Zeit des Updates keine Bestellungen eingegangen sind.
  4. Du kannst auch versuchen vor der Liveschaltung des Testsystems die Daten aus dem Altsystem zu exportieren und in das frisch aktualisierte Testsystem zu übertragen. Das funktioniert allerdings nicht mit allen Daten. Leider können Bestellungen in Shopware nicht komplett importiert werden und die Einstellungen von den meisten Plugins können nicht übernommen werden. Dieser Weg ist daher nur etwas für wirklich riesige Shops, die sich einen solchen custom Export/Import auch leisten können.

Wie du siehst ist das Doppel-Update in den meisten Fällen die einzige Variante mit der man einigermaßen sicher fährt.

Du brauchst ein Shopware Update?
Hier findest du mich!