7 Arten, wie Infrastructure as Code deine Infrastruktur verbessert

Image of Felix Klauke
Felix Klauke

Das Bereitstellen von Infrastrukturen braucht teilweise eine gesamte eigene Abteilung, die sich nur damit beschäftigt. Viele manuelle Prozesse sind von Nöten, um neue Umgebungen bereitzustellen. Auf Dauer geht viel Zeit dabei drauf, immer wieder die gleiche Umgebung aufzubauen. Infrastructure as Code möchte dieses Problem angehen.

 

Infrastructure as Code

Durch das Abbilden deiner Infrastruktur als Code (IaC, Infrastructure as Code) wird deine Infrastruktur nach und nach selbst nur noch zu Code. Eine Beschreibung, wie jede andere. Dadurch muss die Infrastruktur nicht mehr in komplexen, manuellen Prozessen aufgebaut werden, sondern es liegt bereits eine vollständige und anwendbare Abbildung vor, die du automatisiert umsetzen kannst. Du profitierst von einer einfachen Verwaltung, geringeren Risiken und hoher Skalierbarkeit, während du gleichzeitig deine IT entlastest und DevOps-Ansätze förderst.

 

Vorteile von IaC

Wir betrachten nun die Vorteile von IaC und finden heraus, wie es deiner Infrastruktur hilft.

 
1. Einheitlichkeit

Deine Umgebungen werden einheitlicher und homogener. Viele Admins haben ihre ganz eigenen Herangehensweisen, wie sie Probleme lösen. Zwei Umgebungen mit der gleichen Software können von zwei Entwicklern möglicherweise über völlig verschiedene Methoden provisioniert und konfiguriert werden. Durch IaC sorgst du hier für einen Konsens und machst den gesamten Aufbau deiner Infrastruktur nachvollziehbarer und intuitiver. 

 

2. Gleiche Einstellungen in Test- und Produktivumgebung

Vom Filesystem, über die Firewall bis hin zum Netzwerk werden alle Komponenten in all deinen Umgebungen gemanaged. So kannst du die Unterschiede von zum Beispiel Development- und Produktivumgebung merklich reduzieren. Indem du diese Unterschiede reduzierst lässt du weniger Spielraum für Seiteneffekte und verhilfst deinen Tests zu weit mehr Aussagekraft, weil du Umweltbedingungen ausschließen kannst. Dadurch kannst du mehr Fehler bereits vor ihrem Weg in die Produktionsumgebung finden.

 

3. Reproduzierbarkeit

Du hast deine Umgebung durch eine manuelle Änderung beschädigt, oder es kam zu einem anderen Fehler, der sich auf deine Umgebung ausgewirkt hat? Anstatt dass du diesen Fehler mit Gewalt reparieren musst, was vielleicht gar nicht möglich ist, kannst du einfach deine Umgebung wegwerfen und neu installieren. Das aber nicht etwa manuell, sondern du kannst genau die gleiche Umgebung ohne weiteren Aufwand reproduzieren. Das erleichtert das Finden und Nachvollziehen von Fehlern enorm und macht deine Infrastruktur robuster. 

 

4. Versionierung

Den Code deiner Infrastruktur kannst du nach Belieben versionieren. Das eröffnet gleichzeitig die Möglichkeit von Rollbacks und Branching. So kannst du auch verschiedene Versionen deiner Infrastruktur an verschiedene Versionen deiner eigentlichen Software binden und sicherstellen, dass diese immer zusammenpassen und es keine Versionsfehler mit Abhängigkeiten o.ä. gibt.

 

5. Review- und Entwurfsprozesse

Änderungen an deiner Umgebung erfolgen oft manuell und per Kommandozeile direkt in deiner Umgebung. Ein Tippfehler und alles ist hinüber? Mitnichten. Wenn du nicht mehr an der Infrastruktur arbeitest, sondern nur noch ihren Code updatest kannst du darauf eine normale CI Pipeline aufbauen diese optional auf eine Continuous Delivery Strategie ausweiten. Kollegen können deine Änderungen reviewen und du kannst verschiedene Konfigurationen entwerfen und testen. Dadurch bleiben alle Änderungen an der Infrastruktur direkt dokumentiert und sind von mehreren Leuten nachvollzierbar.

 

6. Zentrale Inventarverwaltung und Sicherheitsupdates

Du erhältst durch IaC eine genaue Inventarverwaltung deiner Umgebung. Welche Software ist wo und in welcher Version mit welcher Konfiguration installiert? Während du den Aufwand für Konfigurationsmanagement reduzierst erhöhst du die Robustheit deiner Umgebung, indem du wichtige Updates und Sicherheitseinstellung zentralisieren kannst. 

 

7. Skalierbarkeit

Normalerweise steigt mit steigender Anzahl an Umgebungen auch der Wartungsaufwand. Alle Systeme brauchen regelmäßige Updates und jede neue Installation bedeutet weiteren Aufwand. Produktivumgebung steht, endlich, fehlen nur noch Test- und Stagingumgebung. Das bedeutet aber nicht zwingend weitere manuelle Arbeit. Wenn du deine Infrastruktur als Code abgebildet hast kannst du nach Belieben neue Umgebungen aufsetzen. In Verbindung mit einer Cloud kann das sogar dynamisch passieren. Du brauchst eine weitere Testumgebung? Klar! Du brauchst an einem gut besuchten Abend noch eine weitere Produktivumgebung für Lastverteilung? Gar kein Problem!

 

Fazit

Der IaC Ansatz sorgt dafür, dass du nicht mehr in deiner Umgebung arbeiten musst, sondern nur noch an deiner Umgebung. Provisionierung und Konfiguration sind danach reine Formsache. Du nimmst also keine Änderungen an der Infrastruktur an sich mehr vor, sondern nur nach am Code, der deine Infrastruktur abbildet. Dadurch erhöht sich die Qualität deiner Infrastruktur deutlich. Du kannst manuelle Prozesse über Bord werfen und dich auf deine Automatisierung verlassen - Das spart auf Dauer Zeit, Geld und reduziert Fehlerquellen - win, win, win!

Wie provisionierst und konfigurierst du deine Infrastruktur? Lass es mich in den Kommentaren wissen!

Kommentieren

Blog

Verwandte Artikel

Image of Felix Klauke
Felix Klauke

Warum ich Continuous Delivery liebe und wieso du das auch solltest

Indem du Software kontinuierlich auslieferst ebnest du den Weg für höhere Softwarequalität. Die...

Weiterlesen
Image of Felix Klauke
Felix Klauke

Die Anatomie einer großartigen Continuous Integration Pipeline

Bei Softwareentwicklung spricht jeder von Automatisierung und von Qualität. Ein CI/CD Konzept hilft...

Weiterlesen