AWS has added Project Development Kit (PDK) blueprints to its CodeCatalyst DevOps tool. Developers can now compose applications from common patterns while also setting up DevOps resources – perhaps increasing interest in both projects.
CodeCatalyst, which was made generally available in April 2023, is an AWS DevOps service which is designed to be a complete integrated system, including source code management, build and test tools, continuous integration and continuous delivery (CI/CD), issue tracking and collaboration. AWS has other DevOps tools, such as CodeBuild, CodePipeline and CodeArtifact, but CodeCatalyst is a separate service and not a bundle of these tools. That said, it is possible to combine CodeCatalyst with some external services, including use of GitHub repositories.
PDK is a hitherto separate project, open source on GitHub, which provides building block projects for common patterns, though only three languages are supported: TypeScript, Python or Java. The PDK is based on Projen, which is designed to automate project configuration.
Blueprints have been part of CodeCatalyst since its launch, but the addition of PDK blueprints is new and provides a more powerful combination. There are currently 25 built-in blueprints, of which 5 now come from the PDK.
The tutorial we followed is includes a type-safe API, a React-based website using the AWS Cloudscape design system, Cognito authentication, and a workflow to deploy the project to AWS infrastructure.
The project is composed of all 5 PDK blueprints, which handle setting up a repository supporting the Nx build system, adding skeleton code for the API and for the Cloudscape React website, defining the AWS infrastructure based on the CDK (Cloud Development Kit), and creating the workflow to build and deploy the project. Each time a blueprint is applied, it creates a pull request, so no code changes are applied until the pull request is merged.
Once set up, the project has a built-in option to create a remote development environment based on the repository. We set up a Tabnine environment though it was not a complete success, since the terminal did not work and showed the error “tmux: need UTF-8 locale (LC_CTYPE) but have ANSI_X3.4-1968.” There is a documented fix that involves connecting to the VM running the Tabnine environment but this was friction we could have done without.
Despite this glitch, the tool impresses by generating not only the code but also the complete DevOps environment, which would otherwise be substantial work.
There are obvious limitations, including the small number of blueprints currently available and the fact that all the blueprints have version numbers beginning with zero, implying varying states of preview.
The context for CodeCatalyst and the new PDK feature is that while AWS is the biggest provider of cloud infrastructure, it is not top of mind for most developers when it comes to DevOps tooling. It appears that AWS has invested substantially in this service but whether it has sufficient momentum to establish an ecosystem is an open question. Similar questions apply to the PDK; but the hope perhaps is that combining the two will improve the appeal of both.
Another key question is whether CodeCatalyst aims too high, in creating relatively complex projects with a few clicks. The potential problem is that when it comes to maintaining and developing the project, developers will need to have more advanced skills; and developers with those skills may find working with these blueprints constraining.
The official line is that “PDK blueprints remove the undifferentiated heavy lifting of setting up different projects for a full stack application, giving you the ability to address specific requirements across multiple projects in less time.”