Я создаю новое веб-приложение и играю с архитектурой и хотел бы высказать несколько мнений о разделении пользовательского интерфейса и бизнес-логики и запуске их на отдельных серверах.
Это означает, что если кто-то запрашивает страницу, клиентский интерфейс сам запрашивает данные с внутреннего сервера, а затем фактически не выполняет никаких вычислений / логики, а просто использует данные для заполнения шаблона и затем отвечает этим.
- Back-End: Java + JAX-WS
- Внешний интерфейс: Кохана 3.1 (PHP)
- Формат обмена данными: JSON
Преимущества
- четкое разделение логики и пользовательского интерфейса
- возможность выбрать язык / структуру, наиболее подходящую для любого конца
- возможность добавления серверов логики / интерфейса в зависимости от того, какой из них является узким местом в случае проблем с производительностью
- возможность сделать API общедоступным без какой-либо дополнительной работы (псевдо-внутренние запросы будут идти к тому же API, что и запросы от сторонних приложений)
- возможность изменять (если необходимо) структуру / язык любой стороны без необходимости редактировать другую
- возможность указать другое оборудование сервера в соответствии с потребностями приложения логики / пользовательского интерфейса
- лучшая безопасность (если API закрытый) (??)
Недостатки
- латентность (??)
- больше серверов
Так что ты думаешь? Это хорошая идея? Пока мне не удалось найти много информации, но я думаю, что многие крупные сайты делают это так, верно? Как повлияет производительность (я думаю запустить ее на EC2)? Каковы дополнительные преимущества / недостатки? Есть мысли о выборе языков / рамок?