TYPO3 (oder auch andere Anwendungen) bestehen so gesehen aus mehreren Teilen:
- Applikation
- Dateien
- Datenbank
Applikation
Dabei handelt es sich um die Applikation. Im Falle von TYPO3 ist das der Core, sämtliche Extensions, Konfigurationen, usw. Diese werden mittels eines "Deployments" auf die verschiedenen Stages deployed. Im Grunde genommen handelt es sich dabei um das "Composer" Projekt.
Dateien
Im TYPO3 Fall ist das (meisten) der "fileadmin" Ordner. Dabei handelt es sich um Benutzer Daten. D.h. Dateien, welche vom Benutzer hochgeladen und verwendet werden. Diese sind NICHT Teil der Applikation.
Datenbank
Last but not least die "Datenbank". Dort werden Informationen wie "Seiten", "Inhaltselement", "Redakteure", usw. abgespeichert. Dies sind ebenfalls Daten, welche vom User bereitgestellt sowie verändert werden. Diese sind NICHT Teil der Applikation.
ACHTUNG!
Diese 3 Teile sind zwar immer getrennt zu betrachten, beeinflussen sich aber gegenseitig. Z.B.: Hat man eine Extension in der Applikation aktualisiert (mittels Composer), kann es sein, dass man "Analyze Database Structure" machen muss, um neue Tabellendefinition zu erstellen. Ansonsten wirft die Applikation einen Fehler.
Datenhandhabung
Auch, wie es schon jemand vorher gepostet hat, muss man mit Datenbank und Dateien (fileadmin) sehr vorsichtig umgehen. Diese verändern sich ja durch User Eingaben ständig, und sind eigentlich nur auf dem PROD System aktuell. Würde man hier auch dem DEV System etwas verändern, und dann auf die PROD kopieren/synchronisieren, hätte man einen Datenverlust zwischen dem Datum, wann man dem Dump von der PROD gezogen hat, bis eben jetzt. Da die inzwischen eingegebenen Inhalte überschrieben wurden.
Wenn man Daten verändern möchte, muss man sicherstellen, dass in der Zwischenzeit niemand auf PROD Daten eingibt (die würden einem ja fehlen). Dazu kann man sich mit "adminOnly" behelfen. Sodass keine Redakteure einsteigen, und Inhalte eingeben oder verändern können.
Wir machen das gerne für "Upgrades". D.h.
- Backend auf PROD sperren ("adminOnly" setzen)
- Daten auf DEV System spielen
- Auf DEV System Migration durchführen (wenn es mehrere Dinge sind, die auf der Datenbank angepasst werden müssen)
- Daten von DEV auf PROD spielen (durch "adminOnly" kann man sicher sein, dass keine Inhalte in der Zwischenzeit eingegeben wurden)
Ich hoffe, ich konnte das Thema etwas genauer erklären. Ansonsten gerne fragen 😁