Simplify CI/CD and Ship Faster with CodeCatalyst
Updated: Jul 13
Sometimes, CI/CD feels like this:
We get it, and there really is a way to Simplify CI/CD and Ship Faster.
WHAT'S GOING ON
Almost every customer we work with at BUILDSTR has automated processes somewhere in the business, however small. A very large (and growing) percentage of those customers are automating the Software Development Lifecycle (SDLC). Complete end-to-end automation is not strictly necessary or even desirable for every use case, but it is more achievable than you may realize with good process design, engineered testing and deployment strategies, and a platform that isn’t a time suck.
More and more customers are organizing teams around a narrowly defined business subject matter or “domain” and broadly defined ownership of the service’s lifecycle (i.e. often all of it). Full(er) lifecycle teams necessitate and are in some ways made possible by automation, but things have gotten a bit out of hand in CI/CD. The increasing number of tools, high overhead and administration, and the challenge of maintaining consistency across versions, dependencies, and environments tends to distract from the fundamentals. Time is much better spent on improving test quality, right-sizing reliability, and enabling team members than cat-herding tools.
For most engineering teams in product or experience-driven companies, the day to day is balancing the feature velocity that makes users and the business happy with the reliability that keeps them happy; stability without velocity is inadequate, and velocity without stability is chaos. We see more customers every day adopting SRE principles to make sense of it all. Determining how much reliability is “enough” for the business value of the use case and carefully defining metrics is a powerful step down the road of reclaiming your team’s time (more on this in an upcoming post). Especially when it comes to CI/CD pipelines and automation, many teams are spending more time choosing, installing, administrating, and tweaking tools than moving design decisions upstream, improving processes, and enabling team members.
It's now common to see numerous proprietary and open-source tools spanning the SDLC, all imperfectly overlapping in their features and design goals. It’s easy to imagine how so many engineering teams arrived in this place of sprawl given the need for complex customization and the undeniable effect that labor availability has on an organization’s tool choices. Getting each of these tools to play its part in the orchestra is not a trivial effort, and the landscape of vendors and FOSS projects changes quickly. Many engineering teams feel they are under-realizing their potential as a result.
WHAT DO WE DO ABOUT IT
Amazon CodeCatalyst was announced by Werner Vogels at re:Invent and went to General Availability this year; it represents a new generation of unified CI/CD platforms that dramatically reduce undifferentiated heavy lifting, exposing only the necessary parts to engineering teams.
Consistent development environments:
Without managing any underlying mechanisms, CodeCatalyst lets you standardize development environments with rightsized resources, proper tooling, packages, dependencies, etc. The development environments use configuration blueprint YAMLs and are easily paused, stopped, and resumed for cost effectiveness. Development environments are also reportable and manageable in aggregate.
The integration with VS Code requires the AWS Toolkit and the same AWS Builder ID used throughout CodeCatalyst and CodeWhisperer:
CodeCatalyst puts the entire CI/CD process into a single “Workflow” that is accessible through a simple GUI and via editing the workflow YAML. These workflows contain all the necessary build, test, and deploy actions for the workload and are triggered by either git push or pull requests. Tests can be executed in parallel, across multiple environments, and in sequential order as needed. All the plumbing is handled and abstracted away from the user.
CodeCatalyst deploy actions natively support CDK and CloudFormation as well as direct deployment to ECS, Amplify, and S3. The flexibility here is key; it’s easy to customize workflows to watch a particular branch and execute a different deployment strategy or leverage a different AWS account.
It will make sense in a lot of projects to bring an existing GitHub repository, GitHub Actions, and/or Jira project to the party, and CodeCatalyst has integrations to all three. In other projects, it may make sense to start fresh and use CodeCatalyst’s native code repository and issue tracking features. We have found that especially for new builds in our Innovation Accelerator program, it’s hard to beat having those features out of the box without setup effort or license cost. However, code has gravity, and there are plenty of situations where connecting an existing repo and issue board is the easiest path.
Artifacts and build assets:
Artifacts in CodeCatalyst are exactly what they sound like and are handled without leaving the Workflow experience. An artifact is the output of one action that becomes the input for another action. For example, the below screenshot shows the build action creating an artifact that gets passed as the input to the testing and bootstrapping actions.
Security checks are easily integrated into the workflows as test actions. CodeCatalyst has native security action integrations with products like Mend SCA and can also integrate with GitHub actions. CodeCatalyst provides reporting out of the box that auto-discovers test reports based on naming conventions and standards.
EXAMPLE IN ACTION
BUILDSTR was recently working with a fast-growing customer to develop a platform that leverages Amazon IVS for livestreaming user-generated content, and this net new build put the power of CodeCatalyst on full display. It takes time and effort to modernize an existing CI/CD stack, especially in larger organizations, but starting from a blank canvas (or a blueprint) in CodeCatalyst means you have a code repository, automated build/test/deploy workflows, issue tracking, and reporting integrated and ready out of the box. This setup enabled BUILDSTR to deliver the MLP over 30% faster, complete with CI/CD workflows. Talk about fullstack…
As an engineering services firm, whether we’re building toward a customer business outcome or consulting the customer on a specific part of the tech stack, we are particularly sensitive to spending time wisely. Time spent tinkering with Jenkins is time that could be spent improving and automating tests. Time spent tinkering with deployment pipelines is time that could be spent improving deployment process. Time spent on undifferentiated heavy lifting is time that could be spent developing talent and enabling the team. CodeCatalyst is a powerful way to reclaim your team’s time.
Kick the tires and let us know what you think, or get in touch with a BUILDSTR expert for help!