I've found the line of thought below to be quite common:
"Our database performance is over-utilized, so the next step to add in redis or memcached as a cache in front of it"
I'd hesitate. Sure, in stable state your database will no longer be over-utilized. But what happens when your redis database goes down or your cache purge algorithms fail to work properly?
When you tame problems by deploying new systems, you are adding another significant source from which production issues can arise.
Before jumping in with any complex new system, first ask yourself:
If you can't find answers to these questions, then there may be no other way than to add a new system In that case, be prepared to fix it when it brings its own issues.
That's all for this essay. If you have a question or an interesting thought to bounce around, email me back at david@davidmah.com. I'd enjoy the chat.
This essay was published 2020-06-07.