IT-Automation – der Treiber für Innovation

Mit 30 Schritten komme ich ungefähr 30 Meter weit. Das sagt die Erfahrung. Jedoch gilt das nicht in der digitalisierten Welt. Mit 30 Schritten kann man hier ungefähr 26-mal um die Erde reisen. Und das ist dann erst einmal verwirrend. Ehemalige Marktführer wie Kodak, Blackberry und Nokia haben es erlebt und wurden überraschend schnell und meilenweit durch neue digitalisierte Technologien abgehängt.
So entstehen Technologiekonzerne quasi über Nacht und verdrängen altbewährte Firmen und lösen scheinbar plötzlich jahrelang führende Technologien ab. WhatsApp, gegründet 2009, verdrängte z. B. die SMS und wurde 2014 bei der Übernahme durch Facebook mit rund 20 Mrd. US Dollar bewertet. Innovationen werden heutzutage in den IT-Abteilungen gemacht. Die Informationstechnologie in Unternehmen hat sich von einem notwendigen Übel und Costcenter zu dem für die Zukunft wichtigsten Fortschrittsmotor entwickelt. Hier entstehen neue und disruptive Erfindungen und Geschäftsmodelle. So hat Uber, gegründet 2009, weltweit die Taxi-Industrie revolutioniert. Airbnb sorgt durch die Vermittlung von privatem Wohnraum für die Übernachtung auf Reisen. Zurzeit geht die Entwicklung von autonomer Mobilität rasant schnell voran. Erst kürzlich wurde in den USA eine autonome Taxiflotte dem Betrieb übergeben. Und sogar in Deutschland werden Tests für die Einführung von autonomen Flugtaxis geplant. Aber woher kommt das alles?
1965 erkannte Gordon Moore, dass sich die Komplexität integrierter Schaltkreise regelmäßig verdoppelt. D. h. ca. alle 12-24 Monate verdoppelt sich die Leistung der Prozessoren. So hat 1985 der Millionen US Dollar teure und damals schnellste Großrechner der Welt – die Cray-2 – gerade mal dieselbe Leistung wie das 25 Jahre später veröffentlichte IPhone 4. Aber wenn man das alles weiß, warum ist es dann so schwer vorherzusehen?
Die menschliche Vorstellungskraft ist darauf trainiert, linear zu denken und von der Vergangenheit lineare Vorhersagen für die Zukunft zu machen. Die IT entwickelt sich jedoch exponentiell. Die Prozessorleistung verdoppelt sich alle 12-24 Monate.
Sissa ibn Dahir
Exponentielles Denken ist der Legende nach auch schon dem indischen Herrscher Shihram zum Verhängnis geworden. Der Geschichte nach wollte er den Erfinder des Schachspiels Sissa ibn Dahir für seine großartige Leistung belohnen. Dieser hatte jedoch nur den vermeintlich einfachen Wunsch geäußert, der Herrscher möge ihn mit Reis beschenken und zwar solle er auf das erste Feld des Schachbrettes ein Reiskorn legen, dann auf das zweite zwei Körner, auf das dritte vier und auf das vierte dann acht, usw. Leichtfertig versprach der Herrscher die Erfüllung des Wunsches, denn das konnte ja nicht so viel sein. Weit gefehlt. Durch die exponentielle Steigerung kommt es zu einer riesigen Menge an Reis. Und zwar genau 2^64-1 Reiskörner. Das ist in etwa so viel wie die Fläche der Bundesrepublik Deutschland einen Meter hoch mit Reis bedeckt. Selbst der damals mächtigste Herrscher der Welt konnte nicht so viel Reis aufbringen. [1]
Alle 12-24 Monate verdoppeln sich die Möglichkeiten der Digitalisierung. Eine Idee oder Technologie, die heute noch unterschätzt wird, kann morgen schon einen ganzen Geschäftszweig überrollen. Dabei scheinen die Entwicklungen zunächst sehr langsam voranzuschreiten, werden lange unterschätzt um dann für viele überraschend plötzlich zu disruptiven Innovationen aufzusteigen. Die IT-Departments sind die Innovationstreiber in modernen Unternehmen. Digitalisierung und Geschwindigkeit entscheiden über Erfolg und Misserfolg. Die Möglichkeiten der exponentiellen Entwicklung innerhalb der Digitalisierung können nur genutzt werden, wenn die Prozesse darauf vorbereitet sind.
Es mangelt in Unternehmen häufig nicht an innovativen Ideen, sondern an der Möglichkeit, diese einfach und vor allem schnell zu testen und daraus für den nächsten Schritt zu lernen. Die entscheidenden Faktoren dafür sind die Geschwindigkeit sowie die Entwicklung und das Ausrollen neuer Software. Dazu kommt die Möglichkeit der ad-hoc Skalierung, Anpassung und Erweiterung. Hierbei ist die Automatisierung des gesamten Workflows die Grundlage des Erfolges.
Geschwindigkeit durch Automatisierung
Nur wenn neue Software schnell getestet, ausgeliefert und weiterentwickelt wird, können Innovationen entstehen und lebendig werden. Um innovativ sein zu können, benötigt man die notwendige Zeit und die geistige Freiheit zur Kreativität. Durch Automatisierung bekommt man die steigende Komplexität der IT-Infrastruktur unter Kontrolle und schafft somit Zeit und Raum für neue Ideen. "Automate all the things" ist das Credo der heutigen Zeit. Das bedeutet, dass alle Prozesse und Einstellungen dem Automatisierungsprozess unterworfen werden. Wenn man wirklich schnell und flexibel sein will, kann man sich keine Abhängigkeiten von manuellen Prozessen, geschweige denn von daraus folgenden zeitlichen sowie qualitativen Unsicherheiten leisten. Der gesamte Prozess ist nur so gut wie das schwächste Glied in der Kette.
Für den Aufbau einer Automatisierungslösung ist zunächst das Deployment der Infrastruktur zu betrachten. Serversysteme dienen als Basis für die Anwendungen. Neue Server und ganze Infrastrukturen müssen bildlich gesprochen auf Knopfdruck bereitgestellt werden können. Hinzu kommt die gesamte Orchestrierung der Netzwerkinfrastruktur und -dienste, sowie Bereitstellung virtueller Maschinen und Provisionierung der Speicherbereiche. Anwendungen sollen automatisiert bereitgestellt, skaliert und upgedatet werden können. Zur Qualitätssicherung dienen automatisierte Tests der einzelnen Bereiche und Integrationstests der gesamten Infrastruktur.
Standardisierung – Konfektionsgrößen
Die Reduzierung von Komplexität ist für eine potentielle Automatisierung entscheidend. Die Standardisierung der Komponenten und Prozesse ist dazu unerlässlich. Jede Abweichung von Standardisierung schafft neue Komplexitätslevel und erschwert die Automatisierung und Qualitätssicherung. Die Industrialisierung der Produktion hat es vorgemacht. Erst Standardisierung, dann Automatisierung und danach automatisierte Individualisierung. So kann man z. B. passende Kleidungsstücke in standardisierten Konfektionsgrößen erwerben und diese einfach und qualitativ hochwertig am Fließband produzieren. Die sogenannten T-Shirtgrößen S-M-L-XL fassen wichtige Merkmale zusammen und vereinfachen die Auswahl für den Kunden.
Eine Standardisierung der IT-Infrastruktur sollte nach demselben Prinzip verfahren. Serversysteme werden in möglichst wenig Gruppen und Größen je nach Anwendungsfall zusammengefasst. Zum Beispiel S mit wenig RAM und Storage für kleine Infrastruktur-Server und Testsysteme, M und L für Applikationsserver und XL für Datenbankserver und Container Cluster Nodes. Weniger ist hier mehr. Um die Komplexität zu reduzieren wird hierbei mehr Ressourcenverbrauch in Kauf genommen. Ziel ist die Schaffung eines Standard Operating Environments (SOE).
Release-Management – von Dev zu Production
Die Reproduzierbarkeit von automatisierten Tests ist ausschlaggebend für die Sicherung der Stabilität, Funktionalität und die Sicherheit der gesamten Infrastruktur inklusive Applikationen. Hierfür ist ein Releasemanagement die Basis. Die Grundlage hierzu ist die Nutzung verschiedener Qualitätssicherungsstufen. Dazu gehören je eine Stufe für Entwicklung, Test und Qualitätssicherung und Produktion. Ein Software-Release beinhaltet das Betriebssystem inklusive aller Konfigurationen, die darauf laufende Applikation und die dazugehörigen Anpassungen im Betriebssystem mit den Einstellungen der Applikation.
Ein neues Release wird zunächst für die Entwicklung bereitgestellt. Die Entwicklungsabteilung erweitert das Release mit den für sie notwendigen Komponenten, Einstellungen und Softwareversionen. Außerdem sorgt sie dafür, dass die eigene Software sich fehlerfrei installieren lässt und funktioniert. Wenn dies der Fall ist, wird das gesamte Release inklusive Betriebssystem, Konfigurationen und Applikationen eingefroren und der Qualitätssicherung zur Verfügung gestellt. Dort werden die Systeme automatisiert deployed bzw. aktualisiert und alle notwendigen Tests automatisiert durchgeführt. Sollten Fehler festgestellt werden, wandert das Release zurück in die Entwicklung. Wenn alles nach Plan funktioniert, wird das qualitätsgesicherte Release der Produktion zur Verfügung gestellt, welche wiederum über automatisierte Prozesse die Updates auf den Systemen einspielt und sicher sein kann, dass genau die Kombination an Betriebssystem, Software, Applikationen und Konfigurationen erfolgreich getestet wurde.
Configuration-Management – Die gemeinsame Sprache der IT
Automatisierung benötigt eine gemeinsame Sprache aller beteiligten Personen. Die gemeinsame Sprache beschreibt die gesamte Infrastruktur mit allen Einstellungen – "IT Infrastructure as code". Installationsanleitungen werden durch die Beschreibungssprache der Configuration-Management-Tools ersetzt. Typische Vertreter sind hier Puppet, Ansible und SaltStack.
Die Beschreibung der Infrastruktur wird hier nicht mehr in Form von Anleitungen erstellt – also was genau gemacht werden soll und welche Kommandos ausgeführt werden müssen, um die Infrastruktur zu erstellen. Es wird ausschließlich der gewünschte Zustand beschrieben. Nehmen wir als Beispiel den Plan einer Inneneinrichtung: Hier ist beschrieben, welche Farbe die Wand und die Türen haben, wo welches Sofa, Tisch und Stühle stehen und an welchem Ort spezifische Pflanzen zu finden sein sollen. Eine Inneneinrichtungsfirma (sowie das Configuration-Management-Werkzeug) nimmt die Darstellung und sorgt selbständig dafür, dass der Raum genau so ausgestaltet wird.
Die Beschreibung für das Configuration-Management-Werkzeug besagt also vereinfacht dargestellt z. B. welche User existieren, welche Applikation installiert und wie die Abhängigkeiten zu anderen Systemen sein sollen. Danach passiert alles automatisch.
In der gemeinsamen Zusammenarbeit der verschiedenen Bereiche wie Netzwerk, Storage, Server-Virtualisierung, Security, Betriebssysteme, Qualitätssicherung, Entwicklung, Applikationen und Betrieb wird alles über die gemeinsame Sprache des Configuration-Management-Werkzeugs formuliert und bearbeitet. So dürfen keine Installationsbeschreibungen zur manuellen Installation übergeben werden, welche dann manuell nachgestellt werden müssen und somit sehr fehleranfällig sind. So formuliert z. B. ein Team die Größe des Servers innerhalb einer Servervirtualisierung, die grundsätzliche Installation und Konfiguration des Betriebssystems, die Konfiguration des Netzwerks und den Bedarfs an persistentem Speicher. Diese Anleitung wird dann automatisiert auf den Systemen der Qualitätssicherungsstufe ausgeführt. Darauf aufbauend erstellt ein anderer Fachbereich die Beschreibung zur Installation und Konfiguration der Applikation, wie z. B. SAP-Basis. Hierbei werden einige Tuning-Anpassungen am Betriebssystem durchgeführt, sowie die Applikation mit allen Abhängigkeiten installiert und konfiguriert. Diese gesamte Beschreibung der SAP-Installation wird der nächsten Qualitätssicherungsstufe zur Verfügung gestellt. Der QA-Bereich hat nun nicht mehr die Aufgabe, alles manuell nach Anleitung aufzubauen, sondern lässt die QA-Systeme einfach nach vorgefertigter Bauanleitung automatisiert installieren und konfigurieren und lässt seine automatisierten Testabläufe und Akzeptanztests durchführen. Nach erfolgreicher Abnahme wird die getestete Lösung in den Produktionsbereich weitergegeben und die Änderungen auf den Systemen automatisch eingespielt. Eine wichtige Rolle bei Configuration-Management-Systemen spielt die Eigenschaft der Idempotenz. In diesem Zusammenhang bedeutet Idempotenz, dass bei einem Lauf des Konfigurationsmanagement-Tools nur notwendige Änderungen durchgeführt werden. Alle Schritte, die keine Änderung zur Folge haben, werden übersprungen.
Durch die Nutzung der Configuration-Management-Werkzeuge als gemeinsame Sprache in der IT werden Missverständnisse und Fehler durch manuelle Schritte vermieden und die Geschwindigkeit aller Abläufe reproduzierbar gemacht. Die formale Beschreibung der Konfiguration stellt eine aktuelle Dokumentationsbasis der Infrastruktur dar. Sie sollte in einem Versionskontrollsystem wie git verwaltet werden. Der automatisierte Ablauf durch Werkzeuge ermöglicht einen enormen Geschwindigkeitsgewinn sowie die deutliche Reduktion des Aufwandes.
Der DevOps-Gedanke – Teamwork und Automatisierung
Die gemeinsame Sprache zur Automatisierung und Verständigung zwischen verschiedenen Bereichen ist die Basis zu Etablierung einer DevOps-Kultur und -Zusammenarbeit. Der Begriff DevOps ist hierbei ein Kunstwort aus Dev für Development bzw. Entwicklung und Ops für Operations bzw. Betrieb. Im Allgemeinen geht es bei DevOps einerseits um die Anwendung von Werkzeugen und Abläufen aus der Softwareentwicklung für den Betrieb einer IT-Infrastruktur, andererseits um die enge Verzahnung beider Disziplinen.
Zur schnellen Umsetzung neuer Ideen und Anforderungen müssen notwendige Prozesse ideal aufeinander abgestimmt sein. Der DevOps-Ansatz hilft dabei agile Methoden und Automatisierungsszenarien für den gesamten IT-Bereich zusammenzuführen. Dadurch werden deutlich kürzere Release-Zyklen möglich und Qualitätsverluste durch ungetestete Szenarien und manuelle Fehler verhindert.
In einer DevOps-getriebenen Organisation entsteht ein Team aus den Bereichen der Applikationsverantwortung und Betrieb. Ergänzt wird das Team idealerweise noch mit Kollegen aus der IT-Sicherheit und Infrastruktur. Die gesamte Produktionskette der IT ist automatisiert. Es entsteht also ein andauernder Kreislauf von neuen Releases, Tests, Deployments und Verbesserungen.
Je nach Ausprägung der betroffenen Anwendung wird diese als Softwarepaket inklusive Konfigurationsmanagement-Beschreibung oder als fertiger Container erstellt.
Container – als standardisierte Plattform
Container sind im Prinzip kleine Pakete, bestehend aus den nötigsten Bestandteilen des Betriebssystems, Programmbibliotheken und einer möglichst klein gehaltenen Applikation, welche im Idealfall nur eine bestimmte Aufgabe erledigt. Diese Pakete werden in einem speziellen Containerformat verwaltet. Der bekannteste Vertreter dabei ist Docker. Die Container können auf einer standardisierten Plattform ausgeführt werden, ohne dass hierbei Anpassungen notwendig sind. Oft steigt die Anzahl der Container sehr schnell in unüberschaubare Größenordnungen. Daher wird die Verwaltung der Container und die notwendigen Netzwerkkommunikationen von Container-Clustern übernommen. Mittlerweile hat sich als Technologie das Open-Source-Projekt Kubernetes de facto als Marktstandard durchgesetzt.
Containervirtualisierung bringt in erster Linie folgende Vorteile mit sich [2]:
- Durch das standardisierte Format kann ein getesteter Container auf jeder dafür geeigneten Plattform eingespielt, gestartet und skaliert werden. So entsteht eine zusätzliche Abstraktionsschicht zwischen dem eigenen Rechenzentrum und externen Anbietern. Die Grenzen verschwinden. Dadurch kann die eigene Infrastruktur einfach mittels Cloud-Angeboten erweitert werden. Bei Bedarf werden einfach neue Infrastrukturen dazu gemietet. Neue Produkte und Innovationen können schnell ausgeliefert sowie bei Bedarf skaliert werden.
- Der zweite Vorteil besteht in der Kapselung der Anwendung. Das Applikationsteam oder DevOps-Team ist für die Funktion der Software innerhalb des Betriebssystems verantwortlich und erstellt ein in sich funktionierendes und paketiertes System. So kann der Container als Ganzes zur Verfügung gestellt werden. Die Auslieferung ist damit standardisiert und kann einfach automatisiert werden.
Werkzeuge
Für den Aufbau einer Automatisierungslösung können verschiedene Open-Source-Werkzeuge genutzt werden. Als Grundlage dient eine gemeinsame Plattform, welche die Basis für eine teamorientierte Arbeitsweise über verschiedene Verantwortungsbereiche hinweg bildet. Für den Bereich Infrastruktur, Orchestrierung, Verwaltung verschiedener Qualitätssicherungsstufen und Software-Releases sowie die Nutzung von Konfigurationsmanagement-Werkzeugen dienen Enterprise-System-Management-Lösungen wie Red Hat Satellite und orcharhino[3]. Für die gemeinsame Sprache der IT sind Konfigurationsmanagement-Werkzeuge wie Puppet, Ansible und SaltStack zu nennen [3]. Um eine Containerplattform aufzubauen, stehen die kubernetes-basierten Lösungen Red Hat Openshift, SUSE CaaS, Rancher und Docker Enterprise zur Verfügung [3]. Die automatisierte Steuerung der Applikations- und Containerentwicklung, sowie die Testautomatisierung und Freigabe von Releases erfolgt mithilfe von Continous-Integration- und Continous-Deployment-Werkzeugen wie Jenkins- oder GitLab-Pipelines [3].
Fazit
In der digitalisierten Welt verlaufen Entwicklungen exponentiell. Alleine die Leistung von Prozessoren verdoppelt sich alle 18 Monate. So kann man in dieser Welt mit 30 Schritten 26-mal um die Erde reisen. Um hierfür gerüstet zu sein und vorauszugehen, ist die Automatisierung aller Bereiche in der IT ausschlaggebend. Wer neue Software schnell testen und ausliefern kann, gewinnt den Wettbewerb und kann für disruptive Innovationen sorgen. Neue Systeme werden automatisch auf Knopfdruck oder eventbasiert ausgeliefert, neue Applikationen installiert und im Erfolgsfall skaliert. Neue Ideen können in minimaler Zeit umgesetzt und neue Möglichkeiten genutzt werden. Die automatisierte IT wird so zum Treiber für Innovationen. Die IT ist der wahrscheinlich wichtigste Erfolgsfaktor im Wettbewerb der Unternehmen und die Automatisierung der IT entscheidet über Erfolg oder Misserfolg. .
- Wikipedia: Sissa ibn Dahir
- Informatik Aktuell – Jonas Trüstedt: Containerplattform: Lego für DevOps
- Enterprise-System-Management-Lösungen: Red Hat Satellite, orcharhino
Konfigurationsmanagement-Werkzeuge: Puppet, Ansible, SaltStack
Containerplattformen: Kubernetes, Red Hat Openshift, SUSE CaaS, Rancher, Docker Enterprise
Ci/CD-Werkzeuge: Jenkins, GitLab Pipelines