The most basic and often the most challenging aspect of public cloud computing is being able to configure the right set of resources needed to enable a given application.
It's a challenge that Amazon Chief Technology Officer Werner Vogels (pictured) discussed during a keynote at the AWS Summit Online Americas event on Sept. 29, where he detailed the need for and power behind the AWS Cloud Development Kit (AWS CDK). The AWS CDK was first launched by AWS during the AWS Summit in New York in 2019 and has grown in usage and capabilities in the time since then. The AWS CDK provides users with a high-level object-oriented abstraction to define AWS resources imperatively, using the power of modern programming languages.
Vogels noted that during the ongoing global COVID-19 pandemic there has been a need to focus on core aspects of the cloud, including operational excellence, security, reliability, performance and cost optimization. One key area that Vogels highlighted is the need to enable developers to more rapidly build applications in the cloud. While AWS has a lot of different services and tools to help developers build and deploy applications in the cloud, he noted that Amazon itself realized that more is needed.
"Developers need more than just the largest toolset; they need mechanisms and constructs that combine tools and services into reusable abstractions," Vogels said. "In computer science, we've been using abstractions for a long time to encapsulate ideas into the reusable components capable of hiding complex implementations."
Why Amazon Built the AWS Cloud Development Kit
Amazon already has the CloudFormation infrastructure-as-code service in its portfolio that can help organizations define and deploy cloud environments. What Amazon's own engineers discovered though is that it was not enough to meet the company's own needs when they were rebuilding the search service on Amazon.com.
The search service helps identify trending products in the Amazon catalog, analyzing Amazon.com events like page views and orders, and then uses those events to identify products in real time, according to Vogels. Because of the global nature and scale of the Amazon catalog, the development team needed to continuously deploy the service to multiple development staging and production environments, across a growing number of AWS regions around the world, he added.
While AWS CloudFormation can help with provisioning cloud resources, Vogels said it doesn't have the concept of an application; rather, it's just about the individual resources that make up an application. So Amazon's team decided to develop a high-level object-oriented abstraction that allowed it to work with the power of CloudFormation using Java, a general-purpose imperative programming language, to help model the more complex application logic behind these resources. That effort evolved to become what is now known as the AWS CDK.
"As is often the case, we quickly found out that AWS customers have the same challenges and needs," Vogels said.
AWS CDK Community Is Growing
The AWS CDK was initially focused on working with the AWS CloudFormation service, but has since expanded to have broader usage.
"Seeing how powerful the CDK was for CloudFormation, we realized that this was a model that could help developers programmatically configure other systems, both on and off AWS," Vogels said. "Any complex declarative system configuration could be abstracted through its own CDK."
The CDK now also works with HashiCorp's Terraform infrastructure-as-code in a project called CDKtf. Additionally, there is a CDK for the Kubernetes container orchestration system known as CDK8s. Going a step further, the CDKPatterns.com site provides users with a listing of different configurations where CDK can be used to help accelerate application development and deployment. Vogels noted that today CDK has become the de facto software development framework internally at AWS.
"I expect the CDK to become the developer-preferred approach for building and configuring cloud services and other complex systems," he said. "It is going to be exciting to see what happens as the tools improve and make provisioning cloud services more accessible to a greater range of developers."