views:

37

answers:

1

Hi,

We are building the server side of some gaming platform where a great load of mobile devices (a.k.a - mobile phones for time being) connect to a server, send some small information each second (or even less) and receive some small response based on calculations.

The data has a DB back end (sql server for now).

We have implemented this using HTTP GET (with ASP.NET), but obviously it's not good or scalable for this need.

What would be the best approach for building this stack for best performance? (i.e - Windows/Linux, programming language, design patterns). It's very important that we could scale it up pretty easily.

Many thanks!

A: 

Since you are already on ASP.net and SQL Server, have you considered using Azure? Web apps using web roles and sql azure can be scaled quite easily. You can even shard your sql azure database and scale out a lot.

Also for really large scale alternative, you might want to choose a database format more native to cloud, like azure storage - this is more cost effective and really massively scalable.

If you are not keen on .net, then there are other alternatives, including appengine (java/python) or using Amazon EC2 (here you can use pretty much anything - object oriented dbs like mongodb could be a good data platform).

I dont know what problem you are facing with asp.net, but the application layer just needs to be scaled out to more servers, data layer is somewhat harder to scale out and that is where you can use the above options.

You could try a slightly different alternative, such as using a combination of rich interface (flash/silverlight) with web services which can reduce load on your application servers. However I do not know to what extent this will help you, never measured the difference myself.

In case the application is not browser based and it is a mobile app, then a webservice would be a good solution, the app can call the webserivce for reading/writing data. Then you can scale out the webservice to as many servers as you want depending on the requirements.

Roopesh Shenoy
Thanks for the response. The server side has no interface - we just need the best performance. that is - the answer to the client should be the quickest possible.
Roman
What do you mean the server side has no interface? is the client a mobile browser or a mobile app? If it is a mobile app then a web service is your best bet. There again I would recommend the above solutions (especially Azure based ones)
Roopesh Shenoy
The client is a mobile App which writes/reads information from the server.
Roman