Friday, August 31, 2007

Virtual Appliances: only run them if you trust them!

I forgot to add an important warning to yesterday's post about Virtual Applicances!

When you start up a virtual appliance it will probably try to get an IP address on your private network via DHCP. If the Virtual Appliance contains malicious code, it could then do all kinds of nasty things.

The bottom line: as with any software that you install behind your firewall, don't run a virtual appliance unless you trust the source you got it from.

Thursday, August 30, 2007

The Virtual Appliance: a simple way to install complex software

This morning I saw an email asking for suggestions for a cheap or low-cost web content management system. There was one other important requirement - the software would be installed, managed and used by "semi-technical people".

A couple of people suggested drupal. I've heard good things about drupal, so I took a quick look at the website. Here's a sample of what hits you on the installation page:

Drupal requires a web server, PHP4 (4.3.3 or greater) or PHP5 (http://www.php.net/) and either MySQL (http://www.mysql.com/) or PostgreSQL (http://www.postgresql.org/).

That's hardly ideal for semi-technical people.

Once drupal is installed, however, it seems easy to configure and use. What my friend's users need is a simple way to install the application in the first place.

The best approach I can think of is to install a Virtual Appliance.

A Virtual Appliance is a virtual machine image which you can run using VMware, Xen or Parallels. It contains a complete application, pre-configured and ready to run.

Using a Virtual Appliance with the free VMware player takes just 5 steps:
  1. Download VMware Player.
  2. Install it. (on Windows, that's a one-click operation).
  3. Download and unzip a suitable Virtual Appliance.
  4. Start the Player and
  5. Start the Appliance.
Now your chosen application is up and ready for use.

I tried out the drupal appliance from JumpBox. It took me about 5 minutes to install and start using it. (I had a bit of a head-start because I already had VMware player installed).

If you know someone who wants user-friendly software but who lacks the technical expertise to install it, look and see if you can find a virtual appliance to suit.

More and more software (open source and commercial) is being offered this way, and it's also a great way to distribute software that you've written or configured.

Monday, August 27, 2007

Automated end-to-end testing made easier with VMWare Server

Automated testing is one of the most important practices in Agile Development. I like to have a hierarchy of automated tests that cover the whole system as deployed and all of its component parts, right down to unit tests that tell me whether each class is fulfilling its contract.


Starting with end-to-end tests

There's a lot published about unit testing and acceptance tests, but much less about end-to-end testing. That's disappointing, given that end-to-end tests are arguably the first thing you should work on when developing a new application.

The need for a clean deployment environment

End-to-end testing gives you a chance to check out your deployment process and verify that the deployed application works in the target environment. Sometimes, though, a badly planned testing process can lull you into a false sense of security; most of us have encountered applications that work well in their test environment but fail when deployed to a clean machine.

It usually takes too much time and effort to create a fresh testing environment from scratch every time you want to do an end-to-end test. There is a simple fast alternative using VMWare Server.

VMware server to the rescue

VMware server is a free (as in beer) version of VMware's virtualisation software. I run it on an Ubuntu server, and use it to create a clean environment for applications that I'm developing. It has a snapshot capability that allows me to capture a clean "before deployment" image, and restore that in a few seconds prior to running a test. Best of all, there's an external scripting interface which allows you to automate the process.

You can download VMware Server for free (after registration). I also use their commercial VMware workstation product; the two play well together, as you'd expect, but you can do everything you need for end-to-end testing with the free product.