Infrastructure as Code: Warum wir bei nine Terraform verwenden

Simi Sep 11, 2018
Infrastructure as Code: Warum wir bei nine Terraform verwenden

Für Infrastructure as Code gibt es heute zahlreiche Lösungen. Für uns ist es zentral, die Provisionierung der Infrastruktur unserer Kunden so effizient, reproduzierbar und automatisiert wie möglich zu gestalten. Daher arbeiten wir bei nine mit Terraform. Was sind in unseren Augen die Vorteile?


Was ist Infrastructure as Code?

Infrastructure as Code bedeutet, dass mittels Erstellen von einfachem Code
Infrastrukturen konfiguriert und automatisierte Vorgänge (z.B Provisionierung) in die Umgebungen implementiert werden können, ohne in einer Konsole jedes Mal aufs Neue einzelne Komponenten auszuwählen. Der Vorteil liegt darin, dass die erstellten Konfigurations-Files mehrfach verwendbar sind, was den zeitlichen Aufwand deutlich verkürzt, eine hohe Standardisierung und eine höhere Qualität ermöglicht.


Modularität & Standardisierung

  • Aufteilung der Konfigurationsfiles in Module: Damit wird es möglich, Projekte je nach Ausprägung unterschiedlich zu strukturieren.
  • Hoher Grad an Standardisierung: Komplexe Konstrukte können ohne manuelle Neukonfiguration wiederverwendet werden. Der Terraform-Benutzer muss lediglich noch einzelne Variablen an ein Modul übergeben, zum Beispiel wenn jemand die gleiche Infrastruktur in einer anderen Region wünscht.
  • Automatische Prozesse: Wenn eine Datenbank konfiguriert wird, wird ohne manuellen Aufwand auch das dazugehörige Monitoring aufgesetzt.
  • Provider-übergreifendes, flexibles Modell: Es gibt eine ständig wachsende Anzahl unterstützter Provider, die mittels Terraform provisioniert werden können (unter anderem AWS, Azure und Google Cloud Platform). Die entsprechenden Module werden dynamisch geladen und kommunizieren mit den verschiedenen Cloud-Providern. Somit wird es nicht notwendig, Zeit fürs Hineindenken in neue Tools zu investieren.

Nachvollziehbarkeit des Set-ups

  • Versionskontrolle: Terraform erlaubt uns, Änderungen an der Infrastruktur durch Versionskontrolle reproduzierbar zu machen.
  • Fehlerreduktion: Dank eines Review-Prozesses mit Hilfe von GitLab können wir Fehler verhindern, da jede Änderung von einer zweiten Person abgesegnet werden muss.
  • Einfache Dokumentation und Nachvollziehbarkeit: Der Infrastruktur-Code kann in einzelne Komponenten aufgeteilt werden, die auf die individuelle Planung zugeschnitten sind. Das Format HCL (HashiCorp Configuration Language) ist zudem einfach lesbar.

Automatisierung der Abläufe

  • Wegfall manueller Eingriffe: Terraform muss nicht zwingend von einem Menschen bedient werden, da man die Prozesse weitgehend automatisieren kann.
  • Dadurch schnelle Fehlerbehebung: Testläufe kann man periodisch starten, um die Infrastruktur auf Config-Drift zu prüfen und diesen rasch zu beheben. Ein Config-Drift tritt dann ein, wenn eine Änderung ausserhalb von Terraform vorgenommen wird und nicht mehr mit dessen Konfiguration übereinstimmt.
  • Gleichbleibende Code-Qualität: Mit einer CI-CD-Pipeline und automatisierten Tests kann man zudem sicherstellen, dass die Code-Qualität den Standards entspricht.


Wie hebt sich Terraform von anderen Lösungen wie CloudFormation ab?

Terraform kommt mit einer eigenen Domain Specific Language (DSL), welche sehr gut lesbar ist, automatisch validiert und formatiert wird. Einziger Nachteil: Man muss eine weitere Programmiersprache lernen - diese ist aber vergleichsweise einfach und schnell verinnerlicht. Zum Vergleich: CloudFormation (Tool von AWS) Templates werden in YAML beschrieben. Für einfache Konfigurationen ist diese Sprache gut geeignet, verliert jedoch mit steigender Komplexität an Übersichtlichkeit.

Der AWS-Provider auf Terraform ist zudem Open-Source, damit stehen neue Services oft schneller auf Terraform als bei AWS CloudFormation. Somit sind wir bei unseren Kundenprojekten technisch immer auf dem neuesten Stand.

Was bedeutet dies für Sie als Kunde?

Dank der modularen, offenen Struktur und der Flexibilität des Tools sind wir noch schneller und flexibler im Ausliefern neuer Set-ups. Zudem stellen wir sicher, dass die möglichen menschlichen Fehler auf ein Minimum reduziert werden - dies macht die Systeme deutlich stabiler und damit Ihre Applikation hoch verfügbar.


Erhalten Sie in unserem Whitepaper«Unternehmen in der Cloud» weitere
Informationen zum Thema Cloud und was dies für Unternehmen bedeutet.

 

Simi

Product Marketing Manager at nine internet solutions