«Аннотация Сервер приложений является одной из ключевых составляющих в многозвенной архитектуре приложений. Он обеспечивают масштабируемую, высокопроизводительную инфраструктуру, ...»
СРАВНИТЕЛЬНЫЙ АНАЛИЗ СЕРВЕРОВ приложений
FILLIN "Авторы статьи"Шульгин Д.С., аспирант кафедры информатики СПбГУ, [email protected]
Аннотация
Сервер приложений является одной из ключевых составляющих в многозвенной архитектуре приложений. Он обеспечивают масштабируемую, высокопроизводительную инфраструктуру, предоставляет модель разработки и развертывания, а также различные программные компоненты, значительно облегчающие процесс разработки. Говоря о Java Enterprise, существует несколько вендоров, предоставляющих свои продукты с поддержкой Java EE 6. Каждый из них был по-разному спроектирован и разработан, имеет разную стратегию развития и поддерживает разные компоненты спецификации. Это позволяет проводить сравнение между серверами приложений, оценивать эффективность, надежность и скорость их работы.
В данной статье будут рассмотрены наиболее распространенные сервера приложений и проведено сравнение их характеристик, общее сравнение с целью в дальнейшем выделить критерии их работы с компонентами бизнес-логики приложений.
Введение
Вне контекста приложений, которые могут быть развернуты на серверах, сравнить их можно по некоторым общим критериям, которые будут рассмотрены в данной обзорной статье. Если сравнивать сервера, принимая во внимание зависимость от развернутого на них приложения, то основным составляющим будут бизнес-объекты, входящие в структуру приложения. В составной критерий в таком случае войдет тип объекта, его размер, количество полей и бизнес-методов, а также способы управления сервера жизненным циклом этого объекта. В данном случае речь идет об объектах Enterprise JavaBeans, входящих в состав Java EE, для работы с которыми сервер приложений должен иметь в своем составе контейнер EJB.
Рассмотрим наиболее распространенные сервера приложений и проведем их общее сравнение с целью в дальнейшем выделить критерии сравнения их работы с компонентами бизнес-логики приложений. В Таблице 1 перечислены сервера приложений, которые будут рассмотрены, и их поддержка Java EE – полная или вэб-профиль.
Application Server Version Java EE Compatibility
Oracle Glassfish 3.1.2.2 Full
Oracle WebLogic 12c(12.1.1) Full
JBoss AS 7.1.
1 Web Profile
IBM WebShepre 3.0.0.3 Full
Apache TomEE 1.5.1 Web Profile
Таблица 1: JavaEE Compability [1]
Oracle Glassfish Server
Когда Oracle овладел всеми продуктами Sun Microsystems, активнее стала использоваться стратегия разделения на бесплатное и платное решение. Также произошло и с Glassfish [2]: Glassfish Server Open Source Edition & Oracle Glassfish Server. Open Source версия позиционируется как лучший бесплатный сервер приложений и полностью поддерживает Java EE 6. Коммерческая версия расширяет функционал бесплатной версии поддержкой Oracle и некоторыми интересными функциями, такими как Active Redeploy - возможность взаимодействовать с приложением во время его переразвертывания.
Примечательно, что в состав Glassfish входит Apache Tomcat в качестве контейнера сервлетов.
Говоря о продуктах Oracle, стоит упомянуть и Oracle WebLogic Server [3], зародившийся еще в 1997м году. Последняя версия 12 также обеспечивает полную поддержку Java EE 6.
Представители Oracle утверждают, что оба этих сервера приложений важны, т.к. их предназначение несколько разнится: Glassfish больше рассчитан на легковесные приложения, в то время как WebLogic лучше подходит для приложений с большим количеством транзакций и работы с базами данных Oracle.
JBoss AS
Продукт компании Red Hat. Основанный на Java, JBoss [4] имеет лишь вэб-профиль лицензию JavaEE6: например, нет поддержки JNDI (Java Naming and Directory Interface). Однако, поддержки этой и других технологий нет в Open source версии JBoss AS. Покупая лицензию Red Hat, можно получить поддержку необходимой технологии поверх JBoss AS. JBoss Enterprise Application Platform – это платформа, с настройкой производительности под высоко нагруженные, масштабируемые приложения. Помимо поддержки Java EE, JBoss EAP предоставляет и различные инструменты для управления. Например, JBoss Operating Networks, позволяющий администрирования все окружения для тестирования и разработки.
IBM WebSphere
Флагман бренда WebSphere [5] компании IBM. Также разделен на коммерческую версию и с открытым исходным кодом. Обе версии обеспечивают полную поддержку Java EE 6. Основан на Apache Geronimo, в состав которого входит Apache Tomcat в качестве контейнера сервлетов. Geronimo, к слову сказать, также полностью поддерживает Java EE 6.
В качестве еще одного плюса в пользу этого сервера приложений - русскоязычная документация с примерами для актуальной версии самого сервера и используемых технологий.
Apache TomEE
Осенью 2011го увидел свет новый продукт от Apache – TomEE [6]. JavaEE Web Profile on Tomcat. Поддержка EJB в нем осуществляется за счет Open EJB - контейнера EJB с открытым исходным кодом по лицензией Apache 2.0. Ранее Open EJB уже интегрировался в другие сервера приложений, например, тот же Geronimo. Open EJB в текущей версии 3.1.4 полностью поддерживает EJB 3.0 и частично 3.1. В октябре 2011 TomEE получил сертификат Oracle как совместимая реализация Java EE 6 (вэб-профиль).
TomEE выступает как надстройка на Tomcat. Стоит сказать, что решение, наподобие TomEE уже существовали. Например, TCat, также основанный на чистом Tomcat и осуществляющий поддержку EJB за счет Open EJB. Однако, это платный продукт, в то время как Apache предоставляет бесплатное решение.
Сравнение
Переходя к сравнению серверов, стоит сказать, что на данный момент существует уже немало работ, однако, зачастую они направлены на выделение плюсов того или иного сервера. В связи с этим было принято решение произвести собственные независимые исследования, а затем сравнить их с существующими. Выделим критерии, по которым можно сравнить сервера приложений без развертывания на них самих приложений: объем дистрибутива, объем занимаемого места на диске, время старта, объем занимаемой процессом java.exe памяти процессора.
Для измерений была взята машина со следующими характеристиками:
OС Windows 7 Professional, SP1, 64bit, build 6.1.7601 (Win7 RTM)
Процессор Intel(R) Core(TM) i5-2430M, 2.40GHz
4GB оперативной памяти
Помимо общих следует описать и аппаратные характиристики, также влияющие на результаты измерений. Они были установлены с помощью программы диагностики и тестирования AIDA64 Extreme Edition v2.2.1800:
IDE Controller Intel(R) Mobile Express Chipset SATA AHCI Controller
Disk Drive TOSHIBA MK6476GSX (640 GB, 5400 RPM, SATA-II)
Disk File System NTFS
Memory Type DDR3 SDRAM
Memory Speed DDR3-1333 (667 MHz)
DRAM Manufacturer Samsung
Serial Number 61E2CAC5h (3318407777)
Проведенные тесты памяти на скорость чтения и записи показали следующие результаты:
Memory Read Speed 9817 MB/s
Memory Write Speed 10307 MB/s
Memory Copy Speed 9141 MB/s
Размер дистрибутива
Сервер приложений Размер (mb)
Oracle Glassfish 54.6(32.7*)
JBoss AS 127
IBM WebShepre 106
Apache TomEE 27.1
Таблица 2. Размер дистрибутива.
* - Web Profile
Объем занимаемого дискового пространства
Сервер приложений Размер (mb)
Oracle Glassfish 105(60*)
JBoss AS 78
IBM WebShepre 2200
Apache TomEE 31
Таблица 3. Объем занимаемого дискового пространства после установки.
* - Web Profile
Время развертывания
Сервер приложений Время старта (мс)
Oracle Glassfish 5756
JBoss AS 2218
IBM WebShepre >40 000
Apache TomEE 734
Таблица 4. Время старта сервера.
Память, используемая процессом java.exe
Сервер приложений Java.exe (mb)
Oracle Glassfish 119
JBoss AS 83
IBM WebShepre 150
Apache TomEE 53
Таблица 5. Память, используемая процессом java.
exe.
Дальнейшее сравнение невозможно без попытки развернуть на сервере какое-либо приложение. Т.к. исследование проводится в контексте технологии Enterprise JavaBeans, то в рамках сравнения на каждом из серверов приложений были развернуты тестовые приложения, представляющие собой имплементации типов EJB 3.1: Singleton, Stateless и Statefull бины. Эти примеры предоставляет официальный сайт Apache TomEE[6].
Сервер приложений Singleton (мс) Stateless (мс) Statefull (мс)
Oracle Glassfish 970 499 216
JBoss AS 290 281 120
Apache TomEE 234 196 115
Таблица 6. Время развертывания приложений (мс)
Заключение
Подводя итог сравнительному анализу, можно выделить Oracle Glassfish Server: два дистрибутива для full support и web profile, сравнительно быстрый старт и потребление ресурсов, поддержка Oracle. Также все большую популярность набирает продукт от Apache (TomEE и OpenEJB), во многом за счет открытого исходного кода и быстродействия. Безусловно, стоит отметить и тот факт, что IBM WebSphere - это единственный из представленных полностью платный сервер приложений, чтобы пользоваться им полноценно в любом случае придется приобрести лицензию.
На данном этапе выбранные критерии для сравнения серверов приложений соответствуют интуитивным представлениям об эффективности их работы с точки зрения управления бизнес-объектами. Сравнительный анализ стоит расширить результатми нагрузочного тестирования приведенных тестовых приложений под управлением рассматриваемых серверов в зависимости от их конфигурации. Проведение исследований по сравнению конфигураций серверов приложений, выделение общего множества, влияющего на быстродействие того или иного сервера, а также введение критерия оптимальности стратегии конфигурации является целью моей дальнейшей работы.
Литература
Поддержка JAVA EE серверами приложений JavaEE Compability [Электронный ресурс] // http://java.sun.com/javaee/overview/compatibility.jsp [дата просмотра: 02.04.2013]
Oracle Glassfish Server [Электронный ресурс] // http://glassfish.java.net/ [дата просмотра: 02.04.2013]
Oracle Weblogic Server [Электронный ресурс] // http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html [дата просмотра: 02.04.2013]
JBoss AS [Электронный ресурс] // http://www.jboss.org/jbossas [дата просмотра: 02.04.2012]
IBM Websphere [Электронный ресурс] // http://www-01.ibm.com/software/ru/websphere/ [дата просмотра: 02.04.2013]
Apache TomEE [Электронный ресурс] // http://openejb.apache.org/ [дата просмотра: 02.04.2013]
Application Servers Benchmark [Электронный ресурс] // http://agoncal.wordpress.com/2011/10/20/o-java-ee-6-application-servers-where-art-thou/ [дата просмотра: 02.04.2013]
Survey Results: Java EE Containers [Электронный ресурс] // http://zeroturnaround.com/blog/java-ee-container-heaven-hell-survey-results/ [дата просмотра: 02.04.2013]
Оценивая серверы приложений J2EE // Interface Ltd. — 2001
Буди Карниван. Программирование web-приложений на языке Java // Лори. — 2009. — 880с.
Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри. Технологии программирования на Java 2. Распределенные приложения // Бином-пресс. — 2009. — 466с.