Last week Jeff Atwood wrote a piece about why throwing hardware at a problem makes sense in some situations. He's careful to avoid the trap of thinking that throwing hardware at a poorly designed program will do more than buy you a little time, but makes a good point:
Clearly, hardware is cheap, and programmers are expensive. Whenever you're provided an opportunity to leverage that imbalance, it would be incredibly foolish not to.From Coding Horror: Hardware is Cheap, Programmers are Expensive
Referenced Sat Dec 27 2008 15:42:36 GMT-0700 (MST)
Riffing on that, Gordon Weakliem makes a related and somewhat contradictory argument: Programmers are Expensive, But Operations are More Expensive. Gordon's point is that hardware has to be managed:
It's pretty simple to manage a single server, but each additional server starts to increase operational complexity. Before long, you're hiring people to manage the additional servers, and these people have a different skill set. They're not programmers, they're experts at running networks. A good engineer is a godsend to a programming team, relieving programmers of all kinds of tasks that shouldn't be distracting them, and that programmers probably aren't that good at anyway. But operations experts aren't cheap either, maybe not the price of a programmer, but not cheap by any stretch. Furthermore, horizontal scale introduces new problems: power consumption, heat dissipation, etc.From The Eighty-Twenty Solution: Programmers are Expensive, But Operations are More Expensive
Referenced Sat Dec 27 2008 15:44:33 GMT-0700 (MST)
Gordon later states that large, complex systems of servers have to be carefully deigned to be manageable.
It's true that services like Amazon and Google are examples of massive horizontal scale, but these systems didn't happen by accident. They were the result of careful planning and good architectural principles. The danger in the "throw hardware at the problem" aphorism is that it's really easy to ignore true architectural problems in the process. As always, there's a balance between thinking an acting that's at play. Like all silver bullets, Moore's Law comes with caveats.From The Eighty-Twenty Solution: Programmers are Expensive, But Operations are More Expensive
Referenced Sat Dec 27 2008 15:46:11 GMT-0700 (MST)
Most modern as-a-service offerings rely on multiple servers with myriad functions. It's silly, and I'd sure Jeff would agree wholeheartedly with this, to ignore the architecture of this system. Further, not using infrastructure automation to take as much operational expense out of the system is foolish.
I've been singing the praises of Puppet for months. Kynetx is a long way from achieving our operational goals, but what we're done using Puppet and Nagios allows two very part time people to manage and monitor more than a dozen servers. If you're not using Puppet to manage your servers, you're spending more time and money on operations than you need to.