Scenario: I am about to launch a cloud software in a couple months. This will be a SaaS solution for multiple clients. The software deals with Healthcare o Encryption at rest is a requirement. It is written in .Net and preferred database is Sql Server.
Each client will need a minimum of 10Gb of database storage and 100 Gb of File storage. I am looking at cloud offerings that can easily scale from 1 client to 10,000 clients. Now 10,000 clients equate to 100TB of database storage and 1PB of File storage.
The three providers I am considering are AWS, Azure and Rackspace(preferred because of support).
Setup: Option 1: Have a cloud server that can be scaled up as clients increase. But can a cloud server scale upto 100TB of storage to accommodate for database running on it? More so, Is it a good idea to have a VM holding data for all the clients. If not, how can I spread data across multiple machines yet have the web service easily identify which database to query for a particular client?
Option 2: Setup an environment for each client. I would love to go this way as it avoids single point of failure. Azure webites/Rackspace CloudSites kind of setup. The concern here though is, How would I encrypt database? Sql Server does offer TDE but only in Enterprise edition. Also how can I automate upgrades in such a scenario. An upgrade could mean, new code and/or database schema changes.
Option 3: Any other option that you might think would be suitable for such scenario.