Tech web sites are abuzz today with Facebook's announcement of a new messaging system designed to seamlessly incorporate email, messages, chat and SMS. It turns out that the new messaging product required a new back-end as well. That provided the Facebook Engineering team with an opportunity to redesign its messaging infrastructure from the ground up.
The process started with an analysis of existing usage patters, according to the Facebook Engineering blog. The legacy Messages infrastructure supported over 350 million users sending over 15 billion person-to-person messages per month, while the Facebook chat service has 300 million users sending more than 120 billion messages per month. Messaging has been growing at a far faster rate than the Facebook user base.
"When we started investigating a replacement for the existing Messages infrastructure, we wanted to take an objective approach to storage for these two usage patterns," writes Kannan Muthukkaruppan. "In 2008 we open-sourced Cassandra, an eventual-consistency key-value store that was already in production serving traffic for Inbox Search. Our Operations and Databases teams have extensive knowledge in managing and running MySQL, so switching off of either technology was a serious concern. We either had to move away from our investment in Cassandra or train our Operations teams to support a new, large system.
"We spent a few weeks setting up a test framework to evaluate clusters of MySQL, Apache Cassandra, Apache HBase, and a couple of other systems," he continues. "We ultimately chose HBase."
Read Kannan's post, The Underlying Technology of Messages, for more details about the new infrastructure and how it is being deployed.