In a traditional product-delivery pipeline, it is customary to execute integration and end-to-end test suites prior to performing a production deployment. This is a perfectly laudable practice, and one that we wish to retain for cloud-native systems. However, the traditional approach to accomplishing this testing effort is at odds with the practice of decoupling deployment from release and driving down batch sizes to minimize deployment risk and accelerate innovation. There is a fundamental impedance mismatch between traditional integration and end-to-end testing practices and the modern continuous deployment pipeline that produces an impenetrable bottleneck.
The traditional approach necessitates a large and expensive effort to coordinate, set up, and maintain a comprehensive testing environment with the correct versions of all the various system components...