When we implement a devops pipeline using a CI/CD tool such as jenkins, we typically integrate it such a way with the source management systems such as git, so that any new code checked into git triggers the pipeline workflow on the jenkins. And therefore for every new code chevked in, we have code integrations happening continuously, builds getting created continuously. We call these as continuous integration and continuous build processes. We similarly also have continuous testing process which again means that for every new code check in, we create the build, run the application and perform all tests on that application as necessary. But before you can do the application testing, you need to have the application up and running on some machines.
Which brings us to creating a new test server whenever such testing is required. Hence for continuous testing, we will have continuous provisioning of servers.
Now provisioning a server is not enough for running an application. For example, if you try to run a java application directly on just a fresh installation of ubuntu server, it wont work. Because a java application needs something more than the operating system to run. This middle level of software layer required by application software layer on top of the operating system layer is said to be the middleware. Different applications require different middlewares. For example java applications require JRE but .NET applications require .NET runtime environment.
Setting up of all these runtime environments, middleware, databases – are called as configuration of the operating system. When you automate that with tools and programming languages like puppet, we call that as configuration automation. When such configuration automation happens as part of continuous provisioning process as part of a CI/CD pipeline, it is referred to as Continuous Configuration Automation.