AWS re:Invent: Inside AWS Cloud Developer Kit CDK Patterns
Developers build applications. Developers also build web, embedded, server-side and deeper system-level code streams that all rank as applications. Also, for now, developers build cloud applications.
Basic fundamental truisms aside, this reality clearly means that software application developers (like all prudent engineers who respect their craftspersonship) like to make sure that they use the right tool for the job.
For cloud development, that means using cloud developer kits, clearly.
Deeply focused on this space (obviously) is Amazon Web Services (AWS) and a key open source project that has been helping to drive developer tool functionality in this zone is CDK Patterns.
Initially created by Matt Coulter and now widely shared through AWS and the community at large, CDK Patterns even has its own CDK Day to bring cloud developers together.
Matt is an AWS DevTools Hero and a technical architect for Liberty IT in Belfast, Northern Ireland. He champions a well-architected, sustainable and serverless-first way.
Upon joining Liberty Mutual Group, Coulter has said the project’s inception drew upon his experience developing serverless solutions using AWS CloudFormation templates, a service which enables cloud engineers to model, provision and manage AWS and third-party resources by treating Infrastructure-as-Code (IaC).
Brittle tittle tattle
Coulter has explained that some developers who are new to public cloud might find CloudFormation intimidating, largely because they ‘didn’t know what good looked like’ i.e. it was hard to see how robust they would be in production, so some perceived the technology to be somewhat brittle.
“Those coming from a SpringBoot background were used to running everything locally, while having extensive unit and integration test suites,” wrote Coulter, in an AWS blog.
Working as he did in a cloud posture environment with guardrails, Coulter said his goal was to make serverless first and core for more than 1,000 developers.
The AWS Cloud Development Kit (AWS CDK) AWS CDK first became generally available in July 2019. While using it for a period of time, Coulter wanted to push a few boundaries – he attended AWS re:Invent back in 2019 and listened to developer feedback.
“The real problem dawned on me. The issue when moving from traditional to serverless implementations was something I call ‘AWS Overload’. There are hundreds of serverless products, features and configurations on AWS, [so] how can a developer keep up with the right implementation for their current situation? The day after a new feature announcement, dozens of blog posts would appear. I would read them all and then try to implement something, only to meet an internal guardrail. This was exhausting, and this was the problem I needed to solve,” said Coulter.
Building CDK Patterns MVP
The solution he came up with was to take the patterns that the AWS Heroes and Developer Advocates were discussing and then implement them via open source on GitHub using AWS CDK.
“Developers could clone and deploy the patterns into their accounts. I added links to all the external articles detailing the theory of the pattern in the readme so they could self-educate. I even recorded YouTube videos in which I shared my thoughts on the pattern,” wrote Coulter.
To help his own company’s developers, he created an internal fork tailored to specific guardrails. That way, developers could clone and deploy using the exact same patterns from GitHub, rather than creating something only seen internally. After a few patterns, he realised that unless he provided a mechanism for people to choose the right pattern for their situation, he wasn’t helping solve my original problem.
He refocused and collaborated with Heitor Lessa (principal solutions architect, developer acceleration at AWS) to create the Well-Architected Pattern Matcher.
“Now developers could use the AWS Well-Architected Framework to guide them to the right pattern,” he said.
As of October 2020, there are 23 patterns using 25 serverless components from 17 contributors. The patterns all launch with CloudFormation, TypeScript and Python support. The community has also been adding Java and C# support. The GitHub repo gets an average of 1,000 views a day and it has nearly 700 stargazers.
“At Liberty Mutual, we have deployed more than 3,000 serverless CDK patterns between January 2020 and today. In a recent informal poll, more than 66% of developers chose AWS CDK as their technology of choice for building serverless applications on AWS.
AWS has also embraced CDK Patterns, with Werner Vogels referring to two patterns and my work during the AWS Americas Online Summit in September 2020,” concluded Coulter.
On social media, there are now more than 2,100 followers of the @cdkpatterns Twitter account.