Memory estimates should be on Write QPS (200) and not on Read QPS (20k). Let me know if I am missing something.
As we want to cache some of the hot URLs that are frequently accessed this is possible from the read URLs. That is why we should use read URLs not write URLs.
But if we want to store 20% of the URLs that are most frequently accessed, why is the answer not 20% of the expected storage needed (i.e., 20% of 15TB = 3TB)? Why is the answer derived from read requests per day instead of total storage needed?
Is it because we want the caching to be based on the URLs that have been most frequently accessed within the past day, rather than those that have been most frequently accessed in the past 5 years (5 years being the length of time every URL shortening is stored in the system)?