Abstract:
improvement in productivity and quality of systems. In terms of quality, it defines new process and standards requirement where Continuous Integration (CI) principles have filled the gap while improving the quality of system continuously and Continuous Delivery (CD) approach has made faster delivery of software. Continuous Deployment extends the CD features and delivers the software to the production through automation by completing the pipeline. Ultimately, the Continuous Integration Continuous Delivery (CICD) pipeline approach has increased the efficiency and the productivity of agile software projects. In agile, new features are introduced to system in each sprint delivery, and although it is well developed, the delivery failures are inevitable due to performance issues. By considering delivery timeline, moving for system scaling is common solution in such situations. But, how much system should be scaled? System scale requires current system benchmark status, and expected system status. Benchmarking the production is a critical task, as it may interrupt the live system, which may causes system unstable. New software version should go through a load test, to measure expected system status. The traditional load test methods are unable to identify production performance behavior due to simulated traffic patterns are highly deviated from production. To overcome those issues, this approach has extended CICD pipeline to having three phase automations process named benchmark, load test and scaling. It minimizes the system interruption by using test bench approach when system benchmarking and it uses the production traffic for load testing which gives more accurate results. Once benchmark and load test phases completed, system scaling can be evaluated. Test bench setup was done on high capacity computer using Ansible automation which provisioned local virtual instances for application servers, Nagios service and load balancing. A simple XML based application which processes cached data by reading files is used to reduce the complexity of test bench approach. Initially, the pipeline was developed using Jenkins CI server, Git repository and Nexus repository with Ansible automation. Then GoReplay is used for traffic duplication from production to test bench environment. Nagios monitoring is used to analyze the system behavior in each phase and the result of test bench has proven that scaling is capable to handle the same load while changing the application software, but it doesn’t optimize response time of application at significant level and it helps to reduce the risk of application deployment by integrating this three phase approach as CICD automation extended feature. Thereby the research provides effective way to manage Agile based CICD projects