DevOps at scale requires predictability and consistency. Your application code is versioned. Infrastructure-as-code defines your environments. But what about the process?
On Tuesday I participated in an online panel on the subject of Process-as-Code, as part of Continuous Discussions (#c9d9), a series of community panels about Agile, Continuous Delivery and DevOps.
Watch a recording of the panel:
Continuous Discussions is a community initiative by Electric Cloud, which powers Continuous Delivery at businesses like SpaceX, Cisco, GE and E*TRADE by automating their build, test and deployment processes.
Hej, Andreas & Michael here!
We launched the cloudonaut blog in 2015. Since then, we have published 325 articles: small tips and tricks, best practices, and service reviews. We enjoy writing about all things AWS a lot.
Do you like our blog posts and podcast episodes? Have you learned something new? Consider supporting us create in-depth and independent AWS content. Please help us with a monthly or one-time payment through GitHub Sponsors.Start supporting us today!
Below are a few insights from my contribution to the panel:
Let me use Jenkins and a software delivery pipeline as an example:
- At the beginning, only the source code was version controlled. Jenkins contained all the information that was needed to build, test and deploy the application.
- Then we moved the build, test, and deploy scripts into version control and Jenkins only contained the information about what scripts to execute in which order.
- Now we put the whole pipeline under version control, and Jenkins only knows where to get the process configuration from to execute it.
So process as code is two things: a description of the process and a runtime environment that can execute that description.
- Idempotent process steps that can run asynchronously and can be retried.
- Having a descriptive language for your process and let an execution engine figures out how to execute the process description.
- We use a lot of Amazon tooling: CloudFormation, Code Pipeline, and Lambda.