- Author
-
- Name
- Thomas Ptacek
- @tqbf
- @tqbf
Fly.io runs apps close to users. We transmogrify Docker containers into Firecracker micro-VMs that run on our hardware around the world, and connect all of them to a global Anycast network that picks up requests from around the world and routes them to the nearest VM. The easiest way to learn more is to sign up. It’ll take you just a minute or two to get up and running.
The platform that makes all this stuff work, the engine of our system, is written in two different systems languages: Rust and Go. Go code powers our orchestration; it’s what converts Docker images and provisions VMs. Rust code drives fly-proxy
, our Anycast network.
We’re looking for people who want to work on fly-proxy
.
fly-proxy
is an interesting piece of code. A request for some Fly.io app running in Dallas and Sydney arrives at our edge in, say, Toronto. We need to get it to the closest VM (yes, in this case, Dallas). So fly-proxy
needs a picture of where all the VMs are running, so it can make quick decisions about where to bounce the request.
We don’t simply forward those requests, though. fly-proxy
runs on both our (external-facing) edge hosts and our (internal) workers, where the VMs are. It builds on-the-fly, multiplexed HTTP2 transports (running over our internal WireGuard mesh) to move requests over. The “backhaul” configuration running on the worker demultiplexes and routes the request over a local virtual interface to the VM.
It gets more interesting in every direction you look. For instance: we don’t just route simple HTTP requests; we also do raw TCP (no HTTP2 for that forwarding path). And WebSockets. All these requests get balanced (most of our users run a bunch of instances, not just one). And in the HTTP case, we automatically configure HTTPS, and get certificates issued with the LetsEncrypt ALPN challenge.
Zoom in on the raw request routing and there’s still more stuff going on. fly-proxy
is build on Tokio, Hyper, and Tower. A single fly-proxy
is managing connectivity for lots and lots of Fly.io apps, and isolates the concurrency budget for each of those apps, so a busy app can’t starve the other apps. We’re tracking metrics for each of those apps and making them accessible to users.
fly-proxy
also has some fun distsys problems. That global picture of where the VMs are is updating all the time. So too are the load stats for all those VMs, which impact how we balance requests. Requests can fail and get retried automatically elsewhere; in fact, that’s the core of how we do distributed Postgres.
All this is before we get to the eBPF code that runs alongside the proxy to make low-level networking things work.
It’s gnarly and technical and always-on and regularly updated but also needs to have high uptime and if this sounds fun, congradu-dolences! This might be the gig for you.
Things To Know About Us
- We’re a small team, almost entirely technical, and everyone wears a lot of hats. You’ll have the opportunity to get your hands dirty in a lot of different things here. But first and foremost, this is The Rust Job at Fly.io.
- We’re at a stage where our engineering team will feel more like working on a big open source project than on a buttoned-down engineering team. Good things and bad things about that. You want to be comfortable working without a roadmap or an MRD, and with finding useful stuff to build.
- We’re remote, with team members in Colorado, Quebec, Chicago, London, Virginia, Rwanda, Spain, Brazil, and Utah.
- We’re an unusually public team, with an online community (at community.fly.io) that we try to be chatty with. If we’re doing things right, this role will likely increase your public profile.
- We’re a team, not a family, but we have families and want to be the kind of place where work doesn’t get in the way of that.
- We’re a real company – we hope that goes without saying – and this is a real, according-to-Hoyle full-time job with health care for US employees, flexible vacation time, hardware/phone allowances, the standard stuff. The comp range for this role is $160k-$200k, plus equity.
How We Hire People
We are weird about hiring. We’re skeptical of resumes and we don’t trust interviews (we’re happy to talk, though). We respect career experience but we aren’t hypnotized by it, and we’re thrilled at the prospect of discovering new talent.
The premise of our hiring process is that we’re going to show you the kind of work we’re doing and then see if you enjoy actually doing it; “work-sample challenges”. Unlike a lot of places that assign “take-home problems”, our challenges are the backbone of our whole process; they’re not pre-screeners for an interview gauntlet.
For this role, we’re asking people to write us a small proxy that does just a couple of interesting things (we’ll tell you more). We’re looking for people who are super-comfortable with Rust and network programming in general, but we’re happy to bring people up to speed with the domain-specific stuff in Fly.io.
If you’re interested, mail jobs+rust@fly.io. You can tell us a bit about yourself, if you like. Either way, we’ll ask you tell us what your least favorite Rust crate is (it can be a good crate, just one you didn’t have fun working with). We’re happy to answer questions: send them along!
There are lot of cool directions to take fly-proxy
in. It’s a big deal to us. We’re psyched to talk to you about it.
- Next post ↑
- Support Engineer
- Previous post ↓
- Technical Writer
Other Jobs from Fly.io
Platform Engineer Proxy
Platform Engineer Fly Machines
Infrastructure Engineer
Similar Jobs
Senior Solutions Engineer
Systems Development Engineer, ART19
Software Engineer II - Full-Stack
Sr Software Dev Engineer, Aurora Control Plane
Staff Software Engineer - Full-Stack
There are more than 50,000 engineering jobs:
Subscribe to membership and unlock all jobs
Engineering Jobs
60,000+ jobs from 4,500+ well-funded companies
Updated Daily
New jobs are added every day as companies post them
Refined Search
Use filters like skill, location, etc to narrow results
Become a member
🥳🥳🥳 452 happy customers and counting...
Overall, over 80% of customers chose to renew their subscriptions after the initial sign-up.
To try it out
For active job seekers
For those who are passive looking
Cancel anytime
Frequently Asked Questions
- We prioritize job seekers as our customers, unlike bigger job sites, by charging a small fee to provide them with curated access to the best companies and up-to-date jobs. This focus allows us to deliver a more personalized and effective job search experience.
- We've got about 70,000 jobs from 5,000 vetted companies. No fake or sleazy jobs here!
- We aggregate jobs from 5,000+ companies' career pages, so you can be sure that you're getting the most up-to-date and relevant jobs.
- We're the only job board *for* software engineers, *by* software engineers… in case you needed a reminder! We add thousands of new jobs daily and offer powerful search filters just for you. 🛠️
- Every single hour! We add 2,000-3,000 new jobs daily, so you'll always have fresh opportunities. 🚀
- Typically, job searches take 3-6 months. EchoJobs helps you spend more time applying and less time hunting. 🎯
- Check daily! We're always updating with new jobs. Set up job alerts for even quicker access. 📅
What Fellow Engineers Say