A few ideas on how large exam results can be announced online without servers freezing/hanging.
1) Release exam results through bulk email and bulk SMS a day before the actual result day. This way candidates get to know their results and do not all have to access the same website at the same time. This requires that students are told in the prospectus and during the exam process that results will be available through email/SMS and the website. Bulk email and bulk SMS are consumer applications today and are available off-the-shelf for use.
2) Operationally reduce load on the server by announcing roll numbers 1 to 100,000 on one URL, 100,001 to 200,000 on a second URL and so on. Also within the roll numbers Day 1 can have results only for 0 - 25,000 and Day 2 for 25001 onwards etc. Or it could be announced zone wise over 4 - 5 days. This will work provided the results have already been announced over email and SMS so students are not anxious to check the website but would like to see their scores on the website too.
3) If operationally easing load is not an option, use the cloud (Amazon/Google) . The key challenge here is of concurrency. IT Infrastructure has to be setup to handle upto 200,000+ requests every hour. But then this IT Infra is required only for a few days. The ideal solution is to deploy this on a 15 - 20 server configuration on the cloud where the servers are rented for a few days and through a load balancer can handle the load
4) The software architecture has to be built for scale. (refer http://highscalability.com/). The usual culprit is the RDBMS. I am guessing that in this case, they had scores in a database and each time a query ran from the webpage to the RDMBS, did a select and fetched and presented it. As most high scale apps will tell you, the RDBMS is the enemy of scale and concurrency. For this kind of use it is better to publish all the results into an XML or a flat file and to fetch the file and display it because the file system is always faster than the RDMBS. For instance each ID's results are stored in a file (file name = ID.html) in a folder on the server. The filesystem searches for the file and displays it as-is inside the browser. Will scale without a glitch.
5) For more ideas, refer http://highscalability.com/ on handling scale. Gives examples of Facebook, Youtube, salesforce who manage truly humongous concurrency.
No comments:
Post a Comment