Some new features are sexy. They come with shiny new interfaces, extra buttons, more power. These are obvious and easy to spot. They are fun to develop and fun to release.
However, there’s another side to improving a product that doesn’t get as much respect. It’s the optimization. Nothing new, but everything better. Small tweaks here, hardware upgrades there. Everything runs more smoothly but you don’t really notice it. You feel it, but there’s nothing pretty to point to as evidence of the hard work.
The speed initiative
We want to treat speed as a feature. It should be one of our best features. So, for the past few months Jeremy and Mark have been working hard on speeding up our apps through software optimizations, caching, and network and hardware improvements. They deserve a huge round of applause for the results. They’ve made a big difference.
Let’s talk about Basecamp
We’re rolling these optimizations out to different 37signals products at different times, but let’s start with Basecamp, our most popular product. Basecamp gets used a lot by a lot of people. It’s also the type of product that people are in and out of all day long so speed is a critical factor. We rolled out a series of optimizations this week.
Here are some charts generated by New Relic that shine a light on the results of the hard work.
These charts compare an hour of traffic this morning with the same hour last week. As you can see, the changes we’ve implemented have made a dramatic difference. Our overall response time was cut very nearly in half, meaning that pages are loading roughly twice as fast as they were for the same time period last week. At the same time, we’ve managed to cut CPU usage by about a third and database time by about half.
How we did it
These gains were achieved using a variety of techniques including:
- Analysis: We relied heavily on New Relic’s outstanding RPM performance management suite to give us insight about the parts of Basecamp that were accessed the most as well as those that were most in need of improvement.
- Caching: We’ve begun using Memcached in a variety of spots. Caching can be tricky with dynamic apps like Basecamp since different people often see different things, but we’ve implemented it carefully where it could be used to its best advantage.
- MySQL optimizations: We’ve been working with a MySQL performance consultant to help us optimize our database calls and queries. We’re still early in the process but we’ve learned a lot so far.
- Hardware upgrades: We recently made some significant upgrades to our database servers. We went from servers with 2 x Dual Core 2GHz processors, 32GB of RAM, and 6×73GB 15,000 RPM SAS drives to servers with 2 x Quad Core 3GHz processors, 128GB of RAM, and 8×73GB 15,000 RPM SAS drives. We’ve also upgraded our load balancers and have new switches coming soon as well.
Change you can feel
While you may not immediately notice speed increases like you’d notice a big new feature, we think that over time you’ll see your productivity increase due to these speed increases. Less time for pages to load, less waiting for results. Everything’s just smoother. It’s change you can feel. The more you use Basecamp the more you’ll feel it.