Introducing next-gen load-balancing at jsDelivr

Note: This article is outdated. jsDelivr has switched to a different load-balancing logic since. We do not recommend using PerfOps products.


Since the beginning and up until now jsDelivr has been using Cedexis Openmix to achieve its Multi-CDN load balancing between the sponsoring CDNs. We were the first and still remain the only free multi-CDN for open source projects.

Why have we decided to change?

Throughout the years we’ve learned a lot about the struggles of operating a multi-CDN service and all the nuances of RUM (Real User Metrics) based decision making. For example, one of the main issues we always had was the fact that Cedexis was running a different amount of benchmarks in different countries and CDNs.

That meant that one of our providers could be covered by testing in Australia but receive almost no tests in Russia, while at the same time another provider had a small amount of tests in Australia and a huge amount in Russia. This disproportion was resulting in inaccurate and unfair results.

Another initial problem we had was trying to configure the logic of the load-balancing which had to be written in PHP at first and then javascript. With the help of support and Cedexis engineers we managed to create optimal logic and only after reading through all of their documentation multiple times did we gain enough confidence to make our own small changes and improvements. You can check our latest javascript based logic in our Github.

Today all of that changes. We are happy to announce that jsDelivr has completely replaced its load balancing with a new product called FlexBalancer, developed by PerfOps.
It’s already live and all requests going to cdn.jsdelivr.net are already going through our FlexBalancer app.

What improvements does this bring?

1. Unlimited Sponsored Usage Forever

Unfortunately after the acquisition of Cedexis by Citrix, Citrix decided that they are no longer willing to support projects like ours. We expected that this might happen since the day the acquisition was announced and prepared accordingly. PerfOps was created by the same people that brought you jsDelivr which ensures free and unlimited usage including priority support and dedicated engineering time.

2. Easier Configuration

This is our full config at the moment, created using FlexBalancer’s Smart UI
flexbalancer

We were able to easily achieve the same logic as our previous Cedexis configuration. Mainland China users are routed to Quantil and everyone else is load-balanced between Fastly, Stackpath and Cloudflare based on their performance and uptime. In the future FlexBalancer will also support custom javascript code for more complex logic, but it likely won’t be needed as the UI already supports everything we need and works perfectly.

3. Better Performance and Accuracy

PerfOps is doing RUM monitoring (Real User Monitoring) of all CDN and DNS providers but with the difference that all benchmarks are equally balanced among providers in all countries. This means that the data is impartial to anyone which results in better load balancing decisions.

4. DDOS protection powered by Cloudflare

The FlexBalancer infrastructure consists of origin servers running in all continents using anycast for routing. A fairly standard practice that Cedexis also uses, but in this case the origin systems are protected by the vast network of Cloudflare.

At the same time they also cache the responses for improved performance and will continue to serve queries from cache in case the origin goes down for any reason. At the time of writing Cloudflare has the fastest global DNS network.

We welcome FlexBalancer into our stack and are planning even more changes and improvements! Stay tuned!