2021-08-23 | Verena Stiegler | 4 min read
Infrastructure as Code - Moderne DevOps Praxis und Mittel gegen Vendor Lock-In
Infrastructure as Code ist im Cloud-Umfeld derzeit in aller Munde und scheint gleichermaßen beliebt bei Unternehmen, die ihre Infrastruktur in der Cloud hosten, sowie auf Seiten von Entwicklerteams. Manuell konfigurierte Server und Netzwerke sind schon lange nicht mehr up to date - die Zukunft liegt im Code!
Moderne DevOps Strategien - Automatisierung durch Infrastructure as Code
Die Anforderungen an Cloud-Anwendungen und Services werden zunehmend anspruchsvoller. Um eine IT-Infrastruktur schnell, agil und serviceorientiert aufzustellen und die Verfügbarkeit von Cloud-Ressourcen zu vereinfachen, sind modernste DevOps Strategien bei der Bereitstellung solcher Systeme unerlässlich. Durch das „End-to-end Lifecycle Management“, also das Betreuen eines kompletten Anwendungslebenszyklus von der Entwicklung bis hin zum Betrieb durch ein einziges Team, können Cloud Systeme heutzutage schnell und flexibel bereit gestellt werden. Continuous Integration (CI) und Continuous Delivery (CD) gehören zu den wichtigsten DevOps Praktiken, mit denen Release-Prozesse automatisiert und so die Release-Frequenz konstant gehalten wird. Doch selbst hier gibt es immer noch wiederkehrende manuelle und zeitaufwändige Prozesse, wie z.B. den Aufbau von Pipelines und der Aufwand für Wartung und Betrieb von dezentralen, verteilten CD-Tools.
Und hier kommt Infrastructure as Code (IaC) ins Spiel.
IaC ist inzwischen ein wesentlicher Bestandteil der DevOps Praxis, um die Infrastruktur sowohl der Entwicklungsumgebung - virtuelle Maschinen, Load Balancer, Netzwerke usw. - als auch die Infrastruktur, auf der die entwickelte Anwendung läuft, mithilfe von Code zu konfigurieren und zu verwalten, anstatt diese Ressourcen manuell einzurichten. Die Verwendung von Code zur Definition der Konfiguration trägt zur Automatisierung des Prozesses bei und ermöglicht eine schnelle Bereitstellung von Ressourcen in der Cloud. Der Code ist dabei Teil eines Projekts und wird genauso behandelt wie jeder andere Code, einschließlich Versionskontrolle, virtualisierter Tests und kontinuierlicher Überwachung. Da manuelle Konfigurationsschritte entfallen, garantiert die Automatisierung durch IaC eine erhöhte Produktivität und bessere Zuverlässigkeit. Pflege- und Wartungsaufwendungen für die Infrastruktur entfallen nahezu vollständig, wodurch auch eine oftmals nicht geringe Kostenersparnis erreicht werden kann.
Vermeiden Sie Vendor Lock-In - mit IaC und Multi Cloud Ansatz
Aber nicht nur im DevOps-Umfeld bietet der Einsatz von IaC besonders viele Vorteile. Auch Unternehmen, die ihre IT-Infrastruktur in der Cloud betreiben, können von IaC profitieren. Denn besonders bei der Wahl des richtigen Cloud-Anbieters ist Vorsicht geboten. Die meisten Cloud-Kunden gehen davon aus, sie könnten ihre Daten und IT-Workloads jederzeit von einer Cloud in eine andere migrieren und somit ihr Cloud-Umfeld an die sich ändernden Anforderungen anpassen. Die Realität sieht jedoch anders aus: rein ja, raus nein. Durch die jeweils unterschiedlichen Arten der Implementierung und damit einhergehenden hohen Kosten und technischem Aufwand machen es Cloud Anbieter ihren Nutzern oft besonders schwer, ihre IT-Workloads zum Service-Stack eines Konkurrenten zu migrieren. Dieses Vorgehen nennt man Vendor Lock-In.
Dieses Problem können Sie umgehen, indem sie ihre Cloud-Infrastruktur mit Hilfe von DevOps und IaC von vorn herein flexibel und hybrid aufbauen, um Teilkomponenten später unkompliziert austauschen zu können. DevOps baut nicht nur auf den Einsatz von Open-Source-Technologien, sondern konzentriert sich insbesondere auf die Technologieunabhängigkeit bei der Verwaltung und dem Betrieb von Cloud-Diensten. Setzt man auf offene Standards und freie Software, ist man zwar per Definition nicht von einem einzelnen Anbieter abhängig, jedoch bleibt immer noch das Problem über die Kontrolle der Hardware Ressourcen.
Abhilfe schaffen hier IoT-Tools wie Kubernetes oder Terraform. Richtig eingesetzt dient z.B. Kubernetes als abstrakte Zwischenebene und entkoppelt die eigenen Anforderungen an eine IT-Infrastruktur von der darunter liegenden, Anbieter-spezifischen Schicht. Des weiteren gibt es Plattformen wie Kubermatic, die es ermöglichen, über verschiedene Cloud-Anbieter und auch on-premise Kubernetes-Cluster zu verwalten und so Anbieter-unabhängig zu deployen. So wird es möglich, eine gesamte IT-Infrastruktur über mehrere Clouds verteilt aufzubauen. Hier spricht man vom sogenannten Multi Cloud Ansatz.
Durch IaC werden die gewünschten Komponenten als Code abstrakt definiert, welche anschließend durch Orchestrierungs-Software wie OpenShift als korrespondierende IT-Systeme bereit gestellt werden. Da der Code bei der Verwendung von IaC unter der eigenen Kontrolle verbleibt, können so die gewünschten Strukturen explizit dokumentiert werden. Die Bereitstellung der Infrastruktur als Code ermöglicht es, die einzelnen Komponenten über mehrere Clouds zu verteilen und somit flexibel und unabhängig von einzelnen Cloud-Anbietern zu bleiben.
Es bleibt zu erwähnen, dass der Aufbau einer Cloud Infrastruktur als Code nicht DAS Wundermittel gegen Vendor Lock-in darstellt, sondern lediglich einen Baustein in der vorangehenden Planung, um später keine bösen Überraschungen zu erleben.
Fazit
Die Anwendung von Infrastructure as Code bringt in verschiedenen Einsatzbereichen große Vorteile mit sich. Durch die Automatisierung von Prozessen und die Bereitstellung von Infrastrukturleistungen mithilfe von Code entfallen kostenintensive Wartungsarbeiten und manuelle Konfigurationen. Somit lassen sich gängige Praktiken aus der Softwareentwicklung wie zum Beispiel Pull Requests und automatisierte Tests auf Infrastruktur anwenden. Einzelne Hardwarekomponenten lassen sich automatisiert, schnell, flexibel und in großer Zahl gemäß den individuellen Anforderungen bereitstellen. Unternehmen, die ihre Infrastruktur in der Cloud betreiben, können durch den Einsatz von IaC und modernen DevOps Praktiken einem Vendor Lock-In vorbeugen und ihre Systeme schnell und flexibel skalieren. Mit Hilfe von Infrastructure as Code in Verbindung mit Infrastructure as a Service (SaaS) lässt sich so ein hochverfügbares Multi-Cloud-Umfeld schaffen, an dem selbst komplexe Änderungen und Anpassungen jederzeit möglich sind.
Scandiolife auf Instagram.
Hier zwitschert die Scandio auf Twitter.