Сложность
Я стараюсь делать всё так просто, как это только возможно. Чем сложнее конструкция, тем больше у нее точек отказа, тем сложнее потом будет разобраться, почему, где и как именно не работает. Такой подход не лишён недостатков (не ошибается только тот, кто ничего не делает, да и то он обычно ошибается именно в том, что он ничего не делает, а давно пора бы уже начать делать хоть что-то). Например, если система хорошо ведёт себя на условном объеме данных в тысячу (неважно чего - строк, сообщений или пользователей), то никто не обещал, что она, при той же архитектуре, будет хорошо себя вести при объеме в миллион. Но проблема сложных подходов, которые сразу замахиваются на миллион, именно в том, что из-за своей сложности они и миллиона не могут достигнуть, и тысяча не работает, да что тысяча - и условная единица, при некотором изменении начальных условий (а реальность неизбежно вносит свои коррективы, всегда) перестает работать не то чтобы хорошо - она вообще перестает работать. Надо было делать проще, но времени уже нет, и приходится или постепенно упрощать конструкцию, обрубая лишние и ненужные детали и нагромождения, или ещё более усложнять ее в попытке исправить. Надо было делать проще. Просто надо делать проще, изначально. Проще для всех.