Until a few years ago, developers used desktops and laptops as their primary working platforms. Docking stations with dual-DVI monitor ports multiple USB ports for mice, keyboards, and other peripherals provided the human interface. From there, everything rocked and rolled happily. Even thought this was the default programming set up, there were exceptions at either end of the computing scale. At the high end were developers with unique needs that typically required huge amounts of data in memory that was rendered quickly to the screen via advanced graphics capabilities. These users were disproportionately from the oil and gas exploration, financial services, and security sectors. They used workstations as their primary device and ran with upwards of 96GB of internal RAM driving multiple multi-GB video cards.
At the other end of the spectrum were developers attacking problems that were amenable to being run on small, low-power servers. The first of these, that I became aware of, were startups with small teams of developers who pushed code and tested their wares on stacks of Apple Mac Minis. The Minis were sometimes configured as inexpensive clusters. At other times, they ran as individual components of the build cycle. One hosted the SCM, a second ran the build, a third ran the tests and generated reports. Improving capacity or performance cost $750 an instance, and because everything ran Mac OS X, installing and configuration was plug and play.
In addition to being inexpensive, the Mac Minis also had the benefit that they consumed very little energy, were completely silent, and never broke down. Those are compelling advantages.
Today, though, Mac Minis are fighting very capable competitors for the ultra-low end. In this week's features, you'll find Mike Riley's description and review of a low-cost, low-power server he's using as his development back -nd. His system runs a dual-core 1GHz ARM-based Tegra chip from Nvidia, had robust Nvidia graphics (HDMI), 1GB RAM, a 32GB SSD or a large capacity HDD, and all the USB and other ports you could possibly want. It costs less than $200 and runs Ubuntu Linux. Not bad, eh?
Mike uses it as the back-end for his experiment of coding in the post-PC era; namely it's the back-end that holds his code and build, tests, and reports on it when he saves his code. For this, it's an ideal one-man project server.
I've been running a similar experiments using an Acer Aspire Revo, which I bought from Amazon for $300. It's a somewhat more powerful machine, with a 1.8GHz dual-core Intel Atom chip, 2GB RAM, 250 GB SATA, HDMI, 6 ea. USB, Wifi, and GbE. It runs unmodified Windows 7. These energy-sipping boxes were intented to be used as media servers in the home, but they work fantastically well as build servers, especially on small to mid-sized projects. Check in code and they can build, test, and run reports in fact, your whole CI cycle with no difficulty. With an upgrade to 4GB available, you can even improve performance further by putting your tools and libraries on a RAM disk. (I'll cover that in a separate editorial.)
What you don't get is the immediate CI feedback. Even though Agile exponents suggest shortening the feedback loop on defect reporting to as little time as possible, I find that discovering an error after 5 minutes, rather than 2 minutes of build and test, does not materially (or at all) change my ability to dive back into the problem and fix it.
And if the box is not sufficiently powerful, adding a second one will certainly deliver the brawn I need inexpensively.
This model of low-cost, low-power devices is the way of the future. What I am describing here is not terribly different than building your own personal cloud from inexpensive machines. If you had chosen to keep the $300, you could have gotten this much from Rackspace's cloud server: 512MB RAM and 20GB HDD running Linux. That's not close to as much horsepower as my machine delivers However, it gives you two advantages: You have no additional ongoing costs (power consumption, parts replacement), and because it's off site, you have an instant off-site backup of your code base. Other companies, such as IntoVPS.com, give you about twice Rackspace's resources for the same price. Eventually, the pricing of cloud options will drop to close to the low-power, on-site devices, I expect.
The low-power, low-cost small machines are, I believe, going to start taking over. Sites are going to find them cheaper to run, powerful enough for non-database activities, and easy to manage. When Intel's MIC architecture ships this year (consisting of numerous, stripped down cores), these machines will be even more capable of handling higher throughput, and so will move to center stage as the principal replacement for the pizza box servers due to their more favorable pricing and lower power consumption. You owe it to yourself to grab one of these little systems and test it out. Just like Mike and I have, I expect you'll like what you find.