I have commented previously in this column that I believe the best use case for the cloud is software development and, especially, testing. Clouds are ideal for running testing storms, in which every test is run on software on every platform.
This process, which used to take days and tie up large numbers of resources, can now be exported to clouds, where virtual machines are rented by the hour. There, they are spun up, the software and the tests are loaded and run, and the results are shipped back to the in-house servers, where they are analyzed to make a pass/fail determination.
This use case for the cloud has become even more popular as companies begin experimenting with the core concept behind continuous delivery (see the book by the same name from Jez Humble and David Farley). That concept suggests that the continuous integration process should be expanded to perform a complete build for all platforms, to deploy the app on all platforms and run all tests, and then to do all the final packaging of the app and test that too. In a later column, I’ll discuss this approach and its implications in more detail.
But there is another aspect of off-site systems that is steadily garnering acceptance: development that’s hosted off-site, essentially as a SaaS solution. A typical deployment of this approach might include defect tracking, collaboration tools and a CI server. Some options add SCM as well. This arrangement, in which the key development data repositories are off-site, will be familiar to developers who contribute to open-source projects.
The reasons this arrangement is beginning to look appealing to IT organizations are ease of administration, cost and security. Let’s look at these in greater depth.
Ease of administration goes hand-in-hand with cost. While administrators and system managers might be experienced in many areas, they’re unlikely to be experts in the details of defect-tracking systems, developer collaboration tools, CI servers, SCM or wikis. (Arguably, wikis might be familiar.) The options, then, are to hire and train admins and figure out how to get 24×7 coverage, or to have someone else handle it.
The latter course makes even more sense if the development teams are widely distributed. For example, how are you going to handle the CI server going down at 4 a.m. in the U.S. when your team in Asia is trying to validate the code? The Asian team is unlikely to find that waking an American administrator, waiting for him or her to get ready, dial in, diagnose, and fix the problem is a viable solution.
In a hosted environment, the host’s staff can respond right away with full knowledge of what the error codes and symptoms mean. The cost for these services is surprisingly low: around $300 per year per developer. When assessing this figure, it’s important to add in the hardware cost of and the (generally) substantial expandability of hosts.