This article was written in collaboration with Pedro Rittner, a Production Engineer at Facebook.
For today’s interview, we have Pedro Rittner who is a Production Engineer on the Device Integration, Assessment, and Grokking team at Facebook. The Device Integration, Assessment and Grokking team develops core hardware tooling and automation frameworks to report, control, monitor, analyze and fix hardware. Pedro has been using Rust as the main language for development. He primarily works on building the frameworks that Facebook uses to validate the health of hosts across the server fleet. Let’s hear from him about how his experience with Rust has been and learn more about his work.
Our team uses Rust as the language of choice for the majority of our backend services. These services perform the hardware health assessments of hundreds of thousands of machines every day. A good portion of our tooling (mostly CLIs) are also written in Rust.
We chose Rust for our backend services because we prioritize reliability and efficiency in production. We found that our legacy Python infrastructure wasn't able to scale to meet our needs as Facebook's fleet grows, and we also had been bitten many times by Python runtime gotchas that can be completely avoided by using Rust.
I've implemented several projects using Rust, in my current team and in others:
Facebook has published several of our Rust projects on Github, and our engineers regularly contribute to rustc upstream.
I believe that Rust is growing steadily in adoption across the industry this year. With the stabilization of several key components of the Rust ecosystem (e.g. the bytes and tokio crates hitting 1.0), Rust is well-positioned to capitalize on the growing need for more reliable services.
My favorite feature about Rust is being able to delegate a lot of the "paranoid thinking" I developed from a decade of writing C++ code. Normally with C++ I have to be on my guard with memory usage and be very careful not to introduce UB into my codebase. Rust helps me avoid this cognitive overload by having the compiler enforce this for me.
I would definitely recommend using the Rust by example book as a starting point. If you're already familiar with programming in C++ or Python, learning by example can help you map the abstractions in an efficient way without losing time.
We would like to thank Pedro, for taking the time to do this interview. It was very interesting to learn how Rust is being used as a primary language to build backend services and how we are learning from all the things we build here and contributing back to the Rust community. We hope you found this interview useful and it gave you some insight into how and where Rust is being used at Facebook. Look out for more interview blogs where we meet with many more engineers and hear their thoughts on this topic.
Rust has consistently been ranked as the “most loved” language for the last 5 years and we at Facebook believe that Rust is an outstanding language that shines in critical issues such as memory safety, performance and reliability and is being used widely over a large range of projects here. We joined the Rust Foundation to help contribute towards the improvement and growth of Rust, which not only strengthens our commitment towards the Rust language but also towards a sustainable development of open source technologies and developer communities across the world.
This blog is a part of our Meet the Rustaceans series, where we invite the engineers and developers who use Rust on a regular basis to share their experiences and tell us about the amazing products that they are building using Rust here at Facebook. Look out for more interview blogs where we meet with many more engineers and hear their thoughts on this topic.
Interested in working with Production Engineering at Facebook? Check out our job postings on our Production Engineering career page here.