Digitale Transformation

Flexible Software-Architekturen – Teil 2: Infrastructure-as-Code

Medizintechnik

Im vorherigen Blogbeitrag haben wir beschrieben, wie sich Benutzeroberflächen von Software flexibel über die Metadaten einer Anwendung konfigurieren lassen, ohne dass ein Eingriff in den Code selbst erforderlich ist. Dank der Flexibilität der Cloud lässt sich aber sogar die Konfiguration der IT-Infrastruktur vereinfachen – mit Hilfe von direkt im Quellcode festgehaltenen Informationen, die als Infrastructure-as-Code (IaC) bezeichnet werden. Das heißt, neben der Anwendung wird auch die für ihren Betrieb benötigte Umgebung, also Hardware-Komponenten wie Speicher, Server und Netzwerk-Ressourcen, in einer maschinenlesbaren Sprache definiert und getestet.

Automatisierte Konfiguration spart Zeit und vermeidet Fehler

Damit vereinfacht IaC die Verwaltung und Bereitstellung der Infrastruktur im Rechenzentrum deutlich: Der IT-Administrator muss nicht mehr jede einzelne Komponente manuell konfigurieren und sich diese Einstellungen merken – etwa Speicherplatz zuweisen, die Netzwerkkonfiguration ändern, Instanzen bereitstellen oder auch CPU-Ressourcen zuteilen. Sondern er kann die Systemumgebung direkt auf Quellcodeebene – einer Art virtualisierten Infrastruktur – an die jeweiligen Gegebenheiten anpassen.

Das reduziert die Fehleranfälligkeit der Softwareanwendung und bietet ein hohes Maß an Flexibilität und Skalierbarkeit, das durch die Automatisierung der IT-Infrastruktur erreicht wird: Ist der Infrastruktur-Code einmal programmiert, kann der Administrator ihn immer wieder verwenden und die darin definierten Einstellungen nach Bedarf konfigurieren – duplizieren, aktualisieren, ändern oder löschen. Mit demselben Code können viele verschiedene Maschinen fehlerfrei und in gleicher Qualität dimensioniert und gesteuert werden. Auf diese Weise lässt sich die Administration beschleunigen und die Fehlerquote gegenüber der manuellen Konfiguration verringern. Denn der Code bietet einen stets aktuellen Überblick über die aktuellen Einstellungen und ermöglicht die Fehlersuche mithilfe statischer Analysen und automatisierter Tests.

Wiederherstellbare Umgebungen, nachvollziehbare Änderungen

Das macht sich vor allem in Cloud-Umgebungen bezahlt. Denn hier laufen neue Anwendungen zunächst in einer Entwicklungs- und Testumgebung, bis sie anschließend beim Kunden zum Einsatz kommen. Umso wichtiger ist es, dass diese Umgebungen absolut identisch sind. Wie die Erfahrung zeigt, sind IT-Probleme häufig darauf zurückzuführen, dass der Kunde andere Software installiert hat als der Hersteller – beispielsweise einen Virenscanner. Denn schon solche kleinen Abweichungen können zu Konflikten führen. Mithilfe von IaC lässt sich ein Klon der Test-Infrastruktur definieren und eins zu eins in der Live-Umgebung beim Kunden wiederherstellen – ein enormer Gewinn für die Qualitätssicherung. Auch bei einem Wechsel des Rechenzentrumsbetreibers können alle Einstellungen einfach in die neue Serverumgebung „mitgenommen“ werden.

Ein weiterer Vorteil programmierbarer Infrastruktur besteht in der Versionskontrolle: Änderungen an der Konfiguration lassen sich problemlos nachvollziehen und auch wieder rückgängig machen. Der IT-Administrator kann also immer nachvollziehen, wann er was geändert hat – etwa eine Einstellung der Speicherzuweisung. Erweist sich die Änderung im Nachhinein als nicht praktikabel, kann er die vorherige Version des Codes und damit die vorherigen Hardware-Einstellungen per Knopfdruck wiederherstellen.

Investitionen in IaC rechnen sich nach kurzer Zeit

Neben der Versionierung und der schnelleren Bereitstellung von Komponenten trägt als Code definierte Infrastruktur zu einer deutlichen Entlastung der IT-Abteilung in der Qualitätssicherung und damit letztlich zur Kostensenkung bei. Kein Wunder, dass sich immer mehr Unternehmen für den IaC-Ansatz beim Aufbau und der Verwaltung ihrer Infrastruktur entscheiden. Um davon zu profitieren, müssen allerdings die entsprechenden Voraussetzungen bestehen. So sollten die Mitarbeiter der IT-Abteilung über Programmierkenntnisse wie Java und Python verfügen und wissen, wie IT-Architekturen aufgebaut sind. Zudem sollten sie in der Lage sein, IaC-fähige Konfigurationstools zu bedienen – etwa Terraform, Chef, Puppet, Ansible, AWS CloudFormation oder den Google Cloud Deployment Manager. Auch die Einarbeitung in die Konzeption und Umsetzung von IaC ist nicht zu unterschätzen. Mittelfristig rechnen sich all diese Investitionen jedoch aufgrund des deutlich reduzierten Administrationsaufwands.