April 20, 2023 1:00 PM
Oxy: Fish/Bumblebee/Splicer subsystems to improve reliability
We split a proxy application into multiple services to improve development agility and reliability. This blog also shares some common patterns we are leveraging to design a system supporting zero-downtime restart...
April 04, 2023 1:00 PM
Oxy: the journey of graceful restarts
Deploying new versions of long-lived server software while maintaining a reliable experience is challenging. For oxy, we established several development and operational patterns to increase reliability and reduce friction in deployments...
March 30, 2023 1:00 PM
From IP packets to HTTP: the many faces of our Oxy framework
We have recently introduced Oxy, our Rust-based framework for proxies powering many Cloudflare services and products. Today, we will explain why and how it spans various layers of the OSI model, by handling directly raw IP packets, TCP connections and UDP payloads...
March 02, 2023 3:05 PM
Oxy is Cloudflare's Rust-based next generation proxy framework
In this blog post, we are proud to introduce Oxy - our modern proxy framework, developed using the Rust programming language...
September 14, 2022 1:00 PM
How we built Pingora, the proxy that connects Cloudflare to the Internet
Today we are excited to talk about Pingora, a new HTTP proxy we’ve built in-house using Rust that serves over 1 trillion requests a day...
September 15, 2021 12:59 PM
Building Cloudflare Images in Rust and Cloudflare Workers
Using Rust and Cloudflare Workers helps us quickly iterate and deliver product improvements over the coming weeks and months....
September 09, 2021 1:00 PM
Native Rust support on Cloudflare Workers
August 26, 2021 3:04 PM
Pin, Unpin, and why Rust needs them
Using async Rust libraries is usually easy. It's just like using normal Rust code, with a little async or .await here and there. But writing your own async libraries can be hard. ...
December 25, 2020 2:00 PM
Using One Cron Parser Everywhere With Rust and Saffron
Cron parsers are everywhere, each supporting their own extensions on the cron string format, which made consistency between parts of Cron Triggers difficult to achieve. Today we’re showing how we easily solved this problem with Rust without needing to write the same code twice....