Da immer mehr Unternehmen auf die Cloud umsteigen, ist die Fähigkeit, einen physischen Server bereitzustellen und zu konfigurieren, für die Entwicklung und Bereitstellung moderner Software immer weniger relevant. Die Infrastruktur mithilfe von deklarativem Code statt mit manuellen Konfigurationen oder sogar Skripten bereitzustellen und zu managen, ist für den Betrieb von Webanwendungen unerlässlich.
Infrastruktur als Code - Historie
Systemadministratoren setzten seit den 1990er Jahren vor allem auf Skripte, um ihre Infrastruktur zu managen. Erst Ende der 2000er Jahre setzte sich die Praxis durch, Infrastruktur als Code zu behandeln. Maßgeblich verantwortlich für die Durchsetzung der Terminologie waren der DevOps-Pionier Andrew Clay-Shafer, der Mitbegründer von Chef Software Adam Jacob und Puppet-Co-Founder Luke Kanies.
In einer Welt der verteilten Applikationen war die manuelle Anpassung von Servern nie skalierbar - und die Skripterstellung hatte ihre eigenen Grenzen. Das machte in den Anfangstagen der Cloud eine automatisierte Bereitstellung der Infrastruktur zu einem zentralen Anliegen für viele First Mover. Heutzutage wird die zugrundeliegende Infrastruktur mit Hilfe entsprechender Tools in der Regel als Code bereitgestellt. Im Folgenden erfahren Sie, wie Infrastructure as Code (IaC) definiert wird, welche Vorteile dieser Ansatz bringt und mit welchen Tools Sie die ersten Schritte in Sachen IaC gehen.
Infrastructure as Code - Definition
Autor und Cloud-Spezialist Kief Morris erklärt in seinem Buch "Infrastructure as Code: Dynamic Systems for the Cloud Age", dass IaC im Wesentlichen auf drei grundlegenden Praktiken beruht: "Definieren Sie alles als Code, testen und liefern Sie alles kontinuierlich und bauen Sie Ihr System aus kleinen, lose gekoppelten Teilen auf." Definieren lasse sich Infrastructure as Code laut Morris als "ein Ansatz zur Infrastrukturautomatisierung, der auf Praktiken der Softwareentwicklung basiert. IaC legt den Fokus auf konsistente, wiederholbare Routinen für die Bereitstellung und Änderung von Systemen und deren Konfiguration".
In der Praxis bedeutet das in der Regel, dass DevOps-Teams mithilfe einer gut dokumentierten Sprache wie JSON oder YAML Änderungen an einer Umgebungsbeschreibung und der Version des Konfigurationsmodells vornehmen. Sobald diese Umgebung konfiguriert ist, können Änderungen an der Quelle und nicht am Ziel vorgenommen werden, was sicherere und regelmäßigere Änderungen an der Infrastruktur in einem weitaus größeren Umfang ermöglicht.
IaC - DevOps-Touchpoints
Weil Erstkonfiguration und Änderungen automatisiert werden können, ist Infrastructure as Code ein wichtiger Bestandteil moderner DevOps-Methoden, bei denen Entwicklung und Operations Hand in Hand arbeiten, um Software schneller und in höherer Frequenz bereitstellen zu können. Durch die Automatisierung und Versionierung von Infrastruktur-Builds können IaC-Tools dazu beitragen, Anwendungsentwickler zu entlasten und Systemadministratoren von manuellen Prozessen zu befreien.
Die Verwendung von Code zur Bereitstellung und Wartung der Infrastruktur trägt dazu bei, Entwickler und Operations-Spezialisten zu einem frühen Zeitpunkt im Softwareentwicklungszyklus zusammenzubringen und Disziplin, Transparenz und Wiederholbarkeit der Softwareentwicklung im Betrieb zu verankern. Da Automatisierung und Collaboration zu den wichtigsten Grundsätzen von DevOps gehören, werden Infrastructure-as-Code-Tools auch zu einem zentralen Punkt für die effektive Zusammenarbeit in diesem Bereich.
Infrastruktur als Code - Vorteile
Die wichtigsten Vorteile von Infrastructure as Code liegen in der Abkehr von manuellen Prozessen und den neuen Freiheiten, die die Automatisierung in die DevOps-Teams trägt. Damit geht auch ein gewisses Maß an Kosteneinsparung einher - und die Geschwindigkeit, mit der die Teams Änderungen an ihren Anwendungen sicher bereitstellen können, steigt.
Der Mitbegründer von Simple Thread, Justin Etheredge, schrieb in einem Blogbeitrag aus dem Jahr 2020: "Infrastructure as Code gibt Ihnen die Freiheit, Änderungen vorzunehmen, ohne befürchten zu müssen, dass Sie Dinge in einen nicht wiederherstellbaren Zustand versetzen. Und Sie erhalten ein besseres Verständnis dafür, wie die Umgebung gewachsen ist."
Im bereits genannten Buch skizziert Kief Morris sieben wesentliche Vorteile, die IaC gegenüber herkömmlichen Bereitstellungsmethoden bietet:
die IT-Infrastruktur als Grundlage nutzen, um schnell Mehrwerte zu erschließen;
Aufwand und Risiken von Änderungen an der Infrastruktur minimieren;
den Nutzern der Infrastruktur ermöglichen, die benötigten Ressourcen zu erhalten, wenn sie sie benötigen;
gemeinsame Werkzeuge für Entwicklung, Betrieb und verwandte Funktionen bereitstellen;
zuverlässige, sichere und kosteneffiziente Systeme aufbauen;
Governance-, Sicherheits- und Compliance-Kontrollen sichtbar machen;
Geschwindigkeit bei Fehlersuche und Fehlerbehebung optimieren.
Infrastructure as Code - Tools
Die Tools, die für die Implementierung von Infrastructure as Code erforderlich sind, lassen sich in zwei Gruppen einteilen: Konfigurationsorchestrierung und Konfigurationsmanagement.
Orchestrierungs-Tools ermöglichen Entwicklern, die Bereitstellung der Infrastruktur zu automatisieren. Zu den beliebtesten Tools in diesem Bereich gehören:
Was das Konfigurationsmanagement betrifft, so sind Tools von Drittanbietern wie:
nach wie vor beliebte Methoden zur Konfiguration, Speicherung und Automatisierung von Builds virtueller Serverumgebungen. Für ihre Container Images verwenden viele Entwickler Docker. Das Gros der eben vorgestellten Tools lässt sich im Tandem betreiben, da Ansible, Chef, Puppet und SaltStack auf die Verwaltung von Konfigurationen auf einer bereits vorhandenen Infrastruktur fokussieren, während Provisioning Tools wie Terraform diese Infrastrukturschicht abstrahieren. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.