@DOgi po pierwsze cache, obstawiam że 80% operacji tutaj to read, a z tego 80% to read gorących
Spokojnie można by cachowac co 30 sekund np 1000 wpisów z gorących, po odsianiu czarnolist i tak zostanie coś dla każdego, a po co stresować bazę tym samym
Po drugie cache, dla assetów, czyli użycie CDNa i cache headerów, niech te zoptymalizowane proxy serwują obrazki bo robią to super tanio
No i po trzecie, jak najwięcej asynchronicznosci, ale to już optymalizacja write, nawet dawanie piorunów mogłoby być async i kolejkowane i np wrzucane do bazy w microbatchach co 200ms, zamiast transakcyjnie pojedynczo
Można jeszcze sporo optymalizować zamiast stawiać infre jak pod Facebooka, ale ja piszę ze swojej perspektywy, mi zawsze devopsowe rzeczy najdłużej zajmują i nienawidze wszelkich konfiguracji