Deployment oder Deployment-Prozess bezeichnet einen Vorgang, in welchem der Webshop-Code auf die Ziel-Webserver ausgeliefert wird und in dem Konfigurationseinstellungen oder andere für den Betrieb nötige Schritte vorgenommen werden.
Man verwendet den Begriff sowohl für die erstmalige Inbetriebnahme des Webshops („Initiales Deployment“) als auch für das Ausliefern von Änderungen an einem bestehenden Webshop.
Zumeist geht dem Deployment ein Build voraus, in dem der Quell-Code des Webshops für den Betrieb vorbereitet wird.
Der so produzierte Code wird im Deployment-Prozess auf einen oder mehrere Webserver ausgeliefert. Außerdem können Befehle auf dem Webserver ausgeführt werden, um Konfigurationseinstellungen anzupassen, Datenbank-Befehle auszuführen, Caches zu leeren und vieles mehr.
Continuous Deployment und Continuous Delivery
Deployments sollten vollautomatisch, oder zumindest teilautomatisch, ausgeführt werden können. Unterschieden wird bei der vollautomatischen Auslieferung gerne zwischen Continuous Deployment, bei dem der Prozess sofort angestoßen wird, wenn Code-Änderungen gemacht werden, und Continuous Delivery, bei dem der Prozess auch vollautomatisch abläuft, aber doch von einem Menschen manuell über einen einfachen Befehl oder Maus-Klick angestoßen wird.
Mein Ansatz:
- In Nicht-Produktiv-Systeme, also Test-, QA- oder Staging-Umgebungen, lasse ich Änderungen vollautomatisch sofort nach einer Änderung ausliefern („Continuous Deployment“). Hier sollen die Neuigkeiten so schnell wie möglich zur Verfügung stehen, um möglichst schnelle Feedback-Schleifen zu haben.
- In Produktiv-Systeme, also die Live-Umgebung, rolle ich Änderungen auf manuellen Knopfdruck aus („Continuous Delivery“). Kaum ein Webshop ist zu 100 % mit automatischen Testfällen abgedeckt, alle Features sind mit Feature-Toggles implementiert, und Änderungen können zu jedem beliebigen Zeitpunkt ausgerollt werden ohne Shop-Verantwortliche vorab zu implementieren. Daher ist das unkomplizierte und hocheffiziente, aber doch mit mehr Kontrolle versehene Deployment auf Knopfdruck meine Wahl.
Deployment ohne Downtime
Besonders wichtig im E-Commerce ist ein Deployment ohne Downtime: Dass also Änderungen live gehen, ohne dass der Webshop deswegen offline oder im Wartungsmodus ist.
Rollbacks: Änderungen rückgängig machen
Ebenso wichtig ist eine Rollback-Strategie: Die Möglichkeit, Änderungen rückgängig zu machen, falls sich nach einem Deployment gröbere Probleme abzeichnen. Während dies auf Code-Basis in der Regel einfach zu bewerkstelligen ist, muss bei Daten- und Datenbank-Anpassungen die Möglichkeit eines Rollbacks extra mitbedacht werden.