AWS Code Catalyst: A ‘Low-Code’ Approach for the Dev Lifecycle
Launched at the Amazon Web Services‘ Re:Invent user conference this month, AWS’ CodeCatalyst aims to handle, in a low-code way, the entire software development cycle, ie building a repository, setting up logging, a CI/CD pipeline. Its purpose is to reduce “friction throughout the development lifecycle,” as AWS Developer Advocate Steve Roberts summarizes in a blog post.
“We built this with developers, team, and collaboration in mind. It really helps you plan and develop and collaborate in different applications from AWS,” noted AWS Chief Technology Officer Werner Vogels, during his keynote talk.
This service would interest anyone who has ever tried to set up a bundler that didn’t bundle or uttered the phrase, “it works on my machine so it should work on yours,” which, of course, is rarely the case.
A few of the features included with CodeCatalyst include On-Demand cloud-based Dev Environments, issue management, trace commit changes, pull request deployment, automated dashboards, and inviting others to collaborate via email. All of this is available in selectable packages called blueprints, which are provided by AWS or you can create your own.
These are essentially CodeCatalyst “package options” pre-designed by AWS. The blog post more formally refers to them as, “Parameterized application blueprints enable you to set up shared project resources to support the application development lifecycle and team collaboration in minutes.”
The blueprints include the initial code repository which can be AWS service configuration or a git repository and an issue tracker (internal or external trackers are accepted) as well as source code and best practices (all incredibly helpful if needed). Also in the blueprints — CI/CD pipelines and hosting resources. Code up some business logic and hit “deploy” to see some code.
Supported languages are Typescript, Python, Java, .Net, and supported frameworks include React, Angular, and Vue with “more to come” though no future release dates were mentioned.
Cloud-Based Dev Environments
Rather than have developers use local development environments, CodeCatalyst uses a devfile (link) that defines the configuration in an on-demand cloud-based Dev Environment. The resources needed to code, test, and debug a project are all configured in the devfile.
One challenge this aims to solve is “environmental drift.” The effects of environmental drift are usually seen later in a project. This happens when someone on the team has a slightly different version of a toolchain or library than the remainder of the environments related to the project. The end result is subtle bugs that go unnoticed for longer than they should. Dev Environments remove any unnecessary variance.
Build and Deploy Pipelines
Vogels describes this as, “A very easy way to deploy full AWS services across regions, across accounts, and your global network and to test building, ports, code coverage, unit testing, and automation… the heavy lifting for development that actually doesn’t help us build an application faster.”
The build and release pipeline created by the blueprint can run on flexible or managed infrastructure, can use on-demand compute or pre-provisioned build, including a choice of machine sizes and container environments. Built-on or partner-provided actions are acceptable, GitHub actions are acceptable, and pipelines are configurable using YAML or a visual editor.
You can deploy to popular AWS services including Amazon Elastic Container Service (ECS), AWS Lambda, and Amazon Elastic Compute Cloud (Amazon EC2).
CodeCatalyst is a managed service and is currently available in preview.
Watch Vogel’s entire keynote here: