I agree with all the main points here: caching adds a significantly complex component to the system. You should only do it if you absolutely must pull data closer to a consumer. Adding caching &quot;to pick up quick wins&quot; is always dumb.<p>With that in mind, I do think most of the pitfalls listed here can be avoided with well-understood tools and techniques. There&#x27;s no real need to be running your cache in-process with your GC&#x27;d implementation language. Cache refilling can be a complex challenge for large scale sites, but I expect that a majority of systems can live with slower responses while the cache refills organically from traffic.<p>The points about testing and reproducible behavior are dead on - no equivocation needed there. As always keeping it as simple as possible should be a priority.