High Scalability: Scaling Pinterest →
From High Scalability, condensing lessons from a talk by Pinterest engineers Yashwanth Nelapati and Marty Weiner:
When you push something to the limit, all technologies fail in their own special way. This led them to evaluate tool choices with a preference for tools that are: mature; really good and simple; well known and liked; well supported; consistently good performers; as failure-free as possible; free. Using these criteria they selected: MySQL, Solr, Memcache, and Redis. Cassandra and Mongo were dropped.
This is one of the smartest, most dense collections of web-scaling wisdom I’ve ever seen.1
Even at smaller scale, these lessons apply. An independent developer or small company can’t afford to waste time messing with flaky, overly complex, or high-needs server infrastructure.
At Tumblr, I used PHP, MySQL, and Memcache. I then built Instapaper with PHP, MySQL, and Memcache. When I needed to build a server back-end and CMS for The Magazine, I used PHP, MySQL, and Memcache. I’m now building a little sponsor-management tool for myself that will probably only ever be used by a maximum of four people, and I’m using… PHP, MySQL, and Memcache.
Using mature, reliable, widespread tools isn’t just about scaling more easily — it’s about being as low-needs as possible so you can spend more of your time and attention on things that matter more to you.
-
The last post I saw on this topic that was this good was FriendFeed’s schema-less MySQL technique, from which I took a lot of lessons that helped scale Tumblr. ↩︎