Ein Deployment Manager und Prozess Manager Release ist für die Planung und entsprechende Ausführung eines Deployments verantwortlich. Er sorgt dafür dass das Release richtig verwaltet, getestet und implementiert wird. Die Notwendigkeit, dass ein Deployment Manager für ein Projekt gebraucht wird, erkennen viele Projekt-Verantwortliche oft zu spät. Im schlimmsten Fall nach dem ersten GoLive des Produkts. Erst hier wird den Team-Mitgliedern bewusst, dass sich das Projekt nicht von alleine auf die Produktivumgebung installiert und dass dabei einige Hürden zu nehmen sind.
Wann der Deployment Manager ins Team kommt
Die Aufgaben des Deployment Managers starten bereits bevor das Entwickler Team seine Arbeit beginnt. Es müssen nämlich vorher Entscheidung zur Infrastruktur und zu Schnittstellen zwischen Deployment und Entwicklung getroffen werden. Zum Beispiel: “Was muss der Entwickler beachten, damit das Projekt deployed werden kann?” Ist das Deployment Konzept ausgearbeitet, geht es an die Umsetzung. Dabei wird in einem fortlaufenden Prozess das Deployment an das Projekt und die Infrastruktur immer wieder abgeglichen und verbessert. Die Aufgaben des Deployment Managers endet nicht mit dem GoLive. Ist das Projekt live gegangen, geht es darum Mechanismen einzuführen, wie das Projekt weiter betrieben wird: Umgang mit Service Releases und Feature Releases.
Zusammenfassend: Der Aufgabenbereich eines Deployment Managers zieht sich durch alle Lebenszyklen des Projektes und endet nicht mit dem Rollout des ersten Releases oder der Erstellung eines Konzeptes zum Deployment (wie von vielen angenommen wird). Das beste Deployment Konzept ist nutzlos, wenn es nicht richtig verstanden, ein- und umgesetzt wird.
Wer einen Deployment Manager braucht
Die Frage, welches Projekt einen Deployment Manger braucht ist einfach zu beantworten: jedes Projekt! Je nach Projektgröße wird dessen Tätigkeitsbereich abgesteckt. Bei kleineren Projekten wird die Rolle jemand aus dem Team übernehmen und Deployment Tätigkeiten durchführen - hierbei ist wichtig, dass klar kommuniziert wird, dass dieses Team-Mitglied das Mandat dazu hat und auch als Ansprechpartner dient. Oft ist es hilfreich den Mitarbeiter vorher durch einem externen Deployment Experten beraten oder schulen zu lassen. Bei umfangreicheren Projekten holt man sich auf jeden Fall einen Deployment Experten ins Team, der den Deployment Prozess professionell begleitet und das Team unterstützt.
Im folgenden wird anhand der Größe und Komplexität die Rolle des Deployment Manager definiert:
Kleine Projekte
In kleinen Projekten übernimmt die Aufgaben des Deployment Managers jemand aus dem Entwickler Team, zusätzlich zu dessen eigentlicher Tätigkeit. Meist handelt es sich hierbei um einen Devop (also jemand, der sowohl Entwickler ist also auch Systemadministrator ist).
Kleine Projekte mit dezidiertem Deployment Manager
Die Rolle des Deployment Managers wird von einer Person übernommen, die sich nur um diese Tätigkeit kümmert. In kleinen Projekten werden die Aufgaben des Deployment Managers meist mit operativen Tätigkeiten zum Deployment erweitert. Es wird also alles was das Deployment angeht von dieser Person übernommen: das Erstellen des Konzeptes, die Umsetzungen zum Deployment (Build Scripte erstellen, Systemumgebungen einrichten).
Projekte mit dezidiertem Deployment Manager
Die Rolle des Deployment Managers wird von einer Person übernommen, die sich um die konzeptionellen Arbeiten, die Aufgabensteuerung und um die Einhaltung des Deployment Konzepts kümmert. Die Umsetzung auf technischer Ebene was Build Skripte oder Systemumgebungen angeht, werden durch einem Deployment Team übernommen (z.B. System Administratoren, QA, Entwickler, etc).
Große Projekte
In großen Projekten wird die Rolle des Deployment Managers in kleinere Teilbereiche aufgeteilt, wie z.B. Deployment Prozess Owner (er hat den Hut für den gesamten Deployment Prozess auf), Deployment Projekt Manager (verantwortlich für die Aufgabenverteilung des Deployment Teams und Berichterstellung) und Deployment Analyst (Entwicklung der Konzepte und Überprüfung von deren Einhaltung).
Aufgaben eines Deployment Manager
Die Aufgaben des Deployment Managers sind vielfältig. Der folgende Abschnitt listet die wichtigsten Tätigkeiten auf, die während der Arbeit an einem Projekt anfallen. Die Aufgabe eines Deployment Managers sind folgende:
- den Deployment Prozess in Bezug auf Effektivität, Effizienz und das Einhalten eigener Standards zu prüfen
- das Bewusstsein für den Deployment Prozess im Projekt zu entwickeln und aufrecht zu halten
- sicher zu stellen, dass die benutzten Deployment Tools einsatzbereit, automatisiert und integriert sind
- ein Team zusammen zu stellen, welches die Fähigkeiten besitzt die Aufgaben zum Deployment umzusetzen
- Inbetriebnahme des Deployment Konzeptes inklusive Transformation der alten Situation in die neue
- Projektstatusberichte (z.B. um die Transparenz zu verbessern)
- Steuerung von Konfigurationsmanagement Tools für alle Stages und lückenlose Verwendung (z.B. puppet, Chef oder CFEngine).
- Erstellung von Dokumentation, welche von allen beteiligten Parteien genutzt werden kann (Entwicklung, QA-Team, Operations, Technischer Support, etc)
- sorgt für die Umsetzung der Systemumgebungen und Deployment-Skripte, die für die Deployment Pipeline benötigt werden
- Ausarbeitung eines Schlachtplans für Release Rollouts (sofern kein Release Manager im Projekt vorhanden ist)
- Ansprechpartner für Fragen bezüglich des Deployments für das Team und Stakeholders
- Überwachund des Status der Jobs des CI-Servers (liegen fehlgeschlagene Jobs vor, achtet er auf schnelle Behebung dieser und leitet entsprechende Maßnahmen ein.)
- sorgt dafür, dass automatisierte Tests vorliegen. Liegen diese nicht vor, wird er das Thema voran treiben.
- sorgt für Transparenz und ist Kommunikationsschnittstelle zwischen Entwicklungsteam, IT-Architekten, Deployment Team, Release- und Rollout-Manager, QA und Hosting Unternehmen
- fortlaufende Verbesserung der Prozesse zum Deployment basierend auf den aktuellen Projektanforderungen.
- lösen von operative Problemen während der Anlaufphase nach Ausrollen eines Releases (Beseitigung von Fehlern oder Mängel)
- Wissen der Projektbeteiligten aufbauen zur Deployment Pipeline (Einsatzmöglichkeiten des CI-Servers, Release-Management, Ausrollen vorheriger und neuer Releases für Tests, ScrumMaster und Product Owner Rampup für Zeitschätzung der Stories, Verständnisaufbau für Notwendigkeit zu den Deployment-Skripten, Wissen aufbauen, um das Verständnis zur Deployment Pipeline zu erreichen → wieso darf die Commit-Stage nicht länger als 5 Min. brauchen? Wie wird ein Release richtig ausgerollt um Unterschiede zu erkennen? Wie kann der Product Owner zum aktuellen Projektstatus feststellen, ob die Projektqualität so ist wie sie sein soll)
- Wertet Metriken aus, welche aus dem Deployment Prozess entstehen
- Automatisiertes Test Coverage
- Beschaffenheit der Codebasis, wie die Anzahl doppelten Codes, Cyclomatic Complexity, Efferent und Afferent Coupling, Coding Standards, etc.
- Anzahl der Defects
- Anzahl der Commits in das VCS pro Tag
- Anzahl der Builds pro Tag
- Anzahl der Build-Fehler pro Tag
- Dauer eines Builds, eingeschlossen automatisierte Tests
- Erstellt Jobs mit dem CI-Server, welche Auswertungen erzeugen
- Erstellt Reports über den Zustand der Umgebungen, der Anlieferung von portlets durch Zulieferer
- Analysiert und identifiziert Probleme zum Deployment und zur Deployment Pipeline, sucht Lösungen und sorgt für die Umsetzung durch den entsprechenden Zuständigkeitsbereich.
- Abhängig vom Fachwissen des Deployment Managers kann er bei der Umsetzung helfen (z. B. Einrichtung der CI-Server Jobs, Überprüfung des Systemzustands bezüglich des Einsatzes von Konfigurationsmanagement Tools (z.B. Puppet Enterprise))
- Abstimmung mit dem Release Manager (falls dieser vorhanden ist, andernfalls übernimmt der Deployment Manager meist dessen Aufgabe)
- die nötige Hardware rechtzeitig zur Verfügung steht (inkl. Kapazitätsplanung, Auswahl und Bestellung)
- die nötige Software richtig aufgesetzt und konfiguriert ist (inkl. Updates und Patches)
- die neuen Versionen des Projektes auf den Stages (für fachliche Tests, Integrations-Tests, Training, System-Tests) installiert werden
- der Zugriff für die betroffenen Parteien auf die Stages möglich ist (Netzwerk, Firewall, VPN, Berechtigungskonzept CI Server, etc.)
- alle Routine-Tätigkeiten automatisiert werden (indem die Erforderlichen Batch Skripte, Build Skripte oder SQL Skripte erstellt werden)
- etwaige Datenbankmigrationen bei den Updates und Patches korrekt ausgeführt werden
- die Artefakte zwischen den einzelnen Stages erhalten bleiben (soweit benötigt) und eine falls benötigt Repository Managing Software eingesetzt wird (wie z.B. Apache Archiva)
Voraussetzung für einen Deployment Manager
Die Voraussetzungen, die ein Deployment Manager mitbringen muss, sind davon abhängig, in wieweit seine Aufgaben im Projekt gehen. Die Aufgaben können stark in das Release Management, in die Qualitätssicherung und auch in die technischen Tiefen der Server-Architektur gehen. Bei den Voraussetzung gehe ich auf alle Bereiche ein. Falls ein bestimmter Teil nicht durch den Deployment Manager übernommen wird, kann dieser vernachlässigt werden:
- Kommunikationsfähig (da er sowohl das Verständnis zum Deployment Konzept bei anderen Beteiligten aufbaut und auch die Kommunikationsschnittstelle unterschiedlicher Bereiche übernimmt)
- Technische Kenntnisse über Versionierungssysteme (Git, Subversion, Mercury)
- Technische Kenntnisse zur verwendeten Systemarchitektur, Betriebssystemkenntnisse (Linux, Windows, etc.)
- Technische Kenntnisse zur Anwendungsarchitektur
- Continuous Integration Verständnis und Erfahrung (falls dies eingesetzt wird)
- Kenntnisse in Qualitätsmanagement
- Erfahrung
- Kenntnisse für den Umgang mit CI Servern (Erstellung von Jobs, Berichte, Statistiken)
Zusammenfassung
Das Aufgabengebiet eines Deployment Managers ist sehr umfangreich. Aufgrund dieser Tatsache müssen dessen Fachkenntnisse ebenfalls sehr übergreifend sein. Es ist nicht leicht Mitarbeiter dafür zu finden oder diese für die genannten Tätigkeiten des Deployment Managers zu begeistern. Die zutreffenste Gruppe werden wohl die Devops sein. Dabei handelt es sich um eine Mischung aus Entwickler und Administrator. Reine Entwickler wollen sich nicht mit dem Thema “Systemkonfiguration oder Deployment Builds” auseinander setzen. Und ein normalen Administratoren wollen nichts mit der Anwendungsentwicklung zu tun haben.
Da als Deployment Manager ein umfangreiches Wissen zum Projekt und zur Infrastruktur vorhanden sein muss, ist die Einarbeitungszeit für diesen Job relativ lange (im Vergleich zu anderen Rollen innerhalb eines Projekts). Wurde ein Deployment Manager für ein Projekt gefunden, sollte man an diesem Festhalten. Ein Wechsel in dieser Rolle ist zum einen aufgrund der langen Einarbeitungszeit mit Mehrkosten verbunden und bringt auch Instabilität ins Projekt (wie etwa Verständnisprobleme, Umstellung des Prozesses durch andere Ansichten).
Deployment Experten aus München
Unser Unternehmen aus München stellt Deployment Experten für Drupal und PHP Projekte bereit. Gerne beantworten wir Ihre Fragen zu diesem Thema. Kontaktieren Sie uns.