We are building the server side of some gaming platform where a great load of mobile devices (thousands, if not tens of thousands) connect to a server, send some small information each second (let's say about 500 byte) and receive some small response based on calculations (about 1Kb).

The data has a RDBMS back end (sql server for now, could be anything else).

We have implemented the prototype 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 and it should have maximum performance.

Many thanks!

  • If a full relational database isn't a necessity, some of the NoSQL solutions scale much bigger/easier/faster than standard relationsal databases.
  • Whatever you do, unless you like maintaining hardware, I suggest a cloud architecture
    • If you need full system control, look at Amazon EC2. If you do decide to move it in-house, this can easily be done with Eucalyptus (the APIs are identical).
    • If you want to build a bit higher up the application stack, you might look into Google App Engine; it has its own database restraints, so be aware.
  • Thanks for the great info - I some how doubt that cloud architecture would give me the best performance (the request will have to go to our server, then to the cloud server and back...), or maybe I'm missing something here? – user56594 Oct 10 '10 at 14:24
  • Why would it have to come to your server first? Why not direct it straight to the cloud front end? – pjz Oct 12 '10 at 0:48

Speaking structurally, that sort of application, frequent small transactions, is the kind of thing that hates latency like a hating thing. Wireless communication (you did say mobile!) is well known for introducing latency into environments, so that has to be planned for. G3/4 networks are much worse for this than 802.11a/b/g/n networks. The application needs to be designed in such a way that occasional 2, 3, or even 5 second round-trip-times do not cause the entire application to come to a screaming halt (okay, maybe some stutter for a 5 second RTT).

The specific ways of doing that are probably a better fit for asking on StackOverflow.

  • The latency part is less important for me - the important part is the server side which should be able to withstand such great load. – user56594 Oct 8 '10 at 23:30
  • @Roman I point out that StackOverflow and all of these sites run off of a single MS-SQL server for a database. It can handle the load. But still, others will have clarifying ideas (though perhaps not on Friday). – sysadmin1138 Oct 8 '10 at 23:33
  • That's interesting - that a single MSSQL will handle this. Thanks :) Maybe our way is ok :) didn't think about friday. will try again on monday. thanks – user56594 Oct 8 '10 at 23:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy