← Back to Case Studies Home

Case Study: Pass The Notes Inc.

Pass the notes was envisaged as a portal to bring together students and teachers onto a collaborative platform to exchange views and discuss content related to various subjects that go beyond a regular classroom discussion.

In order to gain traction with various schools, the client partnered with school book publishers to enable the publisher's content to be easily annotated, discussed and commented on by different classes.

This brought in a large number of schools and along with them a large user base that was regularly using the application almost simultaneously at the same time which is during school hours.

The collaboration platform would apart from recording comments and messages between the users also have to serve up videos and documents. The latter could be annotated and the comments preserved and segregated for different discussions.

There was also a large number of background processes for data cleanup, download requests that were to be processed without interrupting the user activities.

Ensure that students and teachers are able to access the website and leave comments, chat, or message with instant response, notifications and alerts

Ensure that annotations are preserved and not over-written or cross-published between user groups accessing the same reading material

Ensure background processes that are resource intensive doesn't slow down the user response for the main website

Ensure fast delivery of video and static content


To meet the above challenges and to deliver the ideal solution for the client we looked to the solutions offered by clustering and third party CDNs (Content Delivery Networks).

The first task was to identify the resource intensive processes and identify how the load could be split between the various activities. User communication and notifications were identified as the main activity. This was followed by background requests for downloads and bulk deletion.

The next task was to identify how the processes could be optimized to provide the best user experience. It was necessary that third party solutions and multiple servers would have to be in place to resolve this requirement. The solution was as follows. The main application server would need to be clustered and managed by a load balancer to handle the peak time requests during school hours. 8 application servers were setup to handle the peak load managed by a load balancer. Session management was implemented through the database to ensure there is no loss of user session by switching servers. There would be a standalone database server (with replication implemented using a master-slave methodology) to handle all database requests. Background processes would be handled on a stand-alone server which would be isolated from the application servers so as not to interrupt user activities. All videos would be stored on the Vidly CDN and Crocodoc was used for holding documents and annotation using their standard tool.

By separating dynamic and static content delivery and multiple servers, the main application server was able to respond to requests much faster and delivery notifications and alerts instantly and in real-time. Static content delivery from the CDN ensured that pages and content would load much faster for the end user.

Having a separate server handle the background requests ensured that there were lesser interruptions in these processes as well as reduced load on the main application server serving up dynamic content

This infrastructure has ensured that the website is now able to handle over 15000 simultaneous users successfully and provide unique collaboration platform for students and teachers alike

Programming Language




Rack-space cloud server (load balancer with 8 server)




MySQL 5.1


CentOS Linux

Front end

HTML5, CSS3, jQuery 1.7, jQuery UI 1.8

Video Streaming


Document Viewer


Background Process


Document Storage

Dropbox, Google Drive


LTI tool integration (Learning Tool Interoperability)

On going work - More Repo Integration (AWS, Box, Dropbox)