Welcome back to another Sentry Snack of the Week. As promised from last week, this week we’re joining Adam as he describes a performance improvement that was made by changing the default behavior of Flagr.
How’s it going everyone. My name is Adam and I am one of the Engineering Managers here at Sentry. And today, I’m goin to tell you a quick story about caching, Python objects, and JSON blobs, oh my! Like most companies, we use feature flags to show which features to show to customers. Initially, we used a home grown solution to do this, but after a few years it started to show its age and we decided to switch to an open source solution called Flagr.
While implementing this, we started to notice a few different performance regressions. And since we build a performance monitoring tool, we decided to use it and really dig into what was going on.
Now, on any given page we may have hundreds or thousands of flags being checked, And what we do is we take all of these flags, pass them to Flagr, and send in some extra context around the user and the organization that they are a part of.
Flagr then sends us back a giant JSON blob with all of the details for each individual flag. Basically, whether or not the user can view that flag. The problem was that Flagr’s deserialization code was turning that entire JSON blob into a Python object. This deserialization is actually really expensive to do. So when we removed it and just access the JSON blob itself we noticed a reduction in time to parse all of these flags by about 500 milliseconds.
The next problem we saw was around caching. Because previously the deserialization was taking so much time, we didn’t actually know that this was a problem until we fixed that. Calling Flagr now is faster than checking and storing in the cache. And something that previously took 900 milliseconds was now only taking 200 milliseconds. Sometimes with performance monitoring, especially at scale, it’s less about finding that one specific performance issue, and more about peeling back the layers until you uncover a number of different things. Things that you wouldn’t expect to be slow, like caching, Can sometimes bite you in the butt.
And don’t forget to like, subscribe and follow us on YouTube. You don’t want to miss anymore of these Sentry Snacks of the Week.
Director of DevRel, Sentry