I've discovered through a bunch of similar lessons that buying really good hardware and hosting yourself sometimes requires the least amount of your time of any option. It provides a stable base on which to build additional redundancy such as shared network storage or database replication if you wish (and this is generally how expensive "enterprise" solutions work).
In practice and on cheap hardware, networked storage is flakey and has umpteen failure modes. Database replication is even worse. Both require babysitting by developers or sysadmins and hours to repair when it goes wrong. What is the point outsourcing hardware and scaling to EC2 if you end up with even more work to monitor and keep fixing the infrastructure you build on top?
In practice and on cheap hardware, networked storage is flakey and has umpteen failure modes. Database replication is even worse. Both require babysitting by developers or sysadmins and hours to repair when it goes wrong. What is the point outsourcing hardware and scaling to EC2 if you end up with even more work to monitor and keep fixing the infrastructure you build on top?