I am working on a smartphone application that will require a backend web service - but I have absolutely clueless to how much it will cost.
Web Service will handle:
- login of users
- cataloging of our user base
- holding minimal profile information for users (the only binary data is a display picture which will be < 20k each)
- performing some very minor calculation/algorithm before return results
- All the above will be communicated to server from a smartphone (iPhone/BlackBerry/Android)
Bandwidth Requirements:
- We want to handle up to 10k users throughout the day.
- I predict 10k * 50 HTTP requests a day = 500,000 requests a day * 30 = 15 million requests a month
Space Requirements:
- Data will be in SQL database.
- I predict 1MB/user * 10k = 10GB + overhead. In other words - space is not a big issue.
Software Requirements: (unless someone knows an alternative)
- Windows Server 2008 + IIS
- MSFT SQL Server
Note: This is 100% new to me, so please hit me with all you got. Do I need Windows Server or are there alternative? Is it better to get multiple cheap servers to distribute load? Will Amazon S3 work for me? How about Windows Azure?
EDIT note: At this point in time - I'm am more concerned with COST and how that cost will scale. So if you provide a service recommendation, could you help ballpark to how much these requirements would cost?
Thank you!!
that's a really open ended question. ;-)
It depends on a lot of things. Here is my take on how to approach problems like this:
1) Architecture - A lot of the scaling problems that you will run into are going to be defined by how you design the application now. Knowing the strengths and weaknesses of the language that you are writing in, the framework that you are using and the underlying OS/Servers that you are hosting on is essential.
2) How long does an average request take to complete with no load? What's your SLA on how long the requests should take?
3) How does the application handle load? At what point (request per second per server) do you see degradation?
4) Have you segmented your application into layers which can scale separately from each other? (ie, do you have a DB layer, a App Server layer and a storage layer?)
5) What's your budget?
Based on what you have posted, you are looking at about 6 requests per second. I'd start with a single app box, a single DB box and a single storage box if you need storage. Throw load at it, see what breaks. Slowly increase the # of users, and you'll see parts of the code that you'll want to optimize, or you can add more boxes where ever the app is experiencing problems.
Since this is your first foray, I'd almost suggest going with a fully managed hosting service - they'll be able to help out with the backend scaling.
Good luck!
Azure would handle this. See Windows Azure for details and free trial. I don't have an Iphone version but here is an article about how to build an app like this for windows phone 7
You could try a virtual server with Amazon (or any other cloud provider). You can start with small instance and then scale up as needed. The cost is based on instance size and bandwidth, so it is relatively easy to estimate. Windows license cost is included. I'm not sure about MSSQL, but there may be pre-built virtual appliances with it too in that case you will not need to purchase full license and will just pay per use. Hope this helps.