Great article, deployments can too easily go wrong without automation!

If you're using a language that doesn't require a build (python, PHP, node.js), you can take things one step further and make each server a repository (or working copy in SVN's case) which pulls code directly from source control.

This adds a bit more speed and efficiency as only the changed code gets transferred. It also gives you easy rollback facilities.