The ultimate goal of microservices development is to achieve daily releases to production. The only way to accomplish this is to completely eliminate all manual steps and automate the process of delivering individual microservices. This can be done using a series of quality gates. The gates must guarantee the quality of the microservice itself and ensure that new versions of the microservice don’t not break the system. If any problems are detected, the delivery process must rollback the changes, leaving the system in a working state.
The process of automated delivery is called the “CI/CD Pipeline”.
The simple CI/CD pipeline that is shown in the picture above consists of 4 stages:
If you have reliable tests with sufficient coverage, then you can probably trust them enough to be able to run the entire CI/CD pipeline in a fully automated fashion. But what if you don’t have automated tests? Or you simply can’t trust the well-being of your system and, potentially, the success of your entire company to some mere tests?
Interesting enough, most of my enterprise clients fall right into that category. Their systems are big, and their automated tests are quite spotty. Some unit tests may exist, but system-level tests are usually way behind. If you are also finding yourself in such a situation, how should you modify your CI/CD pipeline to throw-in some traditional manual testing?
When manual testing is a must, a new QA environment and an associated QA deployment stage should be added between the Stage and Production deployment stages. It is not a good idea to perform manual testing in the Stage environment, because the environment itself can be quite chaotic, and you don’t know what exactly you’re actually testing. Any minute developers can push new changes, which can break already tested parts of the system. Testing in production is also not a good idea, because the whole point of testing is to deliver a quality product to customers.
Here’s how to execute manual verification in a CI/CD pipeline:
To read more about reactive baseline management, please have a look at the post that dedicated to this topic.
Sergey Seroukhov, Enterprise Innovation Consulting