Upgrading CloudStack Code Quality: CI and more
Ensuring code solvency is a key concern of any software development process. With multiple programmers working on the same codebase, breakages are bound to happen. In the agile methodology, spending hours on debugging broken code is time-consuming and expensive.
The adoption of Continuous Integration (CI) solved these problems to some degree. In a CI system, the source code undergoes multiple automated build cycles in a day. These are triggered based on schedules, and also on every new check-in. Coupling this with automated core and unit testing ensures that every build created is clean and functionally sound. This ensures that newer versions of software are ready to be delivered almost moment-to-moment.
In the last couple of years, with CI, the quality of the CloudStack code has improved a great deal. Open source tools like Jenkins, that help automate compilation, have enabled the CloudStack codebase to incorporate CI. This is especially necessary with the element of community code development that is fundamental to open-source projects.
But like every system, CI has its downsides. Continuous Integration implies that every small change in the repository triggers a build; if the build fails, the change is rejected. On one hand, this encourages contributors to check-in small chunks of code to avoid disruption and debugging, but on the other, it causes continuous consumption of resources as required by build cycles due to frequent check-ins. This is a costly affair aggravated many-a-times by unnecessary iterations.
Another pain-point is the requirement of continually writing automated tests to ensure code-coverage, without which CI will not be as effective. Test automation may not always keep up with the pace of development. For CI to work, development and testing should move at comparable speeds. The recent reports of performance and security glitches found in CloudStack APIs are cases in point. These glitches although minor, point towards the need for a collaborative effort from the community to come up with more effective solutions to complement CI and make it better.
Accelerite recently presented a paper on “Improve and Maintain CloudStack Quality beyond CI” at ApacheCon North America 2017. The paper explains how performance test automation of CloudStack APIs can be done using JMeter and Jenkins. It also initiates a discussion on making a concerted effort, as a community, to improve the methods of quality maintenance of this open source platform. Take a look at the paper here. Feel free to reach us at email@example.com if you have any queries.
On a related note, Accelerite has launched its enterprise hybrid cloud platform, Rovius Cloud, that lets you build an on-premises cloud in minutes using commodity hardware. Rovius Cloud upgrades with no downtime and lets you painlessly expand workloads to a public cloud. Learn more about Rovius Cloud here.