Infrastructure as Code (IaC) ist inzwischen ein alter Hut. Frameworks wie Terraform, Ansible und andere haben Standards geschaffen. Kaum jemand provisioniert produktive Systeme heute ohne IaC – sei es in der Cloud oder auf der eigenen Infrastruktur.
Und doch ist die Technologie für viele Entwickler oft noch eine Hürde beim Benutzen. Einer der Gründe: Die meisten Tools verwenden eine eigene, deklarative Domain-specific language (DSL), häufig auf Basis von JSON oder YAML oder sogar eine eigene Sprache wie HCL bei Terraform. Schöner ist es doch, die gleiche Sprache zu verwenden, in der auch die eigentliche Software entwickelt wird: TypeScript, Python oder Java.
Das Cloud Development Kit (CDK) von AWS ermöglicht genau das: Mittels einer verbreiteten Programmiersprache wird die für das Projekt notwendige Infrastruktur beschrieben. Dabei können wir auch die Vorteile einer modernen Sprache nutzen. So ist ein Parameter nicht einfach nur eine Zeichenkette in einer DSL, sondern zum Beispiel ein Wert eines Enum. IDE-Support gibt’s ohne Zusatzaufwand und auch Tools wie Test-Frameworks können einfach verwendet werden.
Es hat sich zusätzlich ein reichhaltiges Ökosystem gebildet. Unter https://constructs.dev/ finden sich eine Vielzahl von Paketen für verschiedene Service-Provider. Mit CDK kann ich dabei auf verschiedenen Granularitäten arbeiten. Von Low-Level Cloud Formation (in das CDK Code bei AWS übersetzt wird) bis hin zu TypeScript-Skripte mit wenigen Zeilen in ein AWS Lambda mit API umwandeln. Und die CDK CLI nimmt mir dabei auch noch Packaging und Deployment ab.
Viele der bereitgestellten Constructs sind natürlich für AWS. Aber mit CDK TF gibt es auch eine Bibliothek, die CDK Code in die Terraform DSL übersetzt und so die Anbindung von Lösungen mit Terraform-Providern ermöglicht. Außerdem gibt es CDK8s mit dem Ziel, CDK für Kubernetes bereitzustellen.
Weitere spannende Werkzeuge aus dem CDK-Kontext: Projen mit dem Ziel, nicht nur Infrastruktur, sondern das ganze Entwicklungsprojekt und den Workspace als Code zu beschreiben. jsii ermöglicht CDK in vielen Sprachen zu nutzen – obwohl es intern nur in Typescript geschrieben ist.
Es ist nicht so, dass für jegliches Provisionieren CDK genutzt werden sollte. Auch mit Terraform lassen sich zum Beispiel Konstrukte wiederverwenden oder parametrisieren. In CDK sind diese Möglichkeiten aber besser in das Framework integriert.
Ein Kritikpunkt, der mehrmals genannt wurde: Entwickler bekommen mit CDK zu viele Freiheitsgrade, was die Wartung des Infrastruktur-Codes massiv verschlechtert. Insbesondere, wenn ein Softwareprodukt vom Entwicklerteam zu einem Betriebs- oder Wartungsteam übergeht, sind klare Grenzen in der Flexibilität durchaus von Vorteil. Wenn auf der anderen Seite ein Entwicklerteam während des gesamten Softwarelebenszyklus für ein Produkt verantwortlich bleibt, sind diese Aspekte ggfs. weniger wichtig.
Zuletzt sei auch noch auf Pulumi hingewiesen, ebenfalls ein IaC-Werkzeug mit ähnlichen Konzepten wie CDK: deklarativ, beschreibt den Zielzustand und nicht den Weg dorthin, Modularisierung und Higher-Level-Abstraktionen. Pulumi ist dabei allerdings nicht auf AWS festgelegt, sondern unterstützt viele weitere Cloud- und SaaS Anbieter. Beim Interpretieren des Code interagiert Pulumi direkt mit den APIs der Cloudanbieter. Bei CDK dient hingegen die AWS CloudFormation als Zwischenschicht. Sowohl Pulumi als auch CDK sind aber eine Weiterentwicklung beim Thema Infrastructure as Code, die eine große Verbreitung finden wird.
Eine Orientierung bei der Auswahl der passenden IaC geben die Kollegen in ihrem Blogbeitrag.
Weitere Beiträge
von Matthias Niehoff
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Matthias Niehoff
Head of Data
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.