Every time our server experiences some hiccups — read-timeouts, CPU-overloads, out-of-memory overflows etc. — I’m tempted to throw more money into our Amazon account and forget about it. That’s what most companies do anyway.
But then I stop myself, open-up my Visual Studio and — for the 1000th time — I spend a couple of hours optimizing the software instead. I’m being ridiculous. My cofounder makes fun of me — “not again, dude, lets just buy a faster server”. But I keep tuning the DB-queries, finding the bottlenecks and figuring out how to remove them. Because throwing more money is just postponing the problem. Making the program run faster, on the other hand, is an instant improvement for everyone — your customers primarily.
Optimizing the software is not the only way — you could tweak your server setup or change the architecture. Like, putting the database transaction logs and the data-files onto separate physical hard-drives. Or splitting the web-server and the database-server onto different machines. Or trying the other 9 ways to optimize your Amazon win-server that I blogged about.
Anyway. We haven’t upgraded our servers in years.
Every time you see a problem, try to find an easy solution that does not require any money to solve it.
Constraints force you to be creative.
Every crisis makes us tighten our belt. But, heck, tightening the belt also makes us handsome!
UPDATE: minutes after writing this post I discovered that it resonates highly with this chapter from Getting Real, so hat tip to Jason Fried.