Infrastructure-as-Code (IaC) gilt derzeit als das Zauberwort der zeitgemäßen Softwarebereitstellung in der Cloud. Laut einer Studie der Universität Köln stehen mittlerweile mehrere IaC-Tools zur Verfügung, um die Bereitstellung und Konfiguration der Cloud-Infrastruktur zu automatisieren.
Mit der Fülle an Auswahlmöglichkeiten gestalte sich der Auswahlprozess für das geeignete IaC-Tool jedoch zunehmend schwieriger, so die Autoren der Studie. Viele Unternehmen in Deutschland, die noch nicht im Evaluierungsstadium angelangt sind, wollen jedoch zunächst wissen, warum IaC für sie überhaupt interessant sein könnte.
Roger Scheer, Regional Vice President of Central Europe bei Tenable, erläutert die Umsetzung von DevSecOps mittels Infrastructure-as-Code:
Infrastructure-as-Code ermöglicht DevOps-Teams eine schnellere, konsistentere und automatisierte Bereitstellung von Infrastrukturen. Das größte Potenzial von IaC liegt jedoch in seiner Fähigkeit, die Prozesse zur Entwicklung, Bereitstellung und zum Betrieb unveränderlicher Infrastrukturen zu verändern. IaC kodiert die Infrastruktur, einschließlich Instanztypen, Konfigurationen, Sicherheitsgruppen, Beziehungen zwischen Ressourcen, Netzwerkzugriff und mehr. Vor IaC war die einzige maßgebliche Quelle für diese Informationen die Konfiguration der Laufzeitumgebung selbst.
Ob es den Entwicklungs- und DevOps-Teams bewusst ist oder nicht, die Tools und Ansätze, die sie zur Lösung technischer Herausforderungen einsetzen, haben Auswirkungen auf das gesamte Unternehmen. Insbesondere IaC ist der Schlüssel zur Modernisierung manueller Prozesse in den Bereichen Sicherheit und Betrieb, zum Aufbrechen organisatorischer Silos und zur Schaffung von mehr Wert. Manche sagen, dass Software die Welt auffrisst, und es ist zunehmend wahr, dass Entwickler das Geschäft vorantreiben.
IaC verbessert den Entwicklungsprozess
IaC ist sowohl für virtualisierte als auch für Cloud-Infrastrukturen geeignet. Es bietet eine Möglichkeit, die Infrastruktur in Form von Quellcode zu beschreiben. Dieser dient zur Automatisierung der Bereitstellung dieser Infrastruktur im Rechenzentrum, in einer Private Cloud oder Public Cloud. Es gibt viele verschiedene Tools für unterschiedliche Anforderungen. CloudFormation zum Beispiel ist auf eine bestimmte Umgebung (Amazon Web Services) spezialisiert, während Tools wie Terraform viele verschiedene Public Cloud- und sogar hybride Umgebungen unterstützen. IaC erzwingt Unveränderlichkeit in der Laufzeitinfrastruktur, d. h. jede Komponente der Architektur wird unter Verwendung einer exakten Konfiguration aufgebaut. Diese Fähigkeit verringert die Möglichkeit, dass die Infrastruktur von den gewünschten Konfigurationen abweicht.
Wo IT-Bereitstellungsprozesse traditionell lange Wartezeiten und manuellen Aufwand erforderten, ermöglicht IaC den Teams, die benötigte Infrastruktur in wenigen Minuten per Tastendruck bereitzustellen. Noch besser: Änderungen, Skalierung oder Duplizierung der Umgebung sind so einfach wie das Ändern des Quellcodes und die erneute Bereitstellung. Dies ist eine Schlüsseltechnologie in der Cloud, wo Anwendungen automatisch skaliert werden müssen und sich Ökosysteme um Ansätze wie Atlantis, Kubernetes und GitOps entwickelt haben. Operative Aufgaben werden auf Code-Commits reduziert, die automatisierte Prozesse auslösen, die die Laufzeitkonfiguration mit den Commit-Änderungen abgleichen.
IaC hilft beim Kosten- und Risikomanagement
Betrachtet man den gesamten Lebenszyklus einer Anwendung, so gibt es noch einige andere Stellen, an denen unvorhersehbare, manuelle Prozesse zu Verzögerungen führen können. Viele Unternehmen beschränken beispielsweise die Konfiguration von Cloud-Ressourcen, um Kosten und/oder Sicherheitsrisiken zu kontrollieren. IT-Teams, die Infrastruktur manuell bereitstellen, sind darauf geschult, die Kostenrichtlinien einzuhalten. Die Sicherheitsteams brauchen Zeit, um die Ergebnisse von Bewertungen und Penetrationstests zu bewerten. Es zeigt sich, dass IaC auch für diese Prozesse ähnliche Vorteile bringen kann.
IaC bietet die Möglichkeit, diese komplexen Systeme zu analysieren, bevor die tatsächliche Bereitstellung erfolgt. Prozesse wie die Überprüfung der Architektur, die Kostenanalyse, die Modellierung von Bedrohungen und die Sicherheitsbewertung lassen sich früher durchführen. Somit sind die Teams in der Lage, Probleme vor der Bereitstellung proaktiv zu finden und zu beheben, also bevor unerwartete Kosten oder Sicherheitsprobleme entstehen.
IaC ermöglicht Automatisierung
Letztlich bedeutet IaC die Automatisierung der Cloud-Infrastruktur. Aus der Sicht eines Entwicklers bedeutet dies, dass die manuellen Schritte, die effektive CI- und vor allem CD-Prozesse behindern, eliminiert werden. Die Kodifizierung von Infrastruktur und Konfigurationen im Quellcode-Repository schafft eine einzige Quelle der Wahrheit für die Anwendung und ermöglicht eine weitere Kodifizierung. Tools wie Policy as Code können dann die IaC-Umgebung mit Blick auf Kostenrichtlinien, Konfigurationsrichtlinien, Sicherheitsrichtlinien etc. analysieren und späte, manuelle Kontrollen durch frühe, automatisierte ersetzen.
Die moderne Softwareentwicklung nutzt die Automatisierung bereits in großem Umfang – und dieser Trend wird sich noch verstärken. Manuelle Betriebs- und Sicherheitsprozesse sorgen jedoch immer wieder für Unterbrechungen der Innovationspipeline. Infrastructure as Code ermöglicht die Automatisierung dieser Prozesse während der Entwicklung, wodurch sie effektiv „nach links verlagert“ und Engpässe beseitigt werden, während die Fähigkeit des Teams, auf Erkenntnisse zu reagieren, verbessert wird. Mit anderen Worten: IaC steigert nicht nur die Effizienz des DevOps-Teams, sondern bietet auch Vorteile für das gesamte Unternehmen in Form von schnellerer Innovation, besserer Kostenkontrolle und höherer Sicherheit.”