4 ms·
They have a very Interesting Stack as seen on Quora[1]: -Python + heavily-modified Django at the application layer -Tornado and (very selectively) node.js as
by pajju 14y ago
They have a very Interesting Stack as seen on Quora[1]:
-Python + heavily-modified Django at the application layer
-Tornado and (very selectively) node.js as web-servers.
-Memcached and membase/redis for object and logical-caching
-RabbitMQ as a message queue.
-Nginx, HAproxy and Varnish for static-delivery and load-balancing.
-Persistent data storage using MySQL.
-MrJob on EMR for map-reduce.
[1] http://www.quora.com/Pinterest/What-technologies-were-used-to-make-Pinterest http://www.quora.com/Pinterest/What-technologies-were-used-t...
- edwinnathaniel 14y agoPardon my ignorance: what is interesting about Pinterest stack? I think by now most startups, YC or not, in Silicon Valley will pretty much have a similar setup: 1) Choose the main web-stack (Rails or Django) 2) Choose the API framework (node.js, or something else) 3) Memcached for caching (or some NoSQL) 4) A message queue (ZeroMQ, RabbitMQ, or something ...) 5) nginx, HAProxy, Varnish, (or similar technology) 6) Hadoop for map-reduce (only if you need to go that path...)
- encoderer 14y agoNot trying to be a nit-pick, but wanted to mention that ZeroMQ is not a message queue in the sense that RabbitMQ (and Kestrel, Beanstalkd, SQS, etc) is. It's a socket library that you'd use to implement those technologies. And while this is truly unimportant, my experience with bay area startup stacks is that Redis has very thoroughly supplanted Memcached for most use cases. Though most still have a memcached cluster or two. That being said: 90% of software development in this world isn't done at tech companies and startups. So from that perspective, that stack is interesting.
- edwinnathaniel 14y agoCan you elaborate why Redis has supplanted Memcached? Is it because Redis occupies a space in between Memcached and MemcacheDB? (in the sense of Redis can be both in-memory and/or persisted on disk?) (Not that I care about starting the holy war of X vs Y, just out of curiosity why) You have a point regarding your last statement. Perhaps I've been here far too long to notice more of the 10% and less on the 90% :) ... which is true ... last I read someone is making almost $1M revenue developing Windows desktop app in 2012 and another company is making $60k/monthly revenue developing BB apps using in-apps Ads. I think I'm going to sign-off on HN and go to the other side... :D :D :D
- aneth 14y agoRedis is far more feature-ful, and can serve the purpose as memcache. Why have two parts when you only need one? Redis offers persistence, set operations, namespacing, you can delete multiple entries with wildcards...
- krobertson 14y agoI agree. I think the interesting aspect is that they built a service that serves an impressive number of users on fairly common technologies. There isn't anything very revolutionary about their stack by itself. FB didn't buy them for their technology... they could have replicated that on their own. If they want to be talking about infrastructure, the story of using common tools at high volume is more interesting that just what tools...
- raverbashing 14y agoOh, I wish it was that simple. You can't mix and match (you can theoretically) Let's say you began with Django, right? Or there was something already ready in Django. And then you begin to see the warts. But ok, you keep churning along. And the more you churn the more of a specialist in the deficiencies of each technology you become. Like the fact that Django's ORM runs like a dog. Or see all the "we moved to MongoDB and we regret it" discussions From that list, there are two technologies I would recommend strongly (if you know what you are doing): nginx and Redis The rest needs to be handled with care. And Redis is very powerful if you know how to use, but it's easy to go the "lazy way" with it, and it will be fast, but not as fast as it can.
- megaman821 14y agoYes, but the Django ORM helped them launch faster. There is nothing wrong using it to start with and then writing your own SQL queries when you need to scale or even changing your data model to accommodate scaling.
- raverbashing 14y agoI agree 100% (even though I don't know what or if they changed the Django ORM - most likely yes) Use the tools to launch faster, then optimize.
- drumdance 14y agoMy company is going through exactly this scenario right now. We launched on and use Rails for most stuff, but there are a couple of important cases where we have to do direct sql. Though I've had to work around some of Rails defaults for my use cases, there is no doubt that without it we'd not have been able to launch and iterate so quickly.
- cookiecaper 14y agoI hate the Django ORM and I don't know why Django doesn't just deprecate it and switch to SQLAlchemy as the new default, which is a much, much better ORM and used primarily by non-Django Python apps.
- wamatt 14y agoSeems like a sensible stack. However, is it not reasonable that would someone not consider node.js, as web stack as well? I will agree the focus is more towards backend and asynchronous API's traditionally, but the amount of front-end/UX orientated modules are growing every day.
- edwinnathaniel 14y agoSure why not. Some people don't even mind the lack of polished modules and instead spend time to write their own. Not a big fan of node.js (or JavaScript for that matter) and probably never will so I can't comment much.
- swah 14y agoI would think that Nginx + Django + SQL, and the rest is premature optization...
- garindra 14y agoEven simpler : Django + SQL in Heroku.