Presentation: From Rocks to Rust: Our C to Rust Paradigm Shift
Share this on:
What You’ll Learn
-
Hear Metaswitch’s story of moving from a C legacy system to Rust.
-
Listen why Rust is a good fit for microservices and fast-delivery systems.
-
Find out what are some of the preconceptions people have about Rust, and how it compares to Go.
Abstract
A leader in cloud native communications software, Metaswitch has recently chosen Rust as its preferred language. Fine and dandy on the face of it, but what has that actually been like for a developer working ‘on the coal face’?
I studied the history of geology prior to working for Metaswitch, and this background has informed my perspective as a relatively new developer transitioning from more traditional languages like C to the world of Rust. I explain how the paradigm shift our developers have experienced is akin that of the nineteenth-century geologists who were suddenly faced with the idea that the world was vastly older than they had previously thought. I discuss the reasons why Metaswitch chose Rust, and what it’s been like for our development teams getting to grips with this language.
Tell me about the work that you're doing today.
We're working on bringing to cloud an existing project for one of our clients. It involves a lot of work with products that are quite old, 20 years old, that were written in C, and we're turning a lot of these old products into microservices, containerising them, looking to get the whole system up and working in the cloud for our client, which involves a lot of cool interfacing with new languages like Rust, trying to build these wrappers on our own products to enable easier RESTful HTTP interfaces. It's quite an exciting mix of the old stuff that we used to do with a lot of new groundbreaking stuff that we're trying to be pioneers for.
Are you writing microservices with Rust?
Yes, some of our new microservices that are part of this project are written in Rust.
What's the motivation for the talk?
We want to evangelize Rust as a company. We made the decision to move to Rust as our preferred programming language going forward. So it's in our best interest that people do the same thing. But we’re not just motivated for own gain! - we genuinely do think that Rust is a great language and that we've got a lot of benefits from using it. We want other people to be able to take advantage of these benefits as well.
Who's the main person you have in mind when you're talking?
It's a mix. I'd be looking at talking at the developer level to people who might benefit from writing their products in this language and the gains that can be made there. But also at a higher level, the more senior folk who would be responsible for making the decision to adopt Rust as their go-to programming language. I want to reach out to that decision-making level, but also to the day-to-day developer who has to deal with that decision.
What do you say to developers that might say, Rust is an awesome language but it has a huge learning curve. If you're going to be writing microservices why not use something more opinionated and simple like Go?
I think that's a very legitimate concern and it is something that I directly address in my presentation. The short answer is, yes, Rust has a learning curve. This is something the community has acknowledged and is already taking steps to mitigate. If you pick up Rust now compared to a year ago it's already much simpler and easier to get to grips with. In terms of Go being simpler and perhaps more lightweight and easier to get started with, yes, I think that might be true but there are limitations to Go. A notable one is that Go needs a garbage collector whereas Rust doesn't have that. For the extremely fast high-level processing that we need to do as part of telecoms, Rust was definitely a better fit for us. And there are other factors too that I address.
What do you want someone who comes to your talk to leave with?
I want them to leave feeling that Rust is a viable choice for them to make. I want to address some of the preconceptions people might have about Go versus Rust in terms of ease of use and suitability for these kinds of projects involving microservices and high-processing, fast delivery. I want people to come away intrigued, and seeing Rust as a not just a novelty but as something that can work for them and be a good fit.
Similar Talks
Tracks
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
Evolving Java and the JVM: Mobile, Micro and Modular
Although the Java language is holding strong as a developer favourite, new languages and paradigms are being embraced on JVM.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
Operating Systems: LinuxKit, Unikernels, & Beyond
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualisation, including Linux on Windows, LinuxKit, and Unikernels
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
Leading Edge Backend Languages
Code the future! How cutting-edge programming languages and their more-established forerunners can help solve today and tomorrow’s server-side technical problems.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
Architectures You've Always Wondered About
Topics like next-gen architecture mixed with applied use cases found in today's large-scale systems, self-driving cars, network routing, scale, robotics, cloud deployments, and more.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Speaker AMAs (Ask Me Anything)
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
Speaker AMAs (Ask Me Anything)