Voxer

Voxer

A social networking application that turns your phone into a walkie-talkie and an all-in-one messenger, Voxer Walkie Talkie soared in the charts in a matter of weeks to become the most popular app in its category on both the Apple App Store™ and the Android Market™. Voxer chats include live voice, messaged voice, text, pictures, and location.

Environment

  • OS and virtual hardware: 50 Joyent SmartOS instances
  • Applications: Riak (data store) and Node.js (application server)

The Challenge

When Voxer's user base grew 10X over the course of a month, their Linux-based storage system could not handle the load. At peak times, users had to wait for their messages to be downloaded, instead of always streaming them live. Voxer CTO Matt Ranney wanted to improve performance, but he felt that he could not easily do this with standard cloud computing offerings or managed hardware hosting without visibility into the disk I/O and network I/O activities of these busy systems. Voxer's back-end software is written entirely in Node.js. Node, like other dynamic programming environment, lacked good tools for performance profiling and debugging.  "We are starting to move 500 megabits per second per machine in our cluster," says Ranney. "At that speed, all packet capture tools fall over."

Ranney needed:

  • Reduced wait times for users as the application read from the Riak database and streamed to the handset  stored messaged
  • Complete transparency into all critical processes in the Voxer architecture and application stack, from low-level CPU and disk processes to database queries to web application servers and HTTP operations.

The Solution

Ranney elected to move Voxer’s core applications from bare-metal running in a managed hosting environment to the Joyent Cloud. As part of the move, Voxer transitioned its application stack off of the Linux operating system and on to Joyent SmartOS, a high-availability carrier grade cloud operating system.

In the Joyent Cloud, Ranney was able to:

  • Use DTrace to achieve CPU profiling for Node.js applications and view the entire application stack to spot “hot” functions. This afforded Voxer critical insights on where the CPU was allocating compute resources and, by extension, what parts of an application stack were impacting performance and user experience..
  • Gain granular insights into lower-level processes that greatly impact application performance such as disk I/O, file system latency, and network I/O. Because Voxer could run DTrace and Joyent Cloud Analytics through SmartOS on Joyent Cloud, Ranney could glean extremely detailed application activity information and gain transparency into how much compute resources each process was using.
  • Save money by optimizing application performance. Voxer anticipates that running cleaner code and more efficient applications will enable better utilization per virtual environment and lower costs.