Historically we've had a quite basic server architecture. The list of applications we run kept on growing and more and more users started to make use of these applications, so we've recently had to take a step back and take some time to reflect on our architecture as rolling out an additional server and/or release applications doesn't need to be a huge task.
We quickly established that our goal was to bridge the gap between our actual coding efforts (web development team) and setup efforts (web IT team) via a rising development method; DevOps, which is a portmanteau of development and operations.
There are some really great tools out there, eg. Puppet and Opscode Chef. Without going into too much detail (don't hesitate to get in touch with us if you'd like to get juicy details :-)), we made the decision to go for Chef.
We benefited of some great collections of resources needed to automate our infrastructure, or "cookbooks" in the Chef terminology, that were written by other people in the Chef community. We used this opportunity to contribute back to the open-source community as well by releasing some of our "cookbooks".
While you're reading this, you're actually already doing so on a brand new server as after completion of the project some weeks ago we've been rolling out brand new production servers. Talk about practicing what we preach :-)