INTRODUCTION
The CI and CD in CI/CD stands for both Continuous Integration and Continuous Delivery (or Continuous Deployment). The aim of the processes within CI/CD is to improve the efficiency, quality, and speed of software delivery to both test and to production. It is worth understanding first what we mean by the terms described below.
1). CONTINUOUS INTEGRATION
Continuous Integration (CI) is a development process where developers frequently integrate code changes into a version control system, such as Git, and in response to those code changes, automated build and test processes are triggered. These verification methods provide quick feedback on the quality of the code changes and highlight any integrations issues.
2). CONTINUOUS DELIVERY
Continuous Delivery (CD) follows Continuous Integration, deploying the code changes to a staging or pre-production environment after passing the Continuous Integration tests. Once deployed, other types of testing such as automated functional testing and performance test can be performed on the deployed code to assess its suitability for promoting to production with reduced manual intervention.
3). CONTINUOUS DEPLOYMENT
Continuous Deployment takes the concept of Continuous Delivery a step further by automatically deploying tested and verified code changes straight to production after successful testing in the staging or pre-production environment. A deployment to production is triggered after successful testing in the staging environment, and this entire deployment process is automated, meaning there is less chance of human error in the deployment process.
PERFORMANCE TESTING IN CI/CD
Alongside other forms of testing, performance testing can be utilised within CI/CD cycles to provide performance validation of code changes.
This has many advantages, for example the early detection of issues in the development lifecycle and early feedback on the performance of committed code changes, meaning faster time to production. Identifying issues at an early stage is more cost-effective, and stops the issue becomings embedded in the code, where it could become more costly to fix at a later date.
MEASURING PERFORMANCE AND ALERTING PERFORMANCE ISSUES IN CI/CD
In conjunction with running performance tests as part of the CI/CD, performance monitoring tools should be employed for data collection and analysis during the testing in order to ascertain the suitability of the code changes and deployed application in terms of performance. The performance monitoring tool should also send alerts in order to indicate in a timely fashion if performance of the deployed application strays beyond a define threshold.
CONCLUSIONS
As indicated previously, conducting performance testing early in the development cycle is advantageous to allow early detection and resolution of potential performance issues. Performing performance tests as part of the CI/CD pipeline, alongside automated functional test, provides an automated validation of software quality, although we should still perform traditional performance testing and monitor performance in production in order to identify potential issues which may not be covered by the performance tests scripts executed as part of CI/CD.