Was ist ein TYPO3 Deploymentsystem?
Definition TYPO3 Deployment
Bis vor einiger Zeit wurden die meisten Änderungen einer Website lokal durchgeführt und am Ende per FTP auf den Server der Liveseite übertragen. Dabei mußte teilweise händisch sichergestellt werden, welche Dateien übertragen, welche überschrieben werden sollen etc.
Möchte man danach dann, ggf. Zustände zurücksetzen, so ist dies nicht ganz einfach, da die Dateien ja überschrieben wurden. Darüber hinaus benötigen FTP Aktualisierungen meist deutlich mehr Zeit und bietet sehr wenig Flexibilität.
Ein GIT basiertes TYPO3 Deployment erleichtert die Sache ungemein. Es werden keine Dateien mehr manuell auf den Server übertragen, stattdessen löst ein GIT Push eine sog. Pipeline aus, die dann vollkommen automatisch den neuen Stand auf den Webserver überträgt. Dabei kann zwischen beliebigen Versionen / Stages separiert werden, so dass z.B. nur durchgetestete, robuste Feature ins Livesystem gelangen.
Was passiert bei einem Deploymentsystem?
Bei allen TYPO3 Projekten nutze ich GIT als Versionierung. Dies bedeutet, dass es ein Historie aller Dateien und deren Versionen gibt.
Ist ein neues Feature, Hotfix oder ein neuer Release erstellt so erfolgt der sog. Push ins GIT Repository. Dort wird ein Prozess ausgelöst, der mit Hilfe eines von mir erstellten Dockerimages eine TYPO3 Installation auf dem Zielserver und dessen Stage (Develop, Production etc.) vornimmt und alle Dateien synchronisiert.
Es existieren so i.d.R. fünf Versionen der TYPO3 Instanz pro Stage. Vor dem erstellen der neuen Version erfolgt automatisch ein Backup der Datenbank. Auf diese Weise kann einfach und schnell im WorstCase ein Rollback auf eine vorherige Version erfolgen.
Des Weiteren werden so manuelle Fehler etc. vermieden, zudem gibt es eine vollkommen Historie.
Wann sollte ein Deploymentsystem genutzt werden?
So oft wie möglich. Aus der Erfahrung kann ich sagen, dass sich Kunden und deren Anforderungen stetig verändern und auch erweitern können. Setzt man bereits früh auf Mechanismen wie Deployments, so ist die Erweiterung i.d.R. problemlos möglich.
Grundsätzlich sollte ein Deployment immer da eingesetzt werden, wo stetig Veränderungen zu erwarten sind, Kunden z.B. regelmäßig Anforderungen einkippen etc. Dies können auch Veränderungen bestehender Prozesse etc. sein.
Im Wesentlichen nutze ich Gitlab CI in Verbindung mit Deployer sowie auch ein manuelles Bashscript für den Fall, dass der Hoster gewisse Einstellungen etc. nicht zur Verfügung stellt.
Das Aufsetzen eines Deploymentsystems ist nicht sehr aufwendig und bei nahezu allen guten Hostern möglich.