Удобнее масштабироваться не по типам ресурсов, а по типам клиентов (например, по региональному признаку или по тарифу на свои услуги раскидывать инстансы по серверам). Но возможен и ваш вариант - автор вопроса не выдвинул никаких критериев.
Алексей Сигинур: когда столкнётесь с нестабильностью и низкой производительностью своих сервисов, тогда и будете решать эти проблемы. Это не то решение, откладывание которого обойдётся вам дорого (скорее всего с предполагаемыми вами проблемами вы не столкнётесь вообще на своих нагрузках).
Postgres не умеет работать без транзакций, потому может быть избыточен там, где консистентность данных гарантируется бизнес-логикой слоя приложения. Такие приложения сложнее писать, но потенциально легче масштабировать горизонтально.
Mongo - не key-value, а документоориентированная СУБД. Использовать нужно тогда, когда информация чаще нужна в виде документов, а не отношений таблиц, а отношения хранятся в документе денормализованном виде и редко пересчитываются.
Если вы показываете лайки - то показывайте именно их, а не какое-то предположение о том, какими эти лайки будут в будущем. Иначе и пользователя, и себя запутаете. Это всё ещё советы для "рейтинга без целей".
Рейтинг считать можно как угодно, хоть случайное число показывать. Если у вас нет какой-то цели введения этого рейтинга. А если есть (например, каким-то образом повлиять на поведение пользователя), то исходя из этой цели рейтинг и проектируется.
Полновесное приложение стройте так, чтобы одновременно активных элементов на экране было не больше, чем в тестовых приложениях (вообще, правильно проектировать приложение важно при выборе любой технологии). Анимации CSS ускоряются видеочипом, JS в это время может заниматься другими делами.
lavezzi1: в том смысле, что при обрезании текста курсор устанавливается в его начало. Нужно сохранить текущую позицию курсора перед обрезанием, а потом восстановить её. Оставляю вам радость самостоятельного решения этого нюанса.
Если вам понадобилось ловить это событие, то что-то вы задумали неправильно. Хотите лоадер рисовать, пока длинный список формируется? Не получится, гуй рисуется в одном потоке, при перестроении DOM-элементов не получится двигать другие DOM-элементы. Для длинных списков используйте virtual list и вообще программируйте так, чтобы временем изменения в DOM можно было пренебрегать и считать нулевым (когда вылезете за пределы и пренебрегать не получится - что-то сделано неверно).