Spotlight Viggle : Scaling Service Oriented Architectures with Node.js

Viggle

OmniTI had been working with a company forging a new path in the social TV space that was looking for scalability experts to help engineer their system from scratch. With multi-million app downloads, Viggle is a free, second screen application for mobile devices that rewards its members for watching their favorite TV shows. Viggleʼs technology samples the audio from a userʼs TV and checks them into whatever theyʼre watching. Viggle also provides an interactive layer, allowing members to play real-time games related to the show they are currently watching; and a social aspect, allowing members to interact and chat with their Facebook friends, and other Viggle members. From the inception of the concept, Viggle knew they had very specific architectural needs in order to handle potential traffic patterns and allow the business to run smoothly. The system had to be highly available, highly scalable, and able to handle event-based traffic spikes that temporarily overwhelmed a backend servicesʼ processing ability. Services had to be able to degrade cleanly, so any particular service failure or delay wouldnʼt harm other portions of the system, and would not disrupt the user experience. In short, Viggle had the need for a flexible and resilient system that could grow quickly but maintain performance over time.

Benefits

Backed by a Riak cluster, the architecture provides a durable system that scales with Viggleʼs growth quickly and easily. Custom replication was built on top of the highly performant flow to stream data from Riak into a PostgreSQL database to allow for analytics and reporting in a more query-able RDBS system.

Approach

OmniTI was asked to design the architecture and to assist in the implementation of several services, including the public facing API that tied the backend services together. We decided to develop this solution, capable of handling more than 100,000 requests/second, in node.js because of its non-blocking I/O model and inherent performance advantages over other web technologies, specifically for API-driven services.

It is rare to have a development resource you can point at a problem and never have to think about again. Omni just does the right thing. . . all the time. . . also: node.js!

~ Riley Berton, Senior Director of Platform Engineering, Viggle.