Я могу привести пример, основанный на компании, в которой я работаю. Мы отделяем заднюю и переднюю часть на разных серверах для безопасности и удобства. Мы блокируем все ip от отправки запросов к нашему бэкэнду и выпускаем только ip переднего сервера. Мы создаем определенные c правила для каждого сервера в отдельности, и если один из серверов останавливается по какой-либо причине, он не влияет на другой.
Но это решение во многом зависит от типа приложения, которое вы разрабатываете, а также от структуры, которая вам нужна для вашего проекта. Но учтите следующее: безопасность, ремонтопригодность и удобство.