Refactoring indexes

Dec 5, 2022     Changelog

We’ve rebuilt portions of backend index generation and delivery to address recent scaling issues. The resulting reduction in both latencies and errors means faster and more stable installs, especially for customers with larger repositories.

A few weeks ago, our team noticed that generation and delivery of larger repository indexes would occasionally cause noteable spikes in 500 and 403 responses from our servers. Customers were reporting that these errors were affecting productivity. Fixing this was a priority.

As opposed to a single problem, we found a number of fundamental design flaws with how indexes were generated and cached – minor, yet not easily fixable. As we instrumented and learned, we started prototyping an alternate solution devoid of those issues. Initial tests went well: 95th percentile latencies for read operations were down by over 50%, and we have virtually eliminated certain error conditions that we’ve set out to fix.

Latency improvement

RespondToRepo (95p) comparison

Today, we’ve successfuly switched all traffic to the new backend. This is a big win for Gemfury customers, and we are excited to continue to seamlessly bring performance and stability improvements to our service.