Verwenden Sie Infrastructure as Code?

Heutzutage innovieren immer mehr Unternehmen in den Bereichen Daten und Softwareentwicklung. Bei Hosted Power begrüßen wir diese Entwicklung und innovieren mit, angefangen bei der Infrastruktur. Wir fragen uns zum Beispiel ständig, wonach Softwareentwickler und Datenexperten suchen. Wir sind überzeugt, dass wir bei korrekten Antworten auf diese Fragen auch enge Kooperationen zwischen diesen Rollen erreichen können.

Indem wir uns öffnen, lernen wir zunehmend, die Sprache des jeweils anderen zu sprechen, und unsere Qualität und Performance werden immer stärker mit Ihren Daten und Ihrer Software verflochten.

Die Grenze zwischen Infrastruktur (Operations) und Anwendungen verschwimmt seit Jahren, obwohl es sich bis heute noch um zwei getrennte Welten handelt. Unternehmen, die aktiv in Innovation investieren, bemühen sich darum, Dev- (Software) und Ops-Teams (Infrastruktur) gemeinsam weiterzuentwickeln. DevOps ist zwar kein neuer Begriff, doch die Technologien zur Stärkung dieser Verbindung zwischen den beiden Welten und dazu, sie mit der Zeit sogar miteinander verschmelzen zu lassen, entwickeln sich rasant weiter.

Ein gutes Beispiel ist, dass die Infrastruktur seit der Etablierung der Infrastrukturvirtualisierung als Standard tatsächlich programmierbar geworden ist. Mit anderen Worten: Infrastruktur als Code.

Infrastructure as a Code

 

Was ist Infrastructure as Code?

Jedes Unternehmen ist auf Software angewiesen, und diese Software wiederum auf IT-Infrastruktur. Sie können Infrastruktur im weitesten Sinne verstehen. Dazu gehören Netzwerke, Server, Speicher, Berechtigungen und Sicherheit, also das gesamte Spektrum.

Software wird mit Code erstellt. Hardware läuft heutzutage in der Regel und häufig virtuell in der cloud. Diese Kombination eröffnet neue Möglichkeiten. Sie können Ihre Infrastruktur programmieren.

Infrastructure as Code (IaC) oder frei übersetzt «programmierbare Infrastruktur» bedeutet, Infrastruktur mithilfe von Code zu definieren und zu verwalten. Eine solche Infrastruktur wird als Objekte mit Eigenschaften beschrieben. Diese Objekte werden häufig in YAML, XML oder JSON beschrieben. Oft besteht auch Unterstützung dafür, dies in Ihrer bevorzugten Programmiersprache wie Python umzusetzen.

Diese «Objekte» werden anschließend in einer Umgebung bereitgestellt und ihr Zustand wird synchronisiert. So werden IT-Komponenten erstellt, aktualisiert oder gelöscht. Sie programmieren im Grunde, was Sie benötigen, und synchronisieren es beispielsweise mit der cloud-Umgebung unserer Hosted Power cloud, von AWS oder von Azure.

AWS verfügt über Komponenten namens «IaC provisioning service», die AWS-Frameworks enthalten. Dazu gehören die bekannten Frameworks SAM und AWS CDK. Beide Frameworks geben Cloudformation aus, das innerhalb eines AWS-Kontos tatsächlich einen CloudStack erstellt. Anschließend können Sie bestimmte Aktionen pro Stack ausführen.

Imperativ oder deklarativ?

Um die Grundsätze von IaC zu verstehen, ist es wichtig, den Unterschied zwischen imperativ und deklarativ zu kennen. Bei einem imperativen Ansatz gehen Sie Schritt für Schritt vor. Ein deklarativer Ansatz hält dagegen nur den Endzustand fest, ohne die Schritte von Punkt A nach Punkt B zu dokumentieren.

Ein deklarativer Ansatz ist besonders nützlich, wenn Sie über eine DTAP*-Umgebung verfügen. Schließlich möchten Sie für Testläufe dieselbe Infrastruktur verwenden, damit sich Ihre Software gleich verhält. Wenn Sie jeden Schritt für jede Umgebung beschreiben müssten, würden sich zwangsläufig Fehler einschleichen, was zeitaufwendig ist.

* DTAP: Entwicklung, Test, Abnahme und Produktion

Veränderlich oder unveränderlich?

Bei der Arbeit mit IaC sind noch einige weitere Begriffe wichtig: veränderlich und unveränderlich.

Veränderlich bedeutet im Grunde, dass Sie Ihre Infrastruktur auf klassische Weise verwalten. Mehrere Personen können Änderungen vornehmen und dadurch auch Fehler verursachen. Probleme erfordern Untersuchungen, die viel Geld kosten können.

Eine unveränderliche Infrastruktur ist «unbeweglich» und kann sich im Grunde nicht anpassen. Das klingt einschränkend, ist es aber nicht. Sie führen Softwareversion 1 und Softwareversion 2 gleichzeitig aus, testen bei Bedarf, beenden die Nutzung von Softwareversion 1 und beginnen mit der Nutzung von Version 2. Unveränderliche Infrastruktur bietet Sicherheitsvorteile, lässt sich besser skalieren und ist fehlerfrei.

IaC ermöglicht es Unternehmen, ihre Betriebsumgebungen effizienter zu verwalten.

The complete structure of Infrastructure as a Code

Kurz gesagt: Warum sollten Sie Infrastructure as Code wählen?

  • Entlasten Sie Ihre Entwickler:
    Code-Reviews
    Skalierbarkeit
    Einfachheit
    Versionsverwaltung
  • Rollbacks
  • Security by design
  • Automatisierung

Mit IaC können Sie schnell und in hoher Qualität arbeiten. Sie verringern die Wahrscheinlichkeit, dass etwas schiefgeht, und falls doch etwas passiert, kann es schnell behoben werden. Das führt zu mehr Performance und hoher Qualität.

Anwendungen

Es ist nicht immer einfach, einen Überblick über die verfügbaren Frameworks zu bekommen. Daher führen wir hier einige häufig verwendete Anwendungen auf.

  • Terraform: Konfigurationsorchestrierung. Terraform koordiniert die Konfiguration komplexer Umgebungen und Cluster.
  • Ansible/Chef: unterstützt Sie beim Aufbau der Infrastruktur sowie bei der Bereitstellung und Konfiguration von Anwendungen.
  • Puppet: Ähnlich wie Ansible, verwendet jedoch die Programmiersprache Ruby
  • Helm: Dieses Tool unterstützt Sie bei der Verwaltung von Kubernetes -Umgebungen.
  • AWS Cloudformation, SAM & CDK: Verwaltung der AWS-Infrastruktur.
  • Azure resource manager: Verwaltung von Azure

Fazit

Bei Hosted Power ist IaC vollständig in jede von uns entwickelte Lösung integriert. Wenn Ihre Anwendung spezifische Anforderungen hat, passen wir unsere Lösungen gerne an. IaC trägt zu Qualität und Performance bei, und genau das sind einige unserer besonderen Vorteile!

Want to learn more about these topics?