»Infrastructure as Code«: Der Admin 1.0 klickt – Der Admin 2.0 programmiert

Im Rahmen der Nutzung von Cloud-Infrastrukturen zeigen Erfahrungen, dass Entwickler- und insbesondere Programmierkenntnisse immer wichtiger werden, um Software-defined Infrastructure (SDI) Umgebungen aufzubauen. Schließlich werden massiv skalierbare und hochverfügbare Cloud-Infrastrukturen und Systeme heute und zukünftig konfiguriert, indem sie mit Code oder Skripten programmiert werden – Stichwort: »Infrastructure as Code« (IaC).

Warum ist »Infrastructure as Code« notwendig?

Als Teil der digitalen Transformation gehen immer mehr Unternehmen dazu über, ihre individuelle Digital Infrastructure Platform (DIP) zu entwickeln. Dabei handelt es sich um einen Stack von Software- und Service-Komponenten, die auf unterschiedlichen Ebenen für die notwendige Unterstützung sorgen. Insbesondere die Infrastrukturen der großen Public-Cloud-Anbieter (Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Softlayer/ Bluemix) sind Programmierbaukästen, mit denen sich virtuelle Infrastrukturen auf den Cloud-Umgebungen entwickeln lassen, auf welchen dann Web-Applikationen und eigene Services betrieben werden.

Damit nimmt auch die Bedeutung von »Infrastructure as Code« stetig zu, denn eine Cloud-Anwendung ist nur so viel wert wie die Architektur, auf der sie basiert, denn eine Anwendung muss direkt für die jeweilige Cloud-Umgebung entwickelt werden. Dies impliziert, dass Skalierbarkeit und Hochverfügbarkeit von Beginn an mit zu berücksichtigen sind. Die Cloud-Anwendung muss also in der Lage sein, eigenständig weitere virtuelle Maschinen hochzufahren, wenn mehr Leistung benötigt wird (Skalierbarkeit) beziehungsweise die nicht mehr benötigten virtuellen Maschinen auch selbstständig wieder herunterzufahren. Analog verhält es sich, wenn eine virtuelle Maschine in einen fehlerhaften Zustand fällt. Hierfür muss die Anwendung selbst dafür sorgen, dass entsprechend eine virtuelle Maschine als Ersatz hochgefahren wird und die defekte Maschine aus dem System verschwindet (Hochverfügbarkeit).

Eine Cloud-Anwendung muss daher jede beliebige virtuelle Maschine (VM) einer Cloud-Infrastruktur als Teil der Applikation betrachten. Dies liegt unter anderem daran, dass jederzeit eine VM ausfallen kann und eine andere neu hochgefahren werden muss. Hinzu kommt, dass auch die Daten, auf die eine Anwendung zugreift, sich zwangsläufig nicht mehr an einem einzigen Ort befinden, sondern über die Cloud verteilt gespeichert sind.

Wie sich damit gut erkennen lässt, können die sogenannten Legacy-Anwendungen somit nicht ohne weiteres 1:1 in die Cloud migriert und damit skalierbar und hochverfügbar betrieben werden. Stattdessen sollten Anwendungen für die Cloud an die Eigenschaften einer (proprietären) Cloud-Infrastruktur angepasst und bestmöglich auf deren Spezifikation abgestimmt werden. Kurzum müssen native Cloud-Anwendungen von Beginn an für die Cloud entwickelt werden. Dazu gehört es, die Anforderungen der entsprechenden Cloud-Infrastruktur zu analysieren und individuell zu berücksichtigen.

Wie funktioniert »Infrastructure as Code«?

Wie der Name bereits verrät, handelt es sich bei »Infrastructure as Code« um die Entwicklung von Programmcode. Auf Basis von Skripten und durch Tools wie Chef, Puppet, Ansible oder Salt unterstützt, wird beschrieben, wie eine Infrastruktur aussehen soll.

grafik crisp research infrastructure as code

 

Innerhalb des Skript-Codes wird etwa festgehalten,

  • wie viele Server benötigt werden
  • um welche Art von Server (Anzahl CPU, RAM, etc.) es sich handelt
  • welche Software (etwa Betriebssystem, Webserver, Datenbank) auf dem Server vorab installiert und konfiguriert ist
  • wie Autoscaling-Groups konfiguriert werden
  • auf welche Daten der Server zugreift und wo sich diese befinden
  • mit welchen anderen Systemen der Server kommuniziert
  • mit welchen anderen Microservices oder Platform-Services die Infrastruktur interagiert
  • welche Datenbanken Teil der Infrastruktur sind
  • wie der / die Load Balancer konfiguriert sind
  • wie das virtuelle Netzwerk-Design ausschaut
  • wie die Zuweisung von Security Groups erfolgt

 

Auf Basis dieses Skripts beziehungsweise des Programmcodes wird somit automatisiert eine IT-Infrastruktur »aufgespannt«, innerhalb derer alle vorab definierten Ressourcen existieren. Die gesamte Infrastruktur ist damit »Software-defined« entwickelt auf Basis von Code, wie man es normalerweise nur aus der Programmierung von Applikationen kennt.

Ein großer Vorteil des »Infrastructure as Code« Konzepts besteht in der Wiederverwendbarkeit beziehungsweise Anpassbarkeit des verwendeten Skripts / Code. Damit besteht die Möglichkeit, dieselbe Infrastruktur zu einem anderen Zeitpunkt oder an einer anderen Stelle (etwa eine andere Region beim selben Cloud-Anbieter) erneut aufzubauen – und dies durch die erneute »simple« Ausführung desselben Skripts. Zudem lässt sich der Automatisierungsgrad damit auf nahezu 100 Prozent bringen. Zum Zeitpunkt des Deployments der Infrastruktur ist damit keine menschliche Interaktion mehr notwendig. Außerdem lassen sich damit Ausnahmesituationen berücksichtigen, indem die Infrastruktur anhand von weiteren Services und Tools vgl. »Netflix Simian Army« in der Lage ist, sich »selbstständig zu heilen«.

Der Admin 2.0 programmiert

»Infrastructure as Code« ist unter den »coolen Jungs« schon seit mehreren Jahren weit verbreitet und wird in den nächsten ein bis zwei Jahren endgültig auch in der Breite einen wichtigen Platz in IT-Abteilungen einnehmen (müssen), um die Entwicklung und den Betrieb moderner, Cloud-nativer Applikationen zu unterstützen.

Eine wesentliche Erkenntnis der »Infrastructure as Code« Ära folgt der Logik: Der Administrator 1.0 klickt, der Admin 2.0 programmiert. Somit ändert sich auch das Skillset dieser Berufsgruppe maßgeblich. Der moderne Administrator ist ein Entwickler und sollte u.a. die folgenden Kenntnisse besitzen:

  • Verständnis für Cloud-Architekturkonzepte
  • Programmierkenntnisse
  • Offen gegenüber dem DevOps-Konzept
  • Kenntnisse über IaC-Tools wie Chef, Puppet, Ansible und Salt
  • Umgang mit APIs
  • Kenntnisse in Programmiersprachen wie Java, Node.js, Python usw.
  • Verständnis für den Aufbau von verteilten, skalierbaren und hochverfügbaren Infrastrukturen

 

Es ist daher nicht verwunderlich, dass etwa in Berlin derzeit bis zu 20.000 EUR Headhunter-Gebühren bezahlt werden, um Mitarbeiter mit diesem Skillset zu bekommen.

Wer sich aus technischer Perspektive tiefer mit dem Thema »Infrastructure as Code« auseinandersetzen möchte, dem ist das Buch »Infrastructure as Code: Managing Servers in the Cloud« von Kief Morris zu empfehlen.

René Büst, Senior Analyst; Crisp Research

https://www.crisp-research.com/


Software-defined Infrastructure mit OpenStack und OpenDaylight

EMEA Big Data Datacenter Infrastructure Market to Triple by 2019, Reaching $5.4B

(Hyper) Converged Infrastructures – ein Cloud-Markt der neue Dynamik erfährt

Infrastructure as a Service – Eine Wolke wird geboren

Public Cloud für Infrastructure as a Service zieht Anbieter an

Zwei Fünftel der IT-Experten sehen ihr IT-Unternehmen gerüstet für die digitale Geschäftswelt

Qualität des IaaS-Providers entscheidet über Erfolg von SaaS-Lösungen

10 Jahre Cloud – Der IaaS-Markt im Wandel

Cloud- und Hosting-Markt: Abkehr vom Hosting, hin zu IaaS

Cloud-Dienstleister haben im Wettbewerb die Nase vorn

Schreiben Sie einen Kommentar