We developers like to think way ahead and design for scalability, extensibility and a lot of other things, but, sometimes, we don’t need to. Often, all that thinking actually ends up in analysis paralysis.

I cannot quote this enough:

For certain type of applications, there is a hard cap of what load you can be expected to handle. And you should absolutely take advantage of this. The more stuff you can not do, the better you are. And if you can make reasonable assumptions about your load, you don’t need to go crazy.