Infrastructure as Code (IaC) ist ein mächtiges Paradigma, um eine IT-Umgebung zu konzipieren, zu konfigurieren und zu implementieren. Im IaC-Modell wird ein Computersystem nicht manuell konstruiert, sondern in einer Datei mit einer speziellen Sprache beschrieben. Ein Automatisierungstool liest dann die Datei und baut das System nach den Vorgaben des Benutzers auf. Effizienz und Vielseitigkeit von IaC haben es zu einer beliebten Erweiterung von DevOps und der Cloud Computing Revolution gemacht.
Mehrere Automatisierungsplattformen unterstützen IaC, jede mit vielen unterschiedlichen Funktionen und Vorteilen. Wenn Sie beginnen, eine IaC-Lösung ins Auge zu fassen, müssen Sie überlegen, welche dieser Funktionen für Ihren Bedarf am besten geeignet sind. Eine wichtige Überlegung, die man beim Vergleich von IaC-Automatisierungsplattformen im Auge behalten sollte, ist, ob das Werkzeug imperative oder deklarative Operationen unterstützt.
Die Begriffe imperativ und deklarativ kommen in der IAC-Diskussion häufig vor. Beide Begriffe beziehen sich auf die Art und Weise, in der der Benutzer der Automatisierungsplattform Anweisungen erteilt. Mit einem imperativen Tool definieren Sie die auszuführenden Schritte, um die gewünschte Lösung zu erreichen. Mit einem deklarativen Werkzeug definieren Sie den Soll-Zustand der endgültigen Lösung, und die Automatisierungsplattform entscheidet darüber, wie dieser Zustand erreicht werden soll.
Imperative Systeme sind oft anfangs einfacher. Man könnte sagen, dass ein imperatives System eher so funktioniert, wie ein Mensch denkt. Imperative Systeme ermöglichen es Ihnen, die Konfiguration weiterhin als eine Abfolge von Aktionen oder Schritten zu betrachten, von denen jeder Sie dem Ziel näher bringt. Ein weiterer Vorzug einer imperativen Sprache ist, dass Sie damit sehr detaillierte und komplexe Konfigurationen automatisieren können, indem Sie mehrere Ebenen von Befehlen aufbauen. Und weil ein imperatives System dem Benutzer mehr Kontrolle darüber gibt, wie eine Aufgabe zu erledigen ist, ist es oft effizienter und einfacher auf einen bestimmten Zweck hin zu optimieren als ein deklaratives System.
Angesichts all der Vorteile imperativer Sprachen fragen Sie sich vielleicht, warum deklarative Sprachen so sehr in Mode sind. Deklarative Tools erfreuen sich seit einigen Jahren wachsender Beliebtheit und sind wohl das dominierende Format für die IaC-Automatisierung. Ein Grund für die Popularität deklarativer Tools liegt darin, dass sie weniger Wissen auf Seiten des Anwenders erfordern, zumindest wenn man verstanden hat, wie sie funktionieren.
Bei einem imperativen Werkzeug muss der Anwender über genügend Kenntnisse verfügen, um der Automatisierungsplattform mitzuteilen, was sie tun soll. Bei einem deklarativen System braucht der Benutzer nur den Zustand der endgültigen Konfiguration festzulegen, und die Plattform bestimmt, wie sie dorthin gelangt. Die Komplexität der schrittweisen Ausführung bleibt dem Anwender verborgen.
Ein weiterer Vorteil einer deklarativen Sprache ist, dass sie idempotenter ist. Der Begriff der Idempotenz bezieht sich auf einen Prozess, der mehrfach mit dem gleichen Ergebnis ausgeführt werden kann. Dadurch, dass eine deklarative Sprache nur den Endzustand definiert, landet man immer am gleichen Punkt, egal wo man angefangen hat. Andererseits betrachtet eine imperative Sprache eine Aufgabe als eine Reihe von vordefinierten Schritten, die je nach Ausgangspunkt zu unterschiedlichen Ergebnissen führen können.
Die führenden IaC-Automatisierungsplattformen sind auf der Skala von imperativ bis deklarativ an verschiedenen Punkten angesiedelt, wobei viele Tools zumindest in gewissem Umfang beide Ansätze unterstützen. Chef ist allgemein als ein imperatives Werkzeug bekannt. Terraform und Puppet gelten als deklarativ. Ansible und Salt sind überwiegend deklarativ, bieten aber einige Unterstützung für imperative Befehle.
Bei der Suche nach einer IaC-Automatisierungsplattform müssen Sie viele Faktoren in Betracht ziehen. Die Wahl zwischen imperativ und deklarativ ist nur ein Kriterium aus einer größeren Matrix von Optionen. Wenn Sie jedoch beginnen, Ihre zukünftige IaC-Umgebung zu konzipieren, ist es wichtig, einige Zeit für Überlegungen aufzuwenden, ob eine imperative oder deklarative Lösung besser zu Ihrem Unternehmen passen würde.
Kommentare