Rapid Improvements
Upgrading to .NET 5 has enabled Optimizely to improve the performance of Content Cloud and achieve drastically quicker response times, which offers a range of benefits
There’s no doubt that .NET 5 is a transformative platform. The two main threads of .NET – Framework and Core – have come together in the .NET 5 release. This release is cross-platform, uses the 9.0 version of programming language C#, and offers all sorts of optimisations.
Optimizely Content Cloud has been on .NET since its founding, so it was a natural step for us to upgrade our platform. We’ve just come through a year-long process to upgrade our flag ship products to .NET 5.
It was admittedly a long project, but the preliminary performance improvements that we’ve seen as a result have been stellar. One highlight is that we have cut the average response time from 186 milliseconds to 74 milliseconds, which is remarkable considering that we were testing a full delivery cycle – content retrieval, logic, and templating into HTML. That all happens in about one-fifteenth of a second now.
Furthermore, this average was stunningly consistent – 95 per cent of requests saw an average reduction of 290 per cent. Our request failures for every 1,000,000 requests also dropped from an already very low 28 down to just two.
Finally, when we took the limits off and just ran the system hard, we were delivering 1,800 requests per second, and might well have done more if our tests ended at this point. And to be clear, these tests weren’t ephemeral – they were run for 40 minutes of continuous usage.
While these numbers might seem abstract, the speed increase is not just theoretical. This improvement will give our customers many different advantages.
First, it will increase customer satisfaction. The key component of any user experience is how fast a site delivers to the user. Even if a site is employing client-side technologies to incrementally load and improve perceived speed, the second biggest bottleneck behind the network speed itself will be response time from the server, whether it’s delivering full HTML, a client-side framework, or JSON data.
Speed increases can also deliver increased dynamic generation performance. Several web framework tout static, decoupled generation of content as the only way to solve performance and scaling issues. This brings with it all the problems that dynamic content generation was created to solve, such as server-side personalisation and experimentation. Now, our customers are free to implement their most complicated request logic without fear of performance impact.
There’s also the underappreciated benefit of greater sustainability. While we tend to concentrate on speed increases, there’s another side to the story: more efficient operations. Even if our customers don’t need the increased speed, they’re able to deliver the same experience with reduced computing resources, meaning less environmental impact and greener operations for everyone.
There’s just no question that .NET 5 has given Content Cloud a significant leap in performance, equivalent to what might be seen after making large scale hardware or architecture changes. With these improvements, we’ve eliminated a lot of acrobatics that content management systems developers across the industry have typically implemented to improvement their site performance.
Our chief product officer, Justin Anovick, explains why the change was necessary. “Our partners and customers were ready to move to the latest .NET release, and when we did some benchmarking around performance, it was obvious there were so many reasons to make the move,” he says. “It was a significant investment, but we’re through it now and the result is better than we ever expected.”
At Optimizely, we feel like this was a necessary step in our evolution. We’ve always had a close relationship with the Microsoft technology stack, and our future plans around version-less instances and low-code developer experiences required us to get onto the leading edge to avoid any disruptions down the road as our service model evolves.