What is our primary use case?
AWS Cloud Development Kit (CDK) is an open-source software used to model and provision cloud applications and resources with familiar programming languages. It supports various languages like JavaScript, Python, Java, C#, and Go. The benefit is to improve the experience of working with infrastructure as code by providing higher level and reusable constructs that enable developers to create and manage AWS resources more efficiently and with less boilerplate code compared to traditional configuration files like AWS CloudFormation templates.
Earlier I was using AWS CloudFormation templates. When I switched to AWS Cloud Development Kit (CDK), I was able to reuse the constructs that enable me to create and manage AWS resources more efficiently, and it has less boilerplate code compared to the traditional configuration files like CloudFormation templates. It supports all the languages, including TypeScript, JavaScript, Python, Java, C#, and Go, which made my work easy.
Stacks contain definitions for one or more cloud resources in AWS. Stacks are also called the unit of deployments. Any number of stacks can be defined in an application in CDK.
What is most valuable?
The best features that AWS Cloud Development Kit (CDK) offers include providing a better experience of working with infrastructure as code by offering higher level and usable constructs, choosing my preferred language, allowing the use of any programming elements like parameters, conditions, conditionals, loops, compositions, and inheritance to define the desired outcome of infrastructure. There is also the CDK library of infrastructure constructs. AWS Cloud Development Kit (CDK) integrates with CloudFormation to deploy and provision infrastructure on AWS, which are some of the benefits and features.
The ability to choose my preferred programming language has helped my workflow significantly, as I can use my preferred languages such as JavaScript or C#, along with the programming elements in that language such as parameters, conditionals, loops, compositions, and inheritance to define the desired outcome of my infrastructure and application logic. I benefit from developing infrastructure in my preferred IDE, which includes syntax highlighting and intelligent code completion that has helped my workflow.
The benefits of AWS Cloud Development Kit (CDK) include multi-language support, so if I am familiar with a specific programming language, instead of writing YAML or JSON files, I can use my own language such as TypeScript, JavaScript, Python, Java, C#, .NET, or Go. There is also IDE support and improved developer experience, along with reusable components, namely AWS Cloud Development Kit (CDK) constructs that encapsulate AWS best practices. These have positively impacted my organization.
Reduced errors and an improvement in the code are specific outcomes I can share regarding AWS Cloud Development Kit (CDK). Earlier, I used to write JSON or YAML syntax. After the introduction of typed languages like TypeScript, I can catch configuration errors at compile time rather than during deployment, which significantly reduces debugging time. This has greatly reduced the errors I encounter.
What needs improvement?
AWS Cloud Development Kit (CDK) can be improved with the implementation of best practices for the constructs, such as using L2 and L3 constructs when available. They could include sensible defaults and best practices, and also improve organizing the code. Adding unit tests for constructs would be beneficial, along with enhancing security. Optimizing the development and deployment pipeline, improving configuration management, performance, and the documentation part with clearer comments explaining certain configurations would make it better.
For how long have I used the solution?
I have been using AWS Cloud Development Kit (CDK) for the past three years.
What do I think about the stability of the solution?
AWS Cloud Development Kit (CDK) is quite stable in my experience.
What do I think about the scalability of the solution?
AWS Cloud Development Kit (CDK) scalability is quite good. It delivers excellent performance, especially with support for multiple languages, which makes it very scalable. AWS Cloud Development Kit (CDK) simplifies defining auto scaling configurations using familiar programming constructs. It allows the setup of EC2 auto scaling groups, ECS service scaling, Lambda concurrency, and DynamoDB capacity with just a few lines of code, and it also has reusable patterns for scaling and a multi-stack architecture.
How are customer service and support?
I have interacted with customer support for AWS Cloud Development Kit (CDK), and the support has been excellent.
How would you rate customer service and support?
Which solution did I use previously and why did I switch?
The solution I was using before switching to AWS Cloud Development Kit (CDK) was AWS CloudFormation, which uses YAML and JSON templates. It is a native AWS service that AWS Cloud Development Kit (CDK) compiles down to. CloudFormation had no additional tooling required beyond AWS, with direct integration with AWS services.
What's my experience with pricing, setup cost, and licensing?
The pricing, setup cost, and licensing have been quite decent. Regarding AWS Cloud Development Kit (CDK), the pricing comes at no extra cost. AWS Cloud Development Kit (CDK) itself is free, making it one of the best things about it. I only pay for the resources that AWS Cloud Development Kit (CDK) provisions, which include compute resources, storage, networking, and other services. This cost is much less compared to traditional hardware solutions.
Which other solutions did I evaluate?
Before choosing AWS Cloud Development Kit (CDK), I evaluated AWS CloudFormation, which has the native integration with AWS, directly compiles down to YAML or JSON templates, requires no additional tooling, and is best for teams comfortable with declarative templates.
What other advice do I have?
AWS Cloud Development Kit (CDK) has a lot to offer. I chose a rating of 10 because of the benefits it provides, such as using familiar programming languages. I can use most of the languages that are covered: TypeScript, JavaScript, Python, Java, C#, .NET, or Go. It provides support for IDE and an excellent developer experience, including syntax highlighting, intelligent code completion, inline documentation, refactoring tools, and debugging capabilities. It has reusable components, higher-level abstractions, type safety, and error checking because of the TypeScript language used. It integrates application and infrastructure code, allowing for predictable and repeatable deployments, automatic rollback on errors, drift detection, change sets for reviewing changes before deployment, testing the infrastructure, and simplified multi-environment management.
I would advise others looking into AWS Cloud Development Kit (CDK) that they should definitely start using it now because if someone is using AWS CloudFormation, this is a significant upgrade with scalability, reusable patterns, multi-stack architecture, multiple language support, and integration with AWS scaling services. AWS Cloud Development Kit (CDK) is quite beneficial for larger teams and projects, making a significant impact. Most of the features and benefits of AWS Cloud Development Kit (CDK) that I have mentioned include significant advantages over scalability, multi-language support, and cost-effectiveness. I essentially pay nothing for AWS Cloud Development Kit (CDK), only for whatever I use, and it helps organize my code better while implementing best practices for constructs.
I rate AWS Cloud Development Kit (CDK) a 10 out of 10 based on all these factors.