Как уже отмечалось выше, наличие отдельного сервера приложений (и проблемы его выбора) характерно для архитектуры систем enterprise-класса (IBM Websphere Commerce, Oracle Commerce, SAP hybris). Для платформенных решений, использующих PHP (VirtueMart, Magento и 1С-Битрикс: Управление сайтом), некую параллель можно провести с конфигурированием способа запуска PHP-интерпретатора и его взаимодействия с выбранным web-сервером.
Прежде всего следует помнить, что существует несколько режимов запуска интерпретатора PHP – CGI, FastCGI или модуль к web-серверу. У каждого из этих режимов есть свои достоинства и недостатки, которые по-разному будут проявлять себя в зависимости от типовых условий эксплуатации системы и нагрузки на нее. Запуск в режиме CGI является самым медленным и иногда используется на разделяемом хостинге. Наиболее распространенным можно считать запуск PHP в качестве модуля к web-серверу. Именно такой режим обычно предпочитают новички и он вполне удобен для любых низконагруженных систем. Соответствующие модули существуют для разных web-серверов: Apache Web Server (mod_php), Microsoft IIS (до версии PHP 5.3).
Существует много попыток сравнения скорости и стабильности работы PHP-решений для разных конфигураций ("mod_php vs FastCGI" или "mod_php vs PHP-FPM" и т.д.). Сами разработчики Joomla/VirtueMart и Magento считают, что при использовании FastCGI достигаемые показатели производительности выше. Вместе с тем, при модульном запуске как правило уменьшается вероятность сбоев (ошибок обработки кода), а для тяжелых решений показатели производительности в большей степени зависят от применения различных техник кэширования php-кода. Поэтому для e-commerce систем, которые строятся на базе сложных и тяжеловесных библиотек, все-таки предпочтительнее использование модульного режима (mod_php для Apache HTTP Server). К таким «тяжеловесам» следует, в первую очередь, отнести любые решения на базе 1С-Битрикс: Управление сайтом. Использование FastCGI – обычно речь идет о менеджере php-fpm (FastCGI Process Manager) в паре с web-сервером Nginx или IIS FastCGI совместно с web-сервером Microsoft IIS – позволяет в ряде случаев действительно значительно повысить нагрузочную способность систем на платформах Magento и VirtueMart, а также является единственно возможным и для 1С-Битрикс: Управление сайтом при развертывании под IIS.
Может показаться, что FastCGI дает нам дополнительнительную гибкость, позволяя вообще выносить PHP-демон на другую машину, отделяя его от HTTP-сервера. Но аналогичная гибкость достигается и за счет выделения на фронте отдельного proxy-сервера, который маршрутизирует http-запросы и имеет свой механизм кэширования. Например, для кластерных конфигураций 1С-Битрикс: Управление сайтом в качестве proxy наилучшим образом подходит Nginx-сервер с активированным кэшированием.
Все сервера приложений, которые востребованы в платформах enterprise-класса (IBM Websphere Commerce, Oracle Commerce, SAP hybris), – это разнообразные J2EE-сервера, предназначенные для запуска апплетов (скриптов) на языке Java. Именно технологии Java лежат в основе всех трех рассматриваемых e-commerce платформ. Но у каждого из трех «китов» реализуется несколько различный подход к поддержке тех или иных серверов приложений. Так IBM предпочитает продвигать исключительно собственную технологию Websphere. SAP не имеет собственного продукта и ориентируется на продукты VMware. А Oracle поддерживает целый набор решений, как своих, так и сторонних. Итак, для названных e-commerce платформ возможно использование следующих серверов приложений.
- IBM Websphere Commerce: IBM WebSphere Application Server;
- Oracle Commerce: Oracle Weblogic, IBM WebSphere Application Server, JBoss EAP;
- SAP hybris: VMware vFabric tc Server, Apache Tomcat.
Функциональные возможности различных J2EE-серверов, хотя и различны, но в контексте использования для развертывания стандартных J2EE-апплетов, каковыми и являются компоненты e-commerce платформ, эти различия не так уж велики. Наибольшее значение они имеют в вопросах кэширования, кластеризации, непрерывности функционирования, мониторинга. Каждый из рассматриваемых серверов имеет свои инструменты и интегрируется определенным образом с другими продуктами соответствующего производителя (производителей).
Впрочем, если проводить детальный анализ характеристик разных J2EE-серверов, то окажется, что наиболее мощный и одновременно удобный продукт – это Oracle Weblogic Server. Он поддерживает очень богатый набор технологий, таких как Coherence, Oracle Traffic Director, InfiniBand и др. Обычно при сравнении Oracle Weblogic, например, с таким сервером как JBoss EAP много внимания уделяется стоимости лицензирования. Но для enterprise-систем разумно анализировать совокупную стоимость владения (TCO) на относительно протяженном интервале времени, а не разовую стоимость лицензирования. Кроме того, лицензионная политика вендоров, вообще говоря, может подразумевать включение необходимых лицензий на сервера приложений «в нагрузку» к приобретаемым лицензиям на e-commerce платформу. В любом случае, представляется достаточно примитивным подход, который не учитывает всех указанных факторов. Возвращаясь к сравнению TCO, можно заметить, что в настоящее время лидерство, похоже, следует отдать продукту VMware vFabric tc Server, который опережает другие решения за счет более эффективного использования процессора и памяти, а также благодаря очень гибким возможностям виртуализации на платформе VMware. Оптимальные же показатели TCO для продуктов Oracle можно получить при использовании комбинированного решения Exalogic, которое включает не только софт, но и специализированное оборудование.
В отношении IBM WebSphere Application Server существует проблема слабой документированности продукта и значительное «урезание» базового функционала, который затем нужно устанавливать отдельно в составе разнообразных дополнительных сервисов (продуктов). Вместе с тем, полная совокупность технологий от IBM также позволяет строить очень производительные системы с кластеризацией, резервированием, средствами мониторинга. Более того, некоторые функциональные возможности IBM WebSphere в сравнении с конкурирующими платформами совершенно уникальны и при разработке приложений не редко позволяют рассматривать эту платформу в качестве несомненного лидера. Но используя готовые e-commerce платформы, мы вынужденно ограничиваем себя и не используем все богатство архитектурных «изысков», доступных в том или ином окружении. Так что выбор конкретной технологии для сервера приложений в какой-то степени становится делом вкуса и пристрастий разработчиков и внедренцев конкретной e-commerce системы.