I'm working with two Windows Server 2008 servers (one for development, one for production) which host several web applications. Some of these applications run on Tomcat with an Oracle database, others are ASP.NET MVC applications using SQL Server, and there is some plain ASP stuff too.
I want to compartmentalize these products because we have already faced some hairy situations where a fault or configuration in one product brings down another.
Most virtualisation layouts I've seen are horizontal in design - one VM for a web server, one for a database and other VMs for whatever infrastructure is called for.
Given that a horizontal design wouldn't compartmentalize individual products I am considering a vertical design where we have one VM per product and the entire stack for that product is within the VM (except perhaps the database).
Do you think this is a reasonable solution, and if not, what would you recommend given that purchasing additional servers is not an option?