While the concept of Continuous Delivery is relatively straight forward, the actual delivery of it is by no means easy. It requires a total culture shift in an organization around how they prototype, develop, test and deliver software.
It means turning many processes on their head and undoing years of carefully slowing things down to ensure they are done correctly. In order to implement it, you must look at:
and in that order. Implementing the technology first will simply cause you untold headaches into the future.
The people in your software development lifecycle are the key to a successful implementation of continuous delivery. They must adapt an agile mind set and trust that they and their colleagues are all aiming for the same quality result.
They must be willing to raise problems as they occur and a key to this mind set is to plug holes in the process as they are found as against postponing until a later time.
A key to agility is an ability to automate building and testing wherever possible so that a continuous testing and integration process is permanently running for a given application under development.
The processes used for continuous delivery must be automated wherever possible.
Manual tasks are prone to failure in that they are not completed or are not completed successfully and can thus result in false positives for tests that look like they have completed successfully but in fact they have not. This can result in bad product being delivered to customers as part of the continuous delivery process.
Failure under these circumstances is actually a better result as it flags a problem and ensures that bad product is not delivered to customers.
Technology is represented by the tools that people use to implement and automate the build and testing processes that ultimately deliver quality software products.
If the people or the processes are not 100% correct, the technology will do what it always does and ensure that bad processes are just implemented quicker and a deeper hole is dug at speed.
Technology must always be there in support of the people and processes and adapt to how the people and processes must work….not the other way around.
Service Virtualization is a key tool in that kit bag of technology to assist in the implementation of a continuous delivery cycle.
To learn more about our own Service Virtualization and Testing solutions, visit our services page.