Infrastructure as a Code
Was Sie über IaC wissen müssen
Automatisierung ist einer der wesentlichen IT-Trends der letzten Jahre - getrieben insbesondere durch Virtualisierung: So ist es dank Hypervisors wie VMware und Hyper-V inzwischen ohne weiteres möglich, in weniger als 20 Minuten eine isolierte Entwicklungsumgebung zu erschaffen.
Natürlich ist es nicht ganz so einfach einen virtuellen Workspace einzurichten, wie es sich liest: Ein Softwareentwickler fragt eine virtuelle Umgebung an, wartet dann aber unter Umständen zwei Wochen lang darauf, weil die zuständigen Kollegen gerade viel zu tun haben oder im Urlaub sind. An dieser Stelle kommt Infrastructure as a Code (IaC) ins Spiel.
Infrastructure as a Code - Definiton
Infrastructure as a Code - auch bekannt unter der Bezeichnung "programmable Infrastructure" - beschreibt einen automatisiert ablaufenden IT-Provisioning-Prozess, in dem Systeme softwaregesteuert aufgesetzt und bereitgestellt werden. Wenn dieser Prozess wie gewünscht funktioniert, kann er deutlich schneller ablaufen als sein manuelles Pendant während zeitgleich der menschliche Hang zur Fehleranfälligkeit eliminiert ist.
Kief Morris, bei ThoughtWorks Europe zuständig für den Bereich Continous Delivery definiert IaC folgendermaßen: "Infrastructure as a Code ist ein IT-Infrastruktur-Managementansatz für das Zeitalter von Cloud, Microservices und Continous Delivery. Die Grundidee besteht darin, IT-Infrastruktur als Software zu behandeln. So können Veränderungen schneller und einfacher, aber auch sicherer und zuverlässiger umgesetzt werden."
Quellcode automatisiert den Setup- und Konfigurationsprozess von virtuellen Maschinen und Containern, wodurch sich dieser auch leicht replizieren und skalieren lässt. Der Unterschied zu auf Skript-Basis automatisierten IT-Prozessen: IaC ist flexibel genug, um komplexe Verfahren abzubilden - es vereint die Vielseitigkeit von Code mit den Vorteilen einer Script-ähnlichen Umgebung. Statt beispielsweise eine Serverfarm manuell zu konfigurieren, erledigt das der Code für Sie - und ist dabei gleichzeitig die Dokumentation.
IaC - Merkmale
Das wichtigste Merkmal von Infrastructure as a Code ist also, dass es sich nicht um ein Produkt, sondern eine Methodik handelt, die ein schnelles Deployment von virtuellen Umgebungen ermöglicht. Um IaC richtig einzusetzen benötigen Sie drei Dinge:
eine DevOps-Umgebung
sowie die entsprechenden Entwicklungs-Tools.
Erst im Zusammenspiel mit agilen Entwicklungsmethoden wie test-driven Development, Continous Integration und Continous Delivery kann Infrastructure as a Code seine Vorteile ausspielen. Geht es um IaC Tools, sind beispielsweise Chef und Puppet für die Methodik konzipiert:
Chef ist für die Kollaboration in DevOps-Umgebungen gemacht
Puppet automatisiert das Aufsetzen einer IT-Infrastruktur
"Chef oder auch Puppet verfügen über Frameworks, die die Arbeit damit erleichtern", weiß Sean Kenefick, Research Director bei Gartner. Sowohl Chef als auch Puppet laufen unter Windows als auch unter Linux. Populäre Frameworks für Infrastructure as a Code sind zum Beispiel AWS Cloud Formation und Windows Powershell DSC. Ein Mangel besteht bei Infrastructure as a Code nur in den Bereichen gute Dokumentation und Erfahrungswerte. Es handelt sich - etwa im Vergleich zu Java - noch um ein relativ junges Konzept. "Die Methodik und die Tools sind bereits ziemlich ausgereift, aber viele Unternehmen sind noch dabei herauszufinden, wie Sie IaC implementieren und ihre Prozesse und Strukturen entsprechend anpassen können", weiß Morris.
Infrastructure as a Code - Benefits
Der Einsatz von Infrastructure as a Code in Ihrem Unternehmen kommt in erster Linie den Softwareentwicklern entgegen, was zwei wesentliche Vorteile bringt:
Reduzierung von Schatten-IT
Entlastung der IT-Abteilung
Beide Vorteile sind miteinander verwoben: Softwareentwickler, die nicht mehr Tage darauf warten müssen, etwas zur Verfügung gestellt zu bekommen, sind weniger anfällig dafür, eigene Lösungen hinter dem Rücken der IT-Abteilung zu finden. Das reduziert nebenbei auch die IT-Risiken, die die Schatten-IT mit sich bringt (zum Beispiel in Form von Malware-behafteten Docker Images). Die IT-Abteilung hingegen wird von aufwändigen manuellen Prozessen befreit und kann die gewonnene Zeit anderweitig investieren.
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation CIO.com.