Всегда упирается в производительность машины.
Сначала пишется проект силами одного человека, по мере того как машина не справляется начинается разбитие на машины "делающие работу", "машины обслуживающие фронтенд" и "машины обслуживающие мост между делающими работу и обслуживающими фронтенд".
Нужно ли нам запускать отдельно фронтенд? Как напишешь. Мастер в пхп может написать код внешнего вида на пхп, а потом на фротенд-фреймворке описать только визуальные эффекты и метаморфозы страницы. Мастер фронта предпочтет использовать один javascript, чтобы написать всю логику, но при этом он сделает всякие сторы, пагинаторы и то, что бекенд тоже делает - у себя еще раз. По мере разбивания на машины это будет влиять либо в то, что ваши фронты постоянно вынуждены чуть чуть понимать в пхп, либо в то, что ваш бек понятия не имеет как оно у фронтов там работает.
Будут ли это реальные машины-серверы, виртуальные машины-серверы или просто процессы-контейнеры в рамках одной машины, у которой можно в облаке выставить потребляемые ресурсы - задача по большей части мастера в дев-опсе.
По моему опыту - даже у нас, программистов, тут кромешный хаос, а ведь все последовательно и понятно. Там же вообще "нейронная сеть правит бал" (читай: мы выкатили, оно пошло, потом графики посмотрим, как работает? - "ну работает же!")