Auslieferung von Webprojekten Deployment Strategien
Was ist das Ziel?
Kurz ausgedrückt: eine 1-Klick-Lösung
Was genau bringt das für Vorteile mit sich?
- einfache Anwendung
- keine Fachkenntnisse für die Ausführung erforderlich
- schnell durchführbar
- testbar, da alle Arbeitsschritte automatisch ausgeführt werden
- Einsatz von Continuous Integration möglich
Entwicklungsintervall (Beispiel)
- Entwicklung (mit eventuelles realtime Deployment zu einer Testumgebung
- Deployment auf Staging
- QA
- Deployment auf Staging (mit Bugfixes)
- QA
- Deployment auf Produktion
Verantwortlichkeit
Für das Deployment sollte eine feste Person aus dem Projektteam verantwortlich sein. Diese Person ist Ansprechpartner für die Entwickler, wenn es um den Umgang mit dem Deployment geht. Es werden Fragen wie "wo müssen Dateien liegen" oder "wie gehe ich mit Updates um" auftauchen, die vom Deployment Manager beantwortet werden.
Eigenschaften eines Deployment Managers:
- sehr gute Projektkenntnisse
- gute System Kenntnisse (System-Administrator?)
- Programmier-Kenntnisse
- Bereitschaft zur Arbeit an ausgefallenen Arbeitszeiten, wie Wochenende oder Mitternacht (oder beides ;))

Dokumentation
Es ist sehr wichtig, dass der komplette Deployment-Prozess klar definiert wird. Dadurch wird sichergestellt, dass auch jemand anderes diese Arbeit übernehmen kann. Des weiteren haben dadurch die Entwickler eine Anlaufstelle, wenn Sie Details zu Deployment wissen wollen (die eventuell bei der Umsetzung des Projektes benötigt werden).
In der Dokumentation wird das Konzept für das Deployment festgelegt:
- Der Workflow des Deploys
- Fallback Szenario
- Systemvoraussetzungen
- Dauer eines Deploy-Vorganges (=Ausfallzeit)
Strategien zur Ausführung
Es gibt mehrere Strategien, die die Regelung des Deploy-Prozesses festlegen:
- manuelles Auslösen des Deploy Prozesses
- halb-automatisches Auslösen des Deploy Prozesses
- automatisches Auslösen des Deploy Prozesses
- zeitlich gesteuerter Prozess
- Event gesteuerter Prozess
Unsere Buchempfehlung
Minimierung der Ausfallzeit
Die Ausfallzeit durch das Deployment muss meist sehr kurz gehalten werden, da durch Ausfallzeit meist finanzieller oder viraler Schaden entsteht. Um die Ausfallzeit kurz zu halten, sollte folgendes eingehalten werden:
- vollautomatisches Script - 1-Klick-Methode (nur dadurch können alle Schritte (Workflow) als Vorbereitung getestet werden)
- Ausführung durch den Deployment Manager (falls ein Problem auftritt, weiss er als erstes was zu tun ist)
- Testlauf in einer Staging-Umgebung
- aktuelle vorliegende Dokumentationen (Deployment und Entwicklung; Stichwort "Betriebshandbuch")
Verwendung vorhandener Tools
- Version control systems (SVN, GIT)
- Capistrano, Ant, Make, bash, Phing, PEAR, PHP
- CruiseControl, Hudson
- phpUnderControl (requires CruiseControl)
Umgang mit der Datenbank
- dbdeploy
Strukturierung des Version Control System
- Projektdateien
- Projektkonfigurationsdateien
- System Konfigurationsdateien
- Skripte (Build, Deployment, Update, Wartung, Cronjobs, u.s.w.)
Lösung
Die Lösung ist ein Skript in der Sprache seiner Wahl (bash, PHP, ...) kombiniert mit einem Version Control System (SVN, GIT, ...). Idealerweise sollten so viel wie möglich Funktionalität aus dem individuellen Skript ausgelagert sind. Dazu können z.B. Lösungen wie dbdeploy, drush (für Drupal) oder PEAR Pakete zum Einsatz kommen.
Alle hier aufgeführten Informationen / Dokumentationen sind nur als Denkanstoß gedacht und wurden mit großer Sorgfalt erarbeitet. Es besteht jedoch kein Anrecht auf Vollständigkeit / Richtigkeit. Der Autor kann für eventuell verbliebene fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Gleiches gilt für entstandene Schäden bei unsachgemäßer Ausführung! Im Zweifelsfall immer einen Fachmann mit der Durchführung beauftragen!
Gerne bieten wir Ihnen hierfür unsere Consulting Dienste an. © Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten.


