How scalable is Unleash? 7.5 trillion flags a day
“How scalable is Unleash?” We get this question a lot. Rather than just say “Unleash is web scale”, we decided to test it. There are two ways of evaluating feature flags in Unleash: client-side and server-side (read more about our SDKs here). You will get different scalability with each option, so we looked at each.
Server-side SDKs scale linearly with your application because they evaluate flags locally on the server. Feature flags are periodically fetched from Unleash and evaluated locally within your application. The default interval to fetch feature flags varies depending on your client SDK and can be adjusted to suit your needs.
This design ensures that the capacity for feature flag evaluation scales with your application’s growth. In simpler terms, as your application scales, so does Unleash, improving its capability to handle more evaluations. If you can manage your application traffic, Unleash will handle your scale.
One small-sized Unleash instance can handle up to 1000 requests/second (1 AWS Graviton3 core, 256 MB ram). If we presume that any single instance won’t always be at peak performance, we can halve that number to 500 requests/second. The Go SDK defaults to pulling flags every 15 seconds (you can change that as needed).
If you run that math (500 x 15 = 7500), an Unleash instance with 500 requests/second can serve 7500 SDK instances. Knowing that an SDK can evaluate 100 billion flags/day, Unleash can evaluate 7,500 trillion flags/day on one small Unleash instance. If you need more than that, just add another instance. At the same time, we might also recommend a refactor of your code; something inefficient might be happening that you’d like to adjust!
Client-side SDKs are a bit different because the computation of a feature flag doesn’t happen inside the application but rather on the Unleash side. We created Unleash Edge to scale horizontally for this use case. Unleash Edge behaves like a server-side SDK client, which means a small Unleash instance can support up to 7500 Unleash Edge instances. Unleash Edge instances can be daisy-chained, so once again, Unleash can scale as high as you would like.
Because we were curious about these numbers, we ran a Locust test against 5 Unleash Edge instances using one CPU core, each running in Kubernetes, serving 36 unique flags to 10,000 concurrent users. With this configuration, we achieved more than 11,000 requests per second (RPS) and, over the span of two minutes, served more than 1.2 million requests without receiving a single request failure despite limited resources. The test was running across data centers in different regions.
In 24 hours, this single instance can handle at least 864,000,000 requests of feature flags per day. Given the many thousands of Unleash instances worldwide, we can reasonably say that Unleash scales well beyond trillions of flags daily.
Once again, if you’re calling that many flags in your application, you may be doing something wrong – but it’s open-source software, and you can do that if you like.
Even if you don’t need to support billions or trillions of flag requests per day, it’s nice to know you can. If you want to find out more about how Unleash can scale with you, schedule some time with us.