Binnen het werkveld is er een groot meningsverschil tussen terraform en CDK. Veel mensen bevinden CDK als de beste oplossing gezien dit uitbouwt op een product van AWS zelf. Hierop tegen wordt vaak vermeld dat terraform voor loopt met de implementatie van services van AWS. Maar wat is er nu waar en niet waar.
Als Devops engineer werk ik met veel IAC talen. Hierdoor heb ik zowel gewerkt met terraform van hashicorp en cloud development tool kit. Hierdoor kan ik mijn eerlijke mening geven gezien ik van beide kanten de voor en nadelen heb ervaren.
Gemaakt door amazon zelf, een nieuw product. het zorgt ervoor dat het IaC principe (waar hier meer over te lezen is) volledig ingezet kan worden. Je kan je infrastructuur opbouwen in een codeer taal naar keuze. In de praktijk wordt TypeScript het meest gebruikt. Onderwater maakt CDK code aan voor de Cloud Formation service van AWS en voert dit vervolgens uit.
Gemaakt door HashiCorp, een tool die al een langere tijd bewezen is en voor meerdere cloud providers werkt. Terraform maakt gebruik van een andere aanpak. Terraform beschrijft haar resources door HCL (HashiCorp Configuration Language) een configuratie taal wat bedoeld is om simpele leesbaarheid te creƫren voor zowel mens als machine. De taal kan vergeleken worden met YAML, niet exact maar het geeft een idee waarmee het te vergelijken valt.
In de praktijk wordt zowel terraform als CDK veel gebruikt. Dit is terug te zien in de cijfers van github (gezien vanaf de publicatie datum).
Vaak wordt er verteld dat Terraform veel meer gebruikt wordt. Het verschil voor AWS als cloud provider niet groot.
Nu de belangrijkste punten in terraform VS CDK. de voor en nadelen. Elke taal heeft zijn eigen set aan voor en nadelen.
Voordelen van terraform zijn:
Echter heeft ook terraform haar nadelen.
De voordelen van AWS CDK zijn:
Daarentegen zijn de nadelen:
Terraform en CDK hebben beide hun voor en nadelen. Persoonlijk houd ik niet van vermelden dat er een winnaar is en dat doe ik daarom ook niet. Zowel terraform als CDK zijn prima tools om je infrastructuur aan te brengen. Echter voordat je de keuze maakt zal je je moeten inlezen wat het beste past voor jou situatie. Er kan niet gezegd worden dat CDK beter is omdat het van AWS is en dus meer support levert. Als je cloud provider nog wel eens veranderd kan juist Terraform een goede oplossing zijn. Maar als je juist een complexe infrastructuur moet maken (bijv een multi tenant infrastructuur ) dan kan CDK wel eens je oplossing zijn. Al met al, Kijk dus naar je situatie en wat bij je past. Persoonlijk vind ik het argument “dat heeft mijn voorkeur” ook waarde hebben. Dit kan echter niet je uitgangspunt zijn.