Connecting linkedin


Facebook Open Sources Thrift Protocol … Again

21/02/2014 by


After more than six years of internal development of its branch of the cross-language framework that powers its internal services, Facebook has released that branch to open source and hopes to work with the Apache Thrift community to incorporate the work.

Facebook today “re-open-sourced” the Thrift binary communication protocol with its own internal branch of Thrift, which is designed to provide a new set of core features and crank up performance.

Facebook Software Engineer Dave Watson explains that the company always wants to choose the best tools and implementations for its backend services, regardless of programming language. By using programming languages on a case-by-case basis, it can optimize performance, ease and speed of development, leverage existing libraries and so on.

“To support this practice, in 2006 we created Thrift, a cross-language framework for handling RPC [remote procedure calls], including serialization/de-serialization, protocol transport and server creation,” Watson says. “Since then, usage of Thrift at Facebook has continued to grow. Today, it powers more than 100 services used in production, most of which are written in C++, Java, PHP or Python.”

After a year of internal use, Facebook released Thrift to the open source community, where development of Apache Thrift continues. But, as Watson notes, while Apache Thrift gained wide use outside Facebook, IT organizations using it ran into performance concerns and issues separating the serialization and transport logic.

Inside Facebook, IT was running into similar issues as it gained experience running Thrift infrastructure. Watson says the team realized that Thrift was missing a core set of features, and that a lot more could be done for performance.

“For example, one issue we ran into was that internal service owners were constantly reinventing the same features again and again—such as transport compression, authentication and counters — to track the health of their servers. Engineers were also spending a lot of time trying to eke more performance from their services.”

“When Thrift was originally conceived, most services were relatively straightforward in design,” Watson adds. “A Web server would make a Thrift request to some back-end service, and the service would respond. But as Facebook grew, so did the complexity of the services. Making a Thrift request was no longer so simple. Not only did we have tiers of services (services calling other services), but we also started seeing unique future demands for each service, such as the various compression or trace/debug needs.

This article has been extracted from, please click on this link to read the article in full…_Again?taxonomyId=3020

Montash is a multi-award winning , global IT recruitment firm. Specialising in permanent and contract positions across mid-senior appointments across a wide range of industry sectors and IT functions including:

ERP, BI & Data, Information Security, IT Architecture & Strategy, Scientific Technologies, Demand IT and Business Engagement, Digital and E-commerce, Infrastructure and Service Delivery, Project and Programme Delivery.

For more information please contact us on +44 (0) 20 7014 0230 or alternatively send us an email on


Latest Blogs