We live in an age where the term “agile” is applicable in Hardware / Infrastructure [Cloud], Software [Container], and processes [CI/CD]. The whole idea of containerization is changing the way we imagine the deployment and has paved the new paradigm of serverless architectures, micro-services (in fact even nano services).
A Continuous Integration pipeline is as important as the nervous system of a human body as it coordinates and signals to the entire system. Cloud computing moved IT cost and planning from traditional vendor influenced, upfront hardware-based approach to an elastic consumption-based approach. However the expectations and service offerings rose even further with Integration Pipeline as a Service [CodePipeline from AWS], Build as a Service [CodeBuild from AWS] and so on.
All of these lead to the rethinking the concept of what being ‘serverless’ meant. ThroughWorks defines it as “A serverless architecture approach replacing long-running virtual machines with ephemeral compute power that comes into existence on request and disappears immediately after use.“
It seems obvious to identify AWS Lambda (or Azure functions) and API Gateway under serverless category, however AWS CodeBuild operates in the same context: No upfront provisioning of resources, disposal of the resources consumed after the execution and configuration as code [buildspec.yml]. AWS CodeBuild is so versatile a container can be built on the fly Serverless-ly and this post details the approach of deploying a container from Code to Production aka Continuous Integration w/ Docker.
A static site generator framework – Pelican which runs on Python is used for this demonstration. The activity begins by making the changes and committing the code to the repository and initiating the release process in the code pipeline.
This is simple demo shows how the build and release process can be automated without provisioning a single server for the purpose, removing the additional overhead of management, maintenance and licensing. Like all other AWS services — Code Build, Code Pipeline operate on a usage basis without having to signing up for long-term commitment. The code pipeline is flexible to take advantage of the other AWS services like Lambda SNS to easily introduce, approve or reject steps with minimal changes and support implementation of ChatOps, notifications and integration with ITSM and Change Management Systems.