Я за то, чтобы проектировать приложения сразу помня про перформанс.
Это куда проще, чем потом с пылающей задницей оптимизировать.
Причем, архитектура внутри приложения обычно от этого не сильно страдает. Тот же DAL всё равно изолирует весь SQL в себе, а на остальную архитектуру такие вещи влияния особо не оказывают.
Те же микросервисы - они имеют смысл, но с ними тоже важен баланс, т.к. их инфраструктурная стоимость всё равно велика.
Кстати поддерживаю, достичь перфоманса в неожиданном месте, заранее это не планируя, может вылиться в глобальный рефакторинг с разрушением кучи внутренних связей и инвариантов и ещё не факт, что этот перфоманс удастся достичь даже такими жертвами.
У меня был проект, когда заказчик в какой-то момент решил сделать новостную ленту наподобие того, что было в вк раньше. И эта страничка была одной из самых тяжёлых, для отображения которой требовалось сходить буквально во все (за исключением пары) сервисы. Это была полнейшая жопа.
Конечно об этом надо было думать заранее.