I love the feel of a new test server spinning up. What’s it going to be–a build server, web server, test environment, performance test client, source repository, file server? Windows or Linux? Ruby on Rails, Python, PHP, Java, .NET? Apache, NginX, Mongrel, Thin, Tomcat, JBoss, Node? So much potential, but so much work. Apps to install, networking, security, configuration, DNS. It’s a big task.
Using a VPS like Linode is great, but an Amazon EC2 is even better. It takes a bit more work and costs a bit more, but you can spin it down and fire it back up. For test environments it’s great. If you run 12 hours a day you save money. And you don’t have to pay for hardware. And you can have pre-configured images ready to run.
Set up one server for Jenkins, another for Git (http://gitlabhq.com/), more for Selenium Grid (or use Sauce Labs https://saucelabs.com/), and whatever you want for a production like test environment: web server, app server, db server, load balancer.
But you just got a call from Management. You can’t put all that out there on the public network. It’s not that we don’t trust you, but there are HACKERS out there who want to steal our buggy, bloated, spaghetti source code.
Fine. We’ll keep it internal. We’ll wait for a VM (or Hyper-V) to be recquisitioned. And then we’ll run our code there after ops approves it. (Yeah right, we’re going to install VMWare client and a few VMs on our laptop.
But there’s a better way. If you can get the hardware. You can install a private cloud. LIke Eucalyptus (http://www.eucalyptus.com). Just like AWS. Spin it up, shut it down. Create your images and test just like you would in the cloud. And you can move to the cloud without changing workflow when Management finally gives the OK.