Über unsMediaKontaktImpressum
Petteri Ahonen 29. Januar 2020

DevOps-Plattformen: der einfachste Weg zu einer soliden DevOps-Architektur

DevOps mag eine Form der Unternehmens- und Entwicklungskultur sein. Darüber wurde bereits viel gesagt und geschrieben. Wer bei DevOps erfolgreich sein will, muss allerdings nicht nur unternehmensweit zusammenarbeiten können und wollen, um die Softwarebereitstellung auf optimalem Niveau zu erleichtern. Er muss vor allem auch Know-how über Automatisierung und Konfigurationsmanagement mitbringen. Und: Er braucht Tools – und die Nutzung dieser Tools wird über eine DevOps-Plattform erheblich erleichtert. Doch welche Features muss eine Plattform abbilden, welche Tools muss sie enthalten und was macht sie leistungsstark? Last but not least: Macht Outsourcing Sinn?

Eine DevOps-Plattform als Automatisierungswerkzeug

Eine DevOps-Plattform ist im Grunde nichts anderes als ein zentralisiertes, webbasiertes Automatisierungswerkzeug für eine beliebige Anzahl von Funktionen, die den ganzen DevOps-Zyklus umfassen – Continuous Integration (CI), Continuous Delivery (CD) und Continuous Testing (CT) – also auch Quellcodeverwaltung oder Überwachung und Versionierung. Die entsprechenden Tools ermöglichen es, den entwickelten Code, die zugehörige Dokumentation und die Workflows zu standardisieren und sie mit einer zentralisierten Anwenderverwaltung und zentralem Monitoring zu kombinieren. Die Plattform ist darauf ausgelegt, eine dauerhafte, automatisierte Softwareproduktionslinie mit oft nur kleinsten Änderungen zu schaffen. Die Continuous-Delivery-Pipeline unterteilt den Software-Delivery-Prozess in mehrere Phasen. Um schnelles Feedback zu geben, werden zunächst einfache und weniger zeitaufwändige Phasen getestet. Jede neue Phase schafft so mehr Vertrauen in die Qualität der Software, angefangen beim ersten Code über den ersten Low-Level-Unittest bis hin zum abschließenden Akzeptanztest. Das Deployment erfolgt schließlich völlig automatisiert. Die Pipeline, gerade laufende Prozessschritte und der Code sind für das Team und generell für alle Stakeholder jederzeit transparent und bieten die Möglichkeit für zeitnahes Feedback.

Es gibt einige dieser Plattformen auf dem Markt – gehostet und gewartet von speziellen Anbietern oder sogar selbst entwickelt. Worauf also sollte man achten, wenn man über derartige Plattformen nachdenkt?

Features einer DevOps-Plattform

Eine Referenzplattform hilft beim Start eines kundenspezifischen Plattformdesigns. Die darin enthaltenen Tools sind als komplette Software Assembly Line vorintegriert. Ziel ist es, eine große Bandbreite an Software-Development-Tools zu unterstützen, eine flexible, erweiterbare Tool-Architektur aufzubauen – von kommerziellen Herstellern oder aus einer Entwicklungs-, Support- und Wartungs-Praxis der Open-Source-Community. Tools zum Speichern, Versionieren, Erstellen, Testen und Freigeben von Anwendungs- und Infrastrukturcode über die Continuous-Delivery-Pipeline sind sofort einsatzbereit und werden regelmäßig aktualisiert. Vordefinierte Skripts und vorkonfigurierte DevOps-Pipelines geben Starthilfe und beschleunigen den Umsetzungsprozess, weitere Tools können ohne großen Aufwand hinzugefügt werden. Die Pipelines sollten alle wichtigen Applikationsvarianten abdecken: von Legacy-Applikationen bis hin zu State-of-the-Art-Cloud-Native-Applikationen und Mobile Apps. Um die Bereitstellung zu beschleunigen, können Pakete aus allen für die Anwendung einer Applikation notwendigen Funktionen geschnürt werden. Diese Pakete sind ohne großen Aufwand aus der Plattform heraus anpassbar für unterschiedliche Applikationsumgebungen.

Um eine Plattform effektiv zu managen, muss man in der Lage sein, Konfigurationen einfach zu ändern, Backups anzulegen und Tools in eine Testumgebung zu duplizieren, in der man radikale Veränderungen zur Verbesserung der Plattform ausprobieren kann. Hier helfen Tools zur Automatisierung der Infrastruktur, die während des Setups der Plattform genutzt werden. Viele Integrationen werden über Plug-ins gemacht, was erheblich manuelle Arbeit spart. Doch auch Plug-ins müssen upgedatet werden!

Für Continuous Testing stehen mehrere Tools zur Verfügung: sei es ein Testframework für Unit-Testing oder automatisiertes UI-Testing, seien es Tools für das Monitoring der Applikationsperformance. Automatisierte Tests und Qualitätsüberwachung können in jeder Phase des Prozesses durchgeführt werden. Der sofortige Check auf Softwarefehler sorgt dafür, dass die vorhandenen Tests oder die Architektur beim Code-Check-in eines Entwicklers nicht in Mitleidenschaft gezogen werden oder dadurch ein neues Problem entsteht. Automatisches Testing kann auch zu anderen Zeitpunkten angesetzt werden, etwa wenn einzelne Feature-Branches in der Entwicklung zusammengeführt werden oder ein Release-Kandidat aufgestellt wird.

Monitoring macht sichtbar, ob einzelne Tools funktionieren, sollte aber auf anderen Servern laufen als die Tools selbst, so dass Probleme mit den Tools es nicht kompromittieren. Dafür werden Standard-Open-Source-Technologien und bewährte Verfahren genutzt und ein skalierbares Self-Service-Modell angeboten – das alles über ein zentrales, intuitives Dashboard, das sich einfach in DevOps-Toolkits integrieren lässt, den Fortschritt verfolgt und den Ausführungsstatus in der gesamten Pipeline anzeigt. Die Performance jedes Projekts wird im Zeitverlauf gezeigt und an definierbaren KPIs gemessen. Auf Basis ihrer Aufgaben erhalten Manager und Entwickler unterschiedliche Ansichten derselben Daten. Zugleich werden hier Einsteiger dabei unterstützt, die angebundenen Tools und Erweiterungen zu verwenden.

Im Normalfall läuft die Plattform auf einem Containercluster oder in einem Multi-Data-Center-Cluster mit verteiltem Netzwerkspeicher. Rollenbasierte DevOps-Workflows und verschlüsselte Jobs schützen die Entwicklungsprozesse innerhalb der Plattform. Integrierte Überwachung und automatisierte Warnmeldungen reduzieren Ausfallzeiten und integrierte Sicherheitsmechanismen helfen dabei, Schwachstellen früh im Entwicklungslebenszyklus zu erkennen. So soll die Plattform Compliance und Datenschutz gewährleisten. Daten werden sofort oder on-demand automatisch aus der Produktionsumgebung gesichert. Das Logging aller relevanten Ereignisse in Bezug auf Konfiguration, Provisionierung, Deployment, Start und Stopp von Apps sowie Backup erfolgt mit Anwender-ID und Zeitstempel. Ebenfalls geloggt wird der Zugriff über die Plattform auf externe Systeme oder andere definierte Aktivitäten.

Durch die Entwicklung in einer zentralen und mehreren untergeordneten Linien wird es möglich, Teams mit unterschiedlichen Aufgaben zu betreuen – etwa der zentralen Entwicklung, während sich andere Developer in aktuellen App-Versionen über eine Nebenlinie des Bugfixings annehmen. Die Zusammenführungsfunktion unterstützt mehrere Revisionen, wenn Änderungen gemerged werden.

Eine Plattform kann von Anfang an als komplette Toolchain umgesetzt werden oder in Teilen der Plattformarchitektur, die später zu einer vollständigeren integrierten Pipeline ausgebaut wird.

Die Rolle der Plattform bei Continuous Delivery

Hauptfunktion einer DevOps-Plattform ist es, die Schritte der Continuous Delivery zu vereinfachen. Neue Funktionen in den entwickelten Applikationen werden zuallererst als Code in ein zentrales Code-Repository übertragen. Die entsprechenden Code-Commits der einzelnen Entwickler werden kontinuierlich in die zentrale Codebasis integriert und getestet. Dieser frühzeitige Test soll verhindern, dass ein Build bricht, oder die Ursache eines Fehlers schnell identifizieren. Sobald der Code gefixt ist, bekommt der Build grünes Licht.

Je früher Probleme erkannt werden, desto einfacher (und kostengünstiger) ist es, sie zu beheben. Die Pipeline muss deshalb alle relevanten Aspekte überprüfen – ob Benutzerfunktionalität, Sicherheit, Leistung oder Compliance. Die meisten DevOps-Teams verwenden dafür verschiedene Quality Gates. Die Quality Gates sollten – wenn möglich – automatisiert sein, können aber auch aus manuellen Checks bestehen. Getestet werden muss auch die Fähigkeit des Rollbacks, sollte doch etwas schief gehen. All das muss die Plattform unterstützen.

Grundsätzlich empfiehlt es sich, immer nur eine Teilmenge der Produktionsumgebung freizugeben: eine Testgruppe erhält dann den Release mit den neuen Funktionen und testet, wie sich dieser Release in der Produktion verhält. Die gesammelten Monitoring-Daten sind dabei sehr hilfreich, denn auf ihrer Basis kann verglichen werden, wie die Features im neuen Release im Vergleich zu den Vorversionen performen, ob sich also beispielsweise die Seiten so schnell laden wie vorher, ob ein Feature einen Fehler verursacht etc. Wenn alles gut aussieht, wird der Release entweder für alle Benutzer freigegeben oder die Testgruppe erweitert. Bei Problemen ist ein schneller Rollback möglich und nur eine kleine Teilmenge der User war von den Problemen betroffen.

Das Deployment kann über die Plattform automatisiert und sehr schnell erfolgen, so dass neue Funktionen den Anwendern in wenigen Minuten zur Verfügung stehen. Aber auch nach dem Deployment muss die Performance und Funktionalität einer Applikation überwacht und gegebenenfalls angepasst werden. Es braucht dafür nicht nur Feedback- und Kommunikationsmöglichkeiten für die Anwender (ggf. auch die Möglichkeit, ihre Nutzung zu screenen), sondern auch ein stabiles Monitoring und Alerting für Stabilität und Geschwindigkeit. Ebenfalls nötig: die Möglichkeit, Anwendungsinstanzen nach oben oder unten zu skalieren und zu reagieren, wenn Instanzen nicht mehr verfügbar sind. Dies alles sind automatisierte Funktionen, die auf der Plattform zusammenlaufen.

Eine der Hauptaufgaben der Plattform ist aber die Transparenz. Je nach Projekt- und Teamgröße kann die Vielfalt der Aufgaben schwer im Griff zu behalten sein. Die Release-Koordination bietet eine Top-Level-Sicht auf die gesamte Pipeline. Sie definiert den gesamten Software-Delivery-Prozess und führt in jeder Phase geeignete Kontrollen durch, die Ineffizienzen oder Hot Spots aufzeigen, Engpässe identifizieren und helfen, Fehler zu reduzieren und ihr Risiko zu verringern.

Schritte zu einer leistungsstarken Plattform

Wenn eine Plattform in einer Zielumgebung installiert wird, dann beginnt man meist mit der Konfiguration der Default-Workflows und den Tool-to-Tool-Integrationen. Die zugrundeliegende Infrastruktur umfasst das Netzwerk-Equipment mit VPN, Reverse Proxies und Backup-Systemen, das Monitoring-System zur Überwachung von Performance und Verfügbarkeit rund um die Uhr sowie das Ticketing-System.

In umfassenden Integrationen werden Projekt-Management-Tools mit Tools zur Softwareversionskontrolle integriert, die automatisierte Build-, Deployment- und Testing-Prozesse triggert. Continuous-Integration-Tools erleichtern das Bauen der Pipeline. Alle Tools werden über eine zentrale Zugriffskontrolle über einen LDAP-Server oder über SSO-Services integriert. Dashboards bieten einen Überblick über die gesamte Tool-Kette. Die Integration selbst läuft über tool- und technologie-spezifische Plug-ins und Extensions. Sie kann direkt über das Main User Directory oder über eine entsprechende Komponente in der Plattform, die sich dann mit dem Main User Directory synchronisiert, vorgenommen werden. Jeder aus dem Projektteam kann so direkt über RTM auf die relevanten Assets zugreifen. Auch bestehende und neue, cloud-basierte Tools können eingebunden werden.

Datenmigration und Unterstützung beim Onboarding können vom Kunden oder vom Plattform-Anbieter übernommen werden. Einzelnen Projekte werden nun innerhalb der Plattform gemeinsam mit dem Unternehmen aufgesetzt – so dass die Beteiligten lernen, wie ein einzelner Workspace aufgesetzt, ein Workflow gestaltet, die Continuous-Delivery-Pipeline definiert und die Datenmigration abgewickelt werden kann.

Um versteckten Kosten für Tool-Lizenzen vorzubeugen, hilft es, eine einzelne Tool-Instanz mit hoher Skalierbarkeit zu schaffen. Eine Falle ist auch die mangelnde Projektinformation, denn häufig werden die Daten in unterschiedlichen Systemen abgelegt, statt einen Single Point of Truth in einem zentralisierten Tool zu schaffen. Um Inkohärenzen in der Produktionslinie zu vermeiden, sollte man auf ein einheitliches Tooling setzen und über ein zentralisiertes Access-Management die gewünschte Flexibilität ermöglichen. Das zentrale Dashboard schafft eine Echtzeit-Transparenz mit unterschiedlichen Ansichten und Einblicken in die Versionskontrolle, die Ergebnisse des Automated Testing und die Einhaltung der Projekt-KPIs.

Tools in den einzelnen Phasen

Die in eine DevOps-Plattform integrierten Standardtools umfassen den gesamten Software-Lebenszyklus, unterstützen die gängigen Technologien und ermöglichen rollenspezifische Dashboards für alle Beteiligten. Die Tools müssen aber auf jeden Fall erweiterbar sein und von einem Unternehmen oder einer Community weiterentwickelt werden, um den immer wachsenden Ansprüchen genügen zu können. Es gibt zwar definierte Tool-Kategorien – doch die Realität sieht so aus, dass viele Tools Funktionalitäten aus zwei oder mehreren Kategorien erfüllen. All diese Tools gilt es, ineinander zu integrieren und aufeinander abzustimmen. Zwar bieten sie dafür selbst eine Vielzahl von APIs, aber eine Orchestrierung nur darüber wäre extrem aufwändig. Eine Plattform schafft hier Abhilfe – optimalerweise als Managed Service, den zu leisten Spezialisten überlassen bleibt. Sie verbindet die Tools nicht nur effizient miteinander, sondern bietet auch einen Überblick, ohne sich auf die Kommunikation mit Einzelnen verlassen zu müssen.

In einer ersten Phase muss die Softwareentwicklung in allen Projekten harmonisiert und die Möglichkeit zur Automatisierung geschaffen werden. Die Tools werden dabei ineinander integriert, um einen einheitlichen Zugriff zu gewährleisten und einen nahtlosen Informationsaustausch zu gewährleisten. Allerdings sollte man gleich zu Beginn darauf achten, die richtigen Tools zu wählen, denn der Wechsel verlangt eine aufwändige Migration. Die Daten müssen auf das neue Tool gemappt werden und die Beziehung zwischen Quelle und Ziel ist nicht immer 1:1, so dass das Risiko eines Datenverlustes besteht.

  • Zentralisiertes User-Management: Ein User kann mit seinem spezifischen Login alle Systeme und Tools nutzen – was einerseits die Nutzungsrate steigert, zum anderen das gruppen-basierte User-Management vereinfacht. Rollen wie Systemadministrator, Entwickler und nur Lesezugriff sind meist vordefiniert und können auf dieser Basis weiter ausdifferenziert werden.
  • Code-Analyse: Statische Code-Analyse bietet beispielsweise Informationen zur Komplexität, zur Einhaltung gängiger Verfahren und zu potenziellen Sicherheitslücken.
  • Versionskontrolle: Entwicklung ist dann effizient, wenn der gesamte Software-Code in einem (unternehmenseigenen!) System ist. So kann jede Vorversion einfach wiederhergestellt werden, Teams können simultan arbeiten und es geht keine Arbeit verloren. Die einzelnen Tools verwalten logische Einheiten oft unterschiedlich – es ist deshalb essenziell, dasselbe Tool teamübergreifend einzusetzen. Wichtig ist, dass die Daten gut gesichert werden. Nützlich ist, wenn hier bestimmte Prozesse festgelegt werden können, wie etwa Release-Management oder Code-Review.
  • Workflow-Management: Für möglichst große Transparenz ist es hilfreich, die einzelnen Aufgaben und ihre gegenseitigen Abhängigkeiten separat in einem System zu führen und auf dieser Basis KPIs zu vergeben. So werden Engpässe sichtbar und die Ressourcen können auf kritische Punkte konzentriert werden. Diese Tools sollten sowohl die Softwareentwicklung als auch die Anschaffungen im IT-Bereich monitoren und klares Reporting bieten.
  • Dokumentation: Für jedes neue Projekt wird ein Workspace als zentraler Datenspeicher für die "Insider-Informationen" geschaffen. Diese Systeme dienen als eigener Kommunikationskanal für die Projektmitglieder aber auch darüber hinaus.
  • Continuous Delivery: Über die Standardisierung der Entwicklungs- und Testphasen hinaus muss auch die Speicherung kompletter Software-Pakete, die Bereitstellung der Umgebungen und die Überführung der Software in die Produktion automatisiert und vor allem flexibel auf veränderte Anforderungen angepasst werden.

Wenn es um das Aufsetzen von Automatisierung und Continuous Integration geht, kommen Tools wie Jenkins, Bamboo, CircleCI, AWS CodeBuild und VSTS zum Einsatz.

Zu den geläufigsten Tools für Testing und Testautomatisierung zählen Robot Framework, Selenium, Gatling, Junit, Cucumber, JMeter, Fortify, SonarQube, ZAP und Veracode.

Den Rollout automatisieren etwa XebiaLabs DevOps Platform, Spinnacker, IBM UrbanCode Deploy, CA Automic, Octopus Deploy und AWS Code Deploy.

In einer zweiten Phase geht es darum, aufgesetzte Projekte zu überwachen und zu optimieren. Hierbei müssen folgende Aspekte berücksichtigt werden:

  • Binary Storage: Zentral gespeicherter Binary sorgt dafür, dass derselbe Binary später wieder genutzt werden kann. Auch wiederverwendbare Libraries werden gespeichert, versioniert und verteilt. Bei der Auswahl dieser Systeme sollte man darauf achten, ob die im Projekt verwendeten File-Arten und Technologien unterstützt werden, wie viel Platz das System braucht und ob die Backups implementiert sind.  
  • Instant Messaging: Alle Stakeholder in einem Projekt müssen dasselbe System nutzen, in welches die Tools für Continuous Integration und Delivery zu integrieren sind. Der Grund: Der Status muss für jeden jederzeit einsehbar sein.
  • Monitoring: Zum einen ist es essenziell, zu wissen, dass alle Services laufen und keine Probleme aufgetreten sind. Gut auch, wenn man zum Lebenszyklus eines Service einen klaren automatischen und erweiterbaren Report hat und gewarnt wird, bevor etwas wirklich hakt. Zum anderen sollten Monitoring-Tools reporten, ob und wie die neu entwickelte Software einzelne Qualitätsstandards erfüllt. Sie sollte Projektteams vergleichen können, um best practices zu finden und die Entwickler in ihrer Arbeit zu unterstützen.

Betrieb, Monitoring und die Organisation des Feedback-Loops übernehmen Tools wie Elastic Stack, Grafana, New Relic, Splunk, Elastic Stack, Zabbix, SonarQube, Google Analytics oder Mixpanel.

Zu den Tools für Deployment Automation & Orchestration gehören XebiaLabs, Ansible, Chef, Puppet, Jenkins, Bamboo, Gitlab, Rancher, IBM Urbancode Release und Spinnaker.

Läuft einmal alles rund, geht es in der dritten Phase schließlich darum, das Ganze in dynamischen Umgebungen weiter zu skalieren. Die Nutzung von Cloud-Services für Entwicklung und Testing beispielsweise erhöht die Effizienz im Development und profitiert zusätzlich von durchgängiger Visibilität und agilem Releasen von Software. Bei Cloud-Services-Analysen, automatischem Produktreleasing und Testing ist es unerlässlich, das gesamte Development in Echtzeit im Auge zu behalten. Dabei geht es weniger um die Tools, sondern um die Prozesse, die stimmen müssen: Das Monitoring muss auf die Einhaltung von SLAs ausgeweitet werden, die Systeme der Serviceanbieter müssen integrierbar sein. Virtualisierung sorgt dafür, die Umgebungen zwischen verschiedenen Softwareprojekten zu harmonisieren und Umgebungen on-demand aufzusetzen. Die Entwicklung erfolgt direkt und ohne Verzögerung auf dem Ziel-Betriebssystem. Auch das Testing wird einfacher, denn die Umgebung entspricht annähernd der auf dem Computer des Entwicklers. Ebenso wird das Backup erleichtert, denn die VMs machen Snapshots des Gesamtsystems und sorgen für Hochverfügbarkeit und Disaster Recovery. Container und Microservice-Architekturen sind sogar noch effizienter im Ressourcenverbrauch.

Outsourcen oder selber machen?

Der Schritt zu DevOps ist komplex und nicht leicht zu bewältigen. Wer diese Aufgabe selbst übernehmen will, braucht Expertise im Software-Development, aber auch auf der Systemseite (Server, Linux, Setup von automatisierten Backups etc.). Und er braucht Experten für Automatisierung mit solidem Know-how zu den einzelnen Tools und Prozessen. Dennoch wird der Prozess oft mühsam und zieht zuweilen etliche versteckte Kosten mit. Der Vorteil dabei ist, dass man nicht an einen einzelnen Anbieter gebunden ist.

Viele Unternehmen holen sich jedoch Hilfe – externe Experten, die die Verantwortung für Projekte, Anwendungen und Prozesse übernehmen. Natürlich gibt es auch dabei eine Schattenseite: sei es das Ausmaß an Engagement und Wissensaustausch, sei es, dass die Langfristigkeit der DevOps-Kultur zu sehr von den Beratern abhängt, die ohnehin zur Konkurrenz mitnehmen, was sie gelernt haben. Dennoch bringt es erheblich mehr Vorteile, im DevOps-Bereich outzusourcen: schnellere Umsetzung durch Profis, die das schon oft gemacht haben. Dies bringt strategische Wettbewerbsvorteile und einen geringeren und planbaren Einsatz eigener Ressourcen. Vor allem aber spricht die Kostenseite für Outsourcing, denn die Implementierung der neuesten Tools und Practices kostet viel und ist aufwändig.

Eine Plattform ist von der Technologie-Seite her eine wichtige Komponente. Wer überlegt, sich für DevOps Hilfe zu holen, der wird auch darüber nachdenken, diese Hilfe auf den Bereich Plattform auszudehnen. Es gibt einige Standards, die sich bei der Umsetzung einer Toolchain bewährt haben. Das beginnt bei der grundlegenden Umgebung: Zunächst gilt es, die Serverinfrastruktur und die meist notwendigen umfassenden Systemintegrationen sorgfältig zu planen und die vorkonfigurierte Plattform auf die jeweiligen Bedürfnisse anzupassen. Dies ist ein klassischer Beraterjob, der einige Routine erfordert. Ob die Plattform on-premise beim Kunden oder in der Cloud betrieben wird, ist eine Frage von eigenen Kapazitäten und der vereinbarten SLAs. Datenmigration, Konfiguration, Installation und anfänglicher Support der Nutzer können erheblichen Aufwand verursachen, wenn sie nicht von Anfang an umsichtig geplant werden. Eine eigene Softwareproduktionslinie aufzusetzen ist nicht nur ein Zeitfresser, es gibt auch viele unvorhergesehene Arbeiten, die nur mit Mehr-Kapazität abgedeckt werden können. Outsourcing kann hier viel Zeit und Mühe sparen, denn die Spezialisten kommen mit einer bestehenden Toolchain, die nur angepasst werden muss. Der optimierte Workflow, das Tooling und die Methoden sind einheitlich für das ganze Unternehmen.

Doch die Plattform muss kontinuierlich weiterentwickelt und angepasst werden. Unternehmen können, wenn sie das wollen, auch selbst neue Funktionalitäten, Plugins und Tools in ihre Plattforminstanz aufnehmen – egal, ob es um zusätzliche Automatisierung, Sicherheit oder Datenanalyse geht. Der Einsatz von externen Spezialisten ist dann besonders sinnvoll, wenn es um die Evaluierung, Auswahl und Integration der vielen, neu auf den Markt geworfenen DevOps-Tools geht. Diese Reifeprüfung braucht Know-how und Zeit. Auch bei anspruchsvollen Toolkonfigurationen und -integrationen sowie zusätzlichem Development macht Outsourcing viel Sinn. Die gehostete Plattform wird automatisch vom Anbieter gewartet, supportet und weiterentwickelt. Sie umfasst optimalerweise alle Tools für modernes Software-Development, vom Requirement-Management bis hin zum automatisierten Deployment.

Von den SLAs ist es auch abhängig, wieviel Maintenance und Service ausgelagert wird. Immerhin hängt viel davon ab, dass die Plattform immer verfügbar, aktualisiert und performant ist. Incident-Management, Problem-Prävention und Troubleshooting muss auf jeden Fall in den Händen von verfügbaren Experten sein, denn Disaster-Recovery muss solide geplant und getestet werden, vor allem weil ohne Backup jede Security wertlos ist. Es empfiehlt sich, On-Demand-Support auf jeden Fall einzuplanen und dennoch Personal inhouse zu schulen bzw. schulen zu lassen. Auch ungeliebte Aufgaben wie Software-Lizenzmanagement sind bei Service-Anbietern gut aufgehoben.

Die Experten des Service-Anbieters müssen also nicht nur einiges an DevOps-Routine mitbringen, sie brauchen auch die Neugier und das Engagement, die Unternehmen kennenzulernen und eine passende Roadmap mit Methoden, Technologien und Tools zu erstellen. Sie begleiten das Unternehmen dann auch im Umsetzungsprozess, setzen die Software-Produktionspipeline mit allen notwendigen Automatisierungstools auf und schulen die Mitarbeiter. Damit sind sie die Türöffner für DevOps im Unternehmen und die Plattform ist eines ihrer wichtigsten Tools – ein Werkzeug für automatisierte Systemspezifikation, für Tool-Setup und Netzwerk-Integration.

DevOps-Plattformen der Zukunft

Weder die Entwicklung der DevOps-Plattformen noch die der -Tools bleibt stehen. Derzeit arbeiten die Anbieter in erster Linie daran, mehr Module zu ergänzen, um immer mehr Technologien auf der Plattform bootstrappen zu können. Platform-Extensions werden hinzugefügt und die Operabilität wird immer weiter verbessert. Auch DevOps-Metrics sind ein Trend und zunehmend mehr Produkte für den Überblick über Softwarepipelines kommen auf den Markt. Hauptaugenmerk liegt derzeit aber wohl auf der Skalierbarkeit – die Plattformen müssen sowohl mit einzelnen Instanzen beispielsweise in AWS, Azure oder GCP oder in Kubernetes laufen.

Und es kommen auch immer mehr Anbieter auf den Markt – was es für Unternehmen schwerer macht, eine Entscheidung für eine Kooperation zu treffen. Hier gilt es, nach Erfahrung und Referenzen zu fragen und auch die voraussichtliche Komplexität der Projekte in die Überlegungen einzubeziehen. Tools spielen eine große Rolle – doch Know-how eine noch größere.

Dennoch gilt aber: Wer DevOps sagt, wird früher oder später auch DevOps-Plattform sagen!

Autor

Petteri Ahonen

Petteri Ahonen verfügt über breite Management-Erfahrung in großen multinationalen Konzernen wie kleineren unternehmerischen Einheiten sowie über mehrjährige Erfahrung im operativen Management.
>> Weiterlesen
Das könnte Sie auch interessieren