This editorial was originally published on 3 Nov, 2016. It is being republished as Steve is traveling.
I actually chuckled out loud in my office recently. I was reading a piece about Expensify and how they learned some lessons from their database architecture over time. It's a good piece, but at one point the author talks about two Dell servers. There's a dual core 2.8Ghz CPU with 500GB of storage for US$700. This could be upgraded to an 8 core, 3.7GHz CPU with 64GB of RAM and 10TB of storage for around US$3,200. However, the author says don't be cheap. Why?
That's less than the company spends on coffee each month.
I thought that line was funny, and it proves a point. It can be easy to think about the cost of hardware as being high because it's a large ticket item for most of us. When you view it in the context of the scale of business, then it's cheap. If any of us spent $3000 a month on food, we might not think $3000 for a server is expensive. When you look at the cost of your labor that might need to babysit an underpowered system, a few more thousand dollars seem like a bargain for memory or CPU resources.
The author also notes that while EC2 charges for managing your systems, it's still a steal, and for many of us, capacity isn't a big issue. We do find that one single system runs most of our workload. If it doesn't, then we could buy more, or a second system, for a relatively low cost. At least, compared to the rest of our business.
There certainly are some of you that have a large workload, or you have spent substantially more on server hardware. I think many of my systems have been tens of thousands of dollars, but there are good points to be made. Today's computers are very powerful, and even though we have more data, a single server is likely able to handle many workloads.
If we write good code.
That's a big caveat, but training your staff to code better, having them spend time learning to query hierarchies more efficiently or quickly splitting strings, can pay off with much happier servers and customers. While I am a fan of using hardware to avoid spending too much time tuning queries, I also think continuously improving the skills of your development staff is much more important and might be the best IT investment you can make. Assuming, of course, that you treat them well and they enjoy working for your management staff.