Terraform and the CDK use different programming models to achieve similar goals. The CDK takes a more dynamic scripting approach much like Gradle, while Terraform is more descriptive and declarative. Functionally, I think they have similar capabilities.