I love it when a somewhat older article like Pinterest Cut Costs From $54 To $20 Per Hour By Automatically Shutting Down Systems hits Hacker News and generates a good conversation. One of the common sentiments about the cloud was raised: why doesn't Pinterest save a lot of money by running their own hardware instead of using the cloud?
Our #1 requirement has been to keep up with the growth in traffic on the site. We've been growing so fast that there's literally no way we could have ordered and racked equipment fast enough. We were also a very small team -- a year ago there were only about a dozen people in the whole company. At this point we're much larger, which gives us room to consider more options like colo or multiple cloud providers.
AWS certainly feels pretty costly when you compare colo prices to the list price for on-demand instances. But one of the reasons I wanted to present our work is to show that you can use the cloud for a lot less than the list price. It takes work to buy reserved instances or run spot instances, but that does make it much more cost competitive.
It's only after consulting with a few startups that I realized what an amazingly humongous hurdle non-technical (and even technical) founding teams have in getting started, let alone dealing with growth. You have an idea, but you just can't get started. You have success, but you can't respond fast enough. An overwhelming number of system issues need resolving and there's nobody to do the solving, or even know the right questions to ask.
Hiring a big enough team with the right mix of skills is nearly impossible. Try it. The true genius of VCs is that they provide a large enough reward that teams self-assemble and organize themselves to be consumed. Which is partly why I think a future with Programming Guilds is not so far fetched an idea.
When you've become Pinterest, with fame and money, your options change, you've become a strange attractor for talent. That's a long and uncertain road that could transition down and as fast as it hockey sticked up. Lifecycles are tricky that way.
So we aren't dealing with an optimization problem, we are dealing with an existential problem, and in that context exchanging resources for survival makes perfect sense.