Так как это во многом зависит от ваших настроек и требований, я позволю «Х все еще правильный ответ?»вам решать.Однако, рассматривая различные архитектуры, вы можете составить список вопросов, которые необходимо задать, чтобы определить, является ли он правильным ответом при определенных обстоятельствах.
Проблемы частого интереса
ВопросыВы хотите спросить, как правило, связаны с безопасностью и гибкостью.В целях безопасности вы должны следовать принципу наименьших привилегий .Для большей гибкости вы захотите узнать, можете ли вы запускать несколько платформ, несколько версий каркаса и насколько легко можно делегировать работу другим задачам.
Другие проблемы
Для простого вебаинтерфейс к приложению, поддерживаемому базой данных, не все эти вопросы важны.Вам также нужно помнить, что некоторые из рекомендаций не имеют ничего общего с тем, что здесь изложено.Многие веб-фреймворки будут рекомендовать любую архитектуру, которую проще всего настроить с помощью их фреймворков.Они делают это, потому что это помогает новым пользователям опробовать фреймворк с минимальными усилиями и без переполнения списка рассылки.Кроме того, сообщество Java склонно придерживаться общего знаменателя, а не в полной мере использовать имеющуюся платформу, поэтому они часто рекомендуют полностью Java-решение.
Популярные архитектуры
Singleархитектуры процессов
С точки зрения чистой производительности, один процесс (возможно, многопоточный) со встроенной платформой, вероятно, дает наибольшую производительность, поскольку снижает большинство накладных расходов на обмен данными между тем, кто получает запрос, и тем, что производит ответ.
Безопасность : один процесс должен иметь все разрешений, необходимых для выполнения каждой отдельной задачи, которую он получает.В простых приложениях это может не быть проблемой.Однако возможно, что вы можете обслуживать несколько сервисов
Гибкость : возможно, не удается запустить несколько версий одной и той же платформы (например, для кода для разных частей вашего сайта требуются разные версии Java, Rails, Python и т. Д.).Более того, изменение вашей настройки для обслуживания некоторой работы на разных машинах становится болезненным (менее сложным при разделении на виртуальные хосты).
Архитектуры на основе подпроцесса
В модели CGI вы должнызаплатить цену за создание нового процесса для каждого запроса.Даже на машинах UNIX, где порождение процесса считается дешевым, 600 запросов в секунду убьют ваш сервер, если вы создадите процесс для каждого.
Безопасность : порождение дочерних процессов под разными учетными записями пользователей.ваш шлюз, вероятно, работает с довольно высокими привилегиями.
Гибкость : дополнительная гибкость для нескольких платформ, нескольких версий, подхода на нескольких языках, но вы все еще застряли на одной машине.
Распределенные архитектуры
Подход FastCGI / SCGI попытался решить проблему управления процессами CGI простым способом.Просто поддерживай процесс живым.Попросите шлюз связаться с этим процессом для обслуживания запроса.
Безопасность : поскольку шлюз не порождает процессы, обслуживающие запросы, шлюз может работать с гораздо меньшими включенными привилегиями.На самом деле, если он служит только в качестве шлюза и не выполняет никакой работы сам по себе, он может работать практически без каких-либо привилегий.
Гибкость : вы получаете еще большую гибкость, чем CGIмодель, потому что вы можете переслать запрос на любой компьютер в сети.
Заключение
Мне нравится FastCGI, потому что он дает мне высокую гибкость по цене (то есть запрос пересылается через сокет), который я могу себе позволить заплатить. Это не моя полная работа по администрированию систем. Я не разрабатываю все приложения, которые я размещаю. Это означает, что я ищу самое простое решение для хостинга, что бы я ни пытался разместить. FastCGI достаточно популярен для поддержки основных веб-серверов и популярных веб-фреймворков. Добавление другого приложения обычно сводится к установке и сопоставлению нужного URL-адреса с приложением через FastCGI.