Wie verwalten Sie beim Staging von Sites die Synchronisierung von Updates in der Datenbank?

10

Es ist allgemein anerkannt, dass Entwickler Updates über eine Staging-Site testen sollten, bevor sie auf dem Live-Server veröffentlicht werden. Sobald die Entwicklungsupdates jedoch Änderungen in Wordpress DB erfordern, werden die Dinge kompliziert, da Benutzer auf der Live-Site auch die DB aktualisieren.

Der einzige (durcheinandergebrachte) Fluss, den ich mir vorstellen kann, ist der folgende:

  1. Test auf einem lokalen Server (WAMP, XAMP usw.)
  2. Versetzen Sie die Live-Site nach der Bereitstellung in den Wartungsmodus
  3. Live-Site sichern (Duplicator, sqldump usw.)
  4. Erstellen Sie einen Klon einer gesperrten Live-Site für die Staging-Site
  5. Laden Sie Änderungen aus der lokalen Umgebung auf die Staging-Site hoch
  6. Testen Sie die Staging-Site
  7. Schieben Sie die Staging-Site zum Leben.
  8. Wartungsmodus entfernen

Nachteile des obigen Flusses:

  • Ausfallzeiten können für Benutzer länger als erwartet sein, während der Entwickler Aktualisierungen auf der Staging-Site sorgfältig testet.
  • Möglicherweise müssen Änderungen manuell verwaltet werden: Beispielsweise werden Siteorigin-Pagebuilder-Layouts in der Datenbank gespeichert. Sobald ein Layout geändert wurde, muss es manuell in die Staging-Site importiert werden. In diesem Fall kann es angemessen sein, Seiten einfach auf der Staging-Site abzulegen und zu importieren und sie, falls dies funktioniert, in die Live-Site zu importieren

Ich frage mich, ob es einen besseren und automatisierteren Weg gibt, dies zu erreichen.

Was denkst du?

BEARBEITEN, wie gewünscht, wurden in der Vergangenheit einige Lösungen vorgeschlagen, aber keine bietet eine endgültige Lösung:

Riccardo
quelle
@ Dan9, ich dachte, es wäre sicherer, den Zugriff auf die Live-Site zu minimieren. Ist es eine übliche Gewohnheit, Layouts auf der Live-Site zu bearbeiten? Vielleicht mache ich mir zu viele Sorgen!
Riccardo
Nun, Sie können sie erstellen, aktualisieren, löschen und wiederherstellen. Worüber machst du dir Sorgen?
MinhTri
Es ist also üblich, Layouts hochzuladen, ohne sie auf der Staging-Site zu testen. Was ist Ihr typischer Workflow (lokal / Staging / Live)?
Riccardo
Schauen Sie sich das wp-sync-db Plugin an .
MinhTri
Ist es zuverlässig? Verwenden Sie dieses Tool?
Riccardo

Antworten:

2

Neuere Hosting-Anbieter, die speziell auf WordPress zugeschnitten sind, verfügen normalerweise über Tools, um diesen Schmerz zu lindern. Ich habe meine Kunden auf Pantheon gestellt, das über diesen übersichtlichen Git-fähigen Workflow verfügt , bei dem der Code nur nach oben (von der Entwicklung über die Bereitstellung bis zur Produktion) und das DB-Material nur nach unten (umgekehrt vom Code) verschoben wird. Das Kopieren einer Datenbank von der Produktion in das Staging erfolgt mit einem Klick über die Benutzeroberfläche. Vorausgesetzt, dieser Workflow wird eingehalten, entfällt das Problem, die Produktionsdatenbank jemals durcheinander zu bringen, und ich kann meine Änderungen in beiden Entwicklungsphasen immer auf einem neuen Klon von Produktionsdatenbanken testen.

Pantheon muss nicht verwendet werden - Sie können einen ähnlichen Ansatz in Ihrem Prozess mit Ihren eigenen Tools anwenden (Git + ein DB-Klon-Plugin wie WP Migrate DB). Ich finde nur, dass dieser Weg für mich gut funktioniert.

Frage: Warum sollten Sie Ihre Produktionsstätte beim Testen der Bereitstellung in den Wartungsmodus versetzen? In den meisten Fällen sollte dies nicht erforderlich sein. Der einzige Fall, den ich mir vorstellen kann, ist ein sehr sprödes System, das sehr empfindlich auf zusätzliche Benutzerdaten reagiert, mit einem katastrophalen Fehler beim Booten - aber das würde wahrscheinlich auf ein anderes, größeres Problem hinweisen, wenn es nötig wäre die gesamte Architektur ihres Produkts zu überdenken.

montrealistisch
quelle
Mein Provider ermöglicht das Erstellen von Staging-Sites mit einem Klick und Push-to-Live mit einer detaillierten Auswahl von Tabellen, die neu geschrieben werden. Dennoch muss ich Benutzer sperren, während der endgültige Test ausgeführt wird, da ein Teil der Bereitstellung entwicklerseitige Daten in die Datenbank einspeist (Sitebuilder-Seitenlayouts werden beispielsweise in der Datenbank gespeichert), sodass Benutzer während dieser Phase die Aktualisierung beenden müssen. Wenn Sie eine bessere Idee haben, wie Sie diesen Schritt erreichen können, würde ich sie gerne mit Ihnen teilen!
Riccardo
Übrigens, gehen Sie jedes Mal, wenn eine kleine Änderung vorgenommen wurde, durch den Dev / Staging / Live-Flow? Zum Beispiel das Layout einer Seite im Editor leicht ändern oder ein Menü ändern
Riccardo
Ja - Dateien durchlaufen jedes Mal dev -> staging -> prod (vielleicht können Sie staging oder dev deaktivieren - erinnern Sie sich nicht). Dev ist für das Entwicklerteam, die Inszenierung dient der Qualitätssicherung oder der Genehmigung durch den Designer / Kunden, bevor es zum Produkt geht.
Montrealist
1

Schauen Sie sich VersionPress an, das die GIT-Versionierung auf den gesamten Prozess (Dateien und Datenbank) überträgt.

Wie auf ihrer Website beschrieben:

VersionPress bietet schmerzloses Staging . Dies bedeutet, dass Sie auf einfache Weise eine sichere Testumgebung für Ihre Änderungen erstellen und diese erst wieder zusammenführen können, wenn sie bereit sind. Zusammenführen ist hier das Schlüsselwort - VersionPress behandelt Situationen, in denen Ihre Live-Site in der Zwischenzeit nahtlos neuen Inhalt hatte.

marekeiba
quelle
Wie kann ich die Zuverlässigkeit dieses Tools überprüfen?
Riccardo