GameZone/Conclusion

CS290F Fall 2006 - UCSB Computer Science - Thorsten von Eicken

Jump to: navigation, search

Home | Overview | Architecture | CriticalPath | Optimizations and Analysis | Performance on multiple servers | Caching | Conclusion


Experimental Setup

Displayed below is the image of our setup. Shown is one "httperf" load generator, one WebServer, 3 app servers and one database. This is the typical setup that we used where we had between 1 and 8 app servers. Most of the deployment was done through a Laptop running Ubuntu Linux (which rocks btw) and development was done on Windows InstaRails + RadRails. SVN was used as the version controlling system and Y! Shopping web services was used to mine data used in the experiment. Perl was used to scale the database. Capistrano was used to deploy the machines. Memcached was used to cache and MySQL5 was the database. Apache was the web server used and mongrel was the app server. Nearly all ruby/rails site development was done in 6 weeks and rest of Fall 2006 was used to learn the may facets of scaling of the website.

Image:Gz_setup.jpg

Lessons Learnt

  • Do what rails tell you do... really!

When we create tables in rails using migrations it automatically generated an autoincrement field 'id' which is the primary key. The data that we obtained from Y! Shopping API has a "catalogid" field as a key. We used that as our primary key. This caused us to not use effectively, the cool table walk Rails provides as a part of the DB abstraction. This made our table walks expensive in terms of DB access.

  • Log files are your friends...

For a long time, we did not realise the power of log files. It took a while for us to realise where all the logs were located, and towards the end, we were able to quickly read and identify the problem and resolve it.

  • Don't be a blog monkey

Blogs mislead us so many times in the process, we are inclined to believe that they did us more harm than good. They are OK as long as we understand the concept behind something and go behind the official documentation, we should be OK. Trying to follow the blogs verbatim is a sure way to crash your server

Possible enhancements and Source Code

If you are interested in continuing or taking a look under the hood of Gamezone, email us, and we can make it happen! We enjoyed making Gamezone, and I am sure you will enjoy working with it too. It can definitely use some work on efficient cache invalidation.

Personal tools