Cloud Technology

Was ist Infrastructure as Code?

Was ist Infrastructure as Code? Post Cover

Cloud-Computing hat die IT-Welt für immer verändert. Das gilt sowohl für den Hardware- als auch für den Softwarebereich. Prozesse können effektiver, günstiger und umfassender ausgeführt werden, als vor wenigen Jahren noch vorstellbar war. Ein besonders wichtiger Stützpfeiler dieser Umwälzungen ist Infrastructure as Code. Was das ist und wie man diese Methode am effektivsten einsetzt, haben wir in diesem Ratgeber zusammengefasst. 

IaC für die moderne IT-Infrastruktur 

Infrastructure as Code, häufig als IaC abgekürzt, bezeichnet einen Vorgang, bei dem die IT-Services Rechenleistung, Speicher und Netzwerk mit maschinenlesbaren Codes ausgeführt werden. Manuelle Aufgaben werden überflüssig.  IaC beruht auf der Virtualisierung und ist unverzichtbar für IaaS Produkte und den Einsatz von DevOps Team im eigenen Unternehmen. 

Auf deutsch wird IaC oft auch als programmierbare Infrastruktur bezeichnet, was den Nagel ziemlich genau auf den Kopf trifft. Denn dabei kann man die Infrastruktur ähnlich wie eine Softwareanwendung aufbauen und verwenden bzw. programmieren. Für die Ausführung der Infrastruktur werden die jeweiligen Files und Skripts von den Maschinen gelesen und dann
automatisch ausgeführt. 

Die Vorteile von IaC 

Der offensichtlichste Vorteil von IaC ist der, dass dadurch ein Großteil der Arbeitslast entfällt, die normalerweise für IT-Services wie Computing, Storaging oder Networking nötig ist. Schließlich wird die Ausführung der Services programmiert und kann so automatisch durchgeführt werden, ohne
dass eine manuelle Überwachung und Verwaltung noch nötig wäre. 

Genau diese Verwaltung hat das Betreiben von Netzwerken bisher aber so kosten- und arbeitsaufwändig werden lassen. Gleichzeitig können so natürlich auch viel schneller und unkomplizierter Änderungen an einer Infrastruktur durchgeführt werden, als wenn diese Änderungen manuell durchgeführt werden müssten. 

Darüber hinaus kann ein einmal geschriebener Code zur Programmierung natürlich auch jeder Zeit wiederverwendet werden. Das bedeutet wiederum, dass die Errichtung einer neuen Infrastruktur viel schneller, sicherer und konstanter durchgeführt werden kann als bei herkömmlichen
Infrastrukturen. Dabei wird auch das Risiko durch manuelle Fehler deutlich reduziert. 

Darüber hinaus ist eine programmierte Infrastruktur, da virtuell, deutlich leichter zu skalieren. Rechen-, Speicher und Netzwerkleistungen können jeder Zeit hinzugefügt, verändert oder entfernt
werden, ganz nach Bedarf. Im Endeffekt lässt sich die Infrastruktur dadurch wie eine Software managen, was wiederum bedeutet, dass sich Services und Ressourcen auch anhand verwendeter Versionen wiederherstellen lassen. 

Die Virtualisierung als Grundlage von IaC

Die Virtualisierung von IT-Services stellt die technische Grundlage für IaC dar. Unter Virtualisierung versteht man eine Methode, bei der IT-Prozesse, die zuvor einem spezifischen physischen Gerät zugeteilt waren, auf mehrere virtuelle Rechenmaschinen aufgeteilt bzw. durch diese verwendet werden können. Das Ziel ist es dabei, die IT-Services von der physischen Rechenmaschine zu entkoppeln. 

In der Praxis können Sie sich das zum Beispiel so vorstellen: Bisher hatte in Ihrem Büro jeder Mitarbeiter einen individuellen Rechner für den persönlichen Desktop, auf dem Windows lief. Durch die Virtualisierung werden alle tatsächlichen Rechenprozess nur noch von einem zentralen Punkt durchgeführt und dann virtuell auf dem Desktop dargestellt. Der Desktop benötigt also zur Ausführung nur noch eine Internetverbindung.

Und genau so funktioniert auch Infrastructure as Code. Anstatt dass die Infrastruktur-Anwendungen wie bisher an ein bestimmtes physisches Gerät gebunden waren, werden diese jetzt virtuell dargestellt und mit Hilfe eines Programms ausgeführt. So können auch aus einer einzigen
physischen Rechenmaschine mehrere virtuelle Maschinen entstehen. 

Deklarativer und imperativer IaC-Ansatz

Wenn es um die Verwendung von IaC geht, dann muss dafür eine Infrastruktur programmiert werden. Dafür gibt es zwei verschiedene Möglichkeiten: Den deklarativen und den imperativen Ansatz. Beide Ansätze haben ihre Vor- und Nachteile und es kommt ganz auf die jeweilige Situation und Voraussetzungen an, welche Methode sich im Endeffekt für Sie am besten eignet. 

Beim deklarativen Ansatz definieren Sie zunächst den gewünschten Zustand des Systems sowie die benötigten Ressourcen inklusive deren Eigenschaften. Anschließend konfiguriert das IaC Programm automatisch das gewünschte System. Man gibt also ein Ziel vor und die entsprechenden Befehle
werden dann von diesem System programmiert. Auch Änderungen an der Infrastruktur werden automatisch ausgeführt. 

Der imperative Ansatz funktioniert genau andersherum. Hier gibt der Entwickler dem System nur Befehle vor, die dann zum gewünschten Endergebnis führen sollen. Dabei ist es allerdings wichtig, bei der Eingabe der Befehle absolut fehlerfrei zu arbeiten und alle eventuellen Änderungen an der
Infrastruktur müssen selbst durchgeführt werden. 

IaC und DevOps

IaC ist unverzichtbar, wenn in einem Unternehmen DevOps angewendet werden soll. Denn der Grundgedanke von DevOps ist ja, dass Entwickler und Operations hier nahtlos zusammenarbeiten, um schneller, effektiver und kostengünstiger Ergebnisse erzielen zu können. Das funktioniert aber nur, wenn auch die zugrundeliegende Infrastruktur jeder Zeit an die aktuellen Bedürfnisse
angepasst werden kann. 

Und genau das kann IaC. Denn so können Entwickler und System-Admins tatsächlich Hand in Hand arbeiten, was es den Entwicklern wiederum ermöglicht, mehr Einfluss auf die verwendete Infrastruktur zu nehmen. Operations wiederum kann so deutlich enger mit den Entwicklern zusammenarbeiten und Feedback schneller in neue Updates einfließen lassen. Durch IaC wird im
Endeffekt der Einsatz der Software und der Infrastruktur in einem einzigen Prozess realisiert, was optimale Rahmenbedingungen für DevOps schafft.