At Readability, we’re constantly adapting our infrastructure to add features, keep up with user requests, and solve problems in better ways. Recently, we made a set of updates that helped speed up API requests 15-25% and reduce our fleet of app servers by 60%.
Like lots of other web-based platforms, we host with Amazon. It’s been great for quickly spinning up new test instances to play around with, allocating additional capacity on demand, and rock solid services like SES and S3.
Up until recently, we were serving all traffic with the fairly standard nginx/Apache/mod_wsgi stack. Things ran smoothly, but we thought we could find a better, custom-tailored solution. During our evaluation process we tried out lots application servers, like uWSGI and fapws3, but finally settled on gunicorn.
What we love about gunicorn is its emphasis on hosting Django apps (which Readability is based on), its wealth of configuration and tuning options, and the ability to include it as part of our application with very few external dependencies. We also thought it would be more performant, but we were surprised at exactly how much so!
We also took the time to evaluate our instance types at Amazon. We launched using m1.xlarge instances, but after switching to gunicorn we had a much lower memory footprint and didn’t need all the extra memory that m1.xlarges provide. Our workload is much more CPU-bound, due in part to our parser engine, and we decided to experiment with c1.xlarge.
Not only did the switch to gunicorn and c1.xlarge instances reduce our costs, it dramatically improved our performance. That means faster page loads, faster API access, and faster syncing for your Readability apps. On top of all that, by making use of Amazon’s best practices and components such as ELB we were able to implement these changes with zero downtime.
Wheels in Motion
Scaling a platform the size of Readability on the fly has its challenges. To borrow a turn of phrase, it can be like changing the tires on a car going 100 miles an hour. We’re happy to have found such a great fit with gunicorn and great hosting solutions at Amazon to allow us to test and make these changes quickly and easily.
Interested in changing the tires on a car going 100 miles an hour? Come work with us!