Thrift is a software library and set of code-generation tools developed at Facebook to expedite development and implementation of efﬁcient and scalable backend services. Its primary goal is to enable efﬁcient and reliable communication across programming languages by abstracting the portions of each language that tend to require the most customization into a common library that is implemented in each language. Speciﬁcally, Thrift allows developers to deﬁne datatypes and service interfaces in a single language-neutral ﬁle and generate all the necessary code to build RPC clients and servers.
This paper details the motivations and design choices we made in Thrift, as well as some of the more interesting implementation details. It is not intended to be taken as research, but rather it is an exposition on what we did and why.