Infrastructure as Code

Als Infrastructure as Code (IAC) wird eine spezielle IT-Infrastruktur bezeichnet, die von Operations-Teams verwaltet werden. Dabei werden jedoch keine manuellen Verfahren verwendet, die Codes werden vielmehr automatisch bereitgestellt und verwaltet. Infrastructure as Code wird auch als programmierbare Infrastruktur bezeichnet.

Allgemeine Informationen zum Thema

Die Idee hinter IAC ist der Skript-Programmierung ähnlich, die zur Automatisierung relevanter IT-Prozesse verwendet wird. Skripte werden jedoch vorrangig angewendet, um statische Schritte zu automatisieren, die sich auf unterschiedlichen Servern wiederholen. IAC dagegen verwendet deskriptive oder High-Level-Sprachen zur Codierung adaptiver und komplexer Bereitstellungsprozesse.

Die Möglichkeiten des Infrastructure of Code sind zahlreich. So kann IAC mit Ansible, einem Konfigurations-Tool und IT-Management, codieren und einen MySQL-Server installieren und verifizieren, ob MySQL auch wirklich richtig ausgeführt wird. Des Weiteren kann IAC Benutzer-Accounts und Passwörter erzeugen, neue Datenbanken einrichten und Datenbanken entfernen, die nicht mehr nötig sind. Dies alles geschieht ausschließlich mittels eines Codes. Somit ähnelt Infrastructure as Code den Prozessen bei Software-Praktiken, die durch die Entwickler auf Code-Iterationen und Codeversionen testen und die Bereitstellung so lange zurückhalten, bis sich herausgestellt hat, dass eine Software sich innerhalb des Testbetriebes als funktionsfähig erwiesen hat und somit in die Produktion aufgenommen wird[1].

Zielsetzung des Infrastructure as Code

Durch die wachsende Zahl von Servern, Cloudlösungen und weiteren IT-Systemen wird es immer schwerer, diese manuell zu verwalten. IAC soll automatisiert helfen, solche Systeme problemlos zu installieren. Infrastructure as Code verfolgt das Ziel, die verschiedenen Vertreter von Systemen zu analysieren, miteinander zu vergleichen und Vor- und Nachteile herauszufiltern. Dabei wird der Fokus auf speziell ausgewählte Merkmale gerichtet, um die Verwendung zu erleichtern.

Verbindung des IAC mit anderen Systemen

Viele Softwareprodukte werden für viele Jahre programmiert und auch angewendet. Eine der Herausforderungen ist daher die Wartung von Systemen, die bereits älter sind. Hierbei wird vorausgesetzt, dass die bestehenden, alten Umgebungen wieder so installiert werden, wie es beim Stand des Release der Fall war. Dies zu gewährleisten, ist nicht immer leicht.

Bis Infrastructure as Code entwickelt wurde, befanden sich die Altsysteme von Softwareunternehmen für eine lange Zeit in Benutzung. Der Hintergrund war die mögliche, weitere Unterstützung der Kunden, die die Systeme gekauft hatten. Als IAC ins Leben gerufen wurde, bestand das Problem, eine Zusammenführung dieser Technologie und dem Legacy System zu realisieren. Das gestaltete sich sehr umfangreich, da genaue Analysen notwendig waren, um potenzielle Risiken gleich zu Beginn ausfindig machen zu können. Auch die Umsetzung selbst war anspruchsvoll, denn dafür musste ein Automatisierungs-Tool benutzt werden, das alle notwendigen Informationen wie etwa Repository oder Software-Codes miteinander verbinden konnte, sodass zum Schluss auch das historische Modell wieder einsatzbereit war. Aus diesem Vorgehen ergab sich, dass die im Vorfeld nötige Analyse von Infrastructure as Code deutlich kostenintensiver war als die Realisierung selbst. Denn zunächst musste ein Lernprozess in Gang gesetzt werden, der umfassend und langwierig war und somit die Kosten in die Höhe trieb[2].

Vergleichbare Systeme von IAC

Das beschriebene Ziel, Bruchstellen zwischen IT-Betrieb und Anwendungsentwicklung auf lange Sicht zu überwinden, verfolgt auch das System DevOps. Diese Bezeichnung setzt sich aus den Anfangsbuchstaben der Begriffe Development und Operations zusammen. Es geht, so die Theorie, darum, IT-Betrieb und Anwendungsentwicklung so eng zusammenzuführen, dass sie wie aus einem Guss arbeiten und so IT-Systeme effizienter, schneller und besser machen.

Ähnlich wie IAC verfolgt auch DevOps das Ziel, Vorgänge zu automatisieren und so auf der einen Seite Zeit zu sparen und auf der anderen transparentere und professionellere Qualitätskontrollen durchführen zu können. DevOps reiht sich damit ein in Systeme wie Chef, SaltStack, Ansible und Puppet. Sie alle wollen durch innovative Automatisierungstechnologien die Bereitstellung und Instandhaltung verbessern.

Puppet gehört zu den am weitesten entwickelten Systemen der IT-Automation-Tools. Schon im Jahr 2005 kam die erste Version dieser Software auf den Markt und löste den damaligen Marktführer CFEngine ab. In der Zeit danach wurde Puppet kontinuierlich weiterentwickelt und bietet heute das komplette Spektrum von Automatisierung der wichtigsten Betriebssysteme. Puppet ist – wie in diesem Marktsegment üblich – in zwei Versionen erhältlich, als kostenlose Community-Version und als kostenpflichtige Enterprise-Edition, die mit zusätzlichen Apps und Features ausgestattet ist und einen Support bereithält, der sich speziell für größere Organisationen eignet.

Bedeutung für das Development

IT-Automatisierung ist ein komplexes Thema, das nicht leicht zu verstehen ist. Sämtliche hier genannten und weiteren Tools sind anspruchsvoll und erfordern eine umfangreiche Beschäftigung mit ihnen. In Anbetracht der Tatsache, dass die Systeme, Konzepte und neuen Technologien zunächst erlernt werden müssen, liegt eine steile Lernkurve vor, die unter anderem ein neues (Um)denken erfordert.

Doch auch und gerade im Zeitalter von Clouds und anderen Lösungen ist die Automatisierung von IT-Infrastrukturen kaum wegzudenken. Gefragt sind stabile Systeme, einfache Software und automatisierte IT-Prozesse. Diese Abläufe dauerhaft manuell zu bewerkstelligen, ist schon heute beinahe unmöglich. Ob Infrastructure as Code das favorisierte Modell ist oder ein anderes, ist eine Frage der persönlichen Ausgangslage und der individuellen Firmenstruktur, ganz ohne wird es jedoch in Zukunft kaum gehen können[3].

Einzelnachweise

  1. Infrastructure as Code IAC searchenterprisesoftware.de. Abgerufen am 13.11.2017
  2. Realisierung einer Infrastructure-as-Code-Anwendung: Zum automatisierten Aufsetzen eines CI-Service edoc.sub.uni-hamburg.de. Abgerufen am 13.11.2017
  3. Die besten Tools für Automatisierung t3n.de. Abgerufen am 13.11.2017

Weblinks