Открыть сервис

Сервер приложений

Сервер приложений — это программная платформа, предназначенная для развертывания, выполнения и администрирования серверных приложений, обычно в многоуровневой архитектуре «клиент — сервер». В отличие от веб-сервера, который в основном обслуживает статические страницы и простые запросы, сервер приложений предоставляет среду для выполнения бизнес-логики, управления транзакциями, безопасностью, доступом к базам данных и взаимодействием с другими компонентами информационной системы.

История

Концепция сервера приложений возникла в 1990-х годах в связи с усложнением корпоративных информационных систем. Ранние решения, такие как Netscape Application Server и WebLogic (разработанный компанией BEA Systems), предоставляли средства для создания динамических веб-сайтов и интеграции с базами данных.

Ключевым этапом стало принятие спецификации Java 2 Platform, Enterprise Edition (J2EE) в 1999 году. Она определила стандартный набор API (Servlets, JSP, EJB, JMS, JTA) и модель компонентов для создания распределенных приложений на языке Java. Это привело к появлению таких продуктов, как IBM WebSphere Application Server, Oracle WebLogic Server (позже приобретенный Oracle) и Red Hat JBoss Application Server.

В 2000-х годах с ростом популярности платформы Microsoft .NET появился её собственный сервер приложений — Internet Information Services (IIS) в сочетании с ASP.NET и Windows Communication Foundation (WCF). В этот же период развивались серверы приложений для других языков, например, Zope для Python.

С середины 2010-х годов с распространением микросервисной архитектуры и контейнеризации (Docker, Kubernetes) традиционные монолитные серверы приложений частично уступили место более легковесным решениям, таким как сервлет-контейнеры (Apache Tomcat, Jetty) и фреймворки для создания микросервисов (Spring Boot, Quarkus). Однако полнофункциональные серверы приложений по-прежнему широко используются в крупных корпоративных системах, где требуется строгая поддержка стандартов и централизованное управление.

Архитектура и основные функции

Сервер приложений обычно располагается между веб-сервером (или клиентским приложением) и сервером баз данных. Он принимает запросы от клиентов, выполняет необходимую бизнес-логику, обращается к данным и возвращает результат.

Управление жизненным циклом приложений

Сервер предоставляет среду для развертывания (деплоя) приложений в виде архивов (WAR, EAR для Java; DLL для .NET). Он обеспечивает их запуск, остановку, мониторинг и обновление без остановки всей системы (горячее развертывание).

Управление транзакциями

Критически важная функция для приложений, работающих с базами данных. Сервер приложений поддерживает распределенные транзакции (по стандарту X/Open XA), гарантируя атомарность, согласованность, изолированность и долговечность (ACID) операций, выполняемых над несколькими ресурсами (например, разными базами данных или очередями сообщений).

Безопасность

Сервер приложений реализует аутентификацию и авторизацию пользователей. Он интегрируется с корпоративными каталогами (LDAP, Active Directory) и поддерживает различные механизмы безопасности, включая протоколы Kerberos, SSL/TLS и ролевое управление доступом (RBAC).

Масштабирование и балансировка нагрузки

Для обеспечения высокой производительности сервер приложений поддерживает пулы соединений (connection pooling) с базами данных и пулы потоков (thread pooling) для обработки запросов. Он может работать в кластере, распределяя нагрузку между несколькими физическими или виртуальными узлами, а также обеспечивать отказоустойчивость.

Связь с другими системами

Сервер приложений предоставляет API для асинхронного обмена сообщениями (JMS, MSMQ), веб-сервисов (SOAP, REST) и интеграции с унаследованными системами (через адаптеры).

Классификация

Серверы приложений можно классифицировать по нескольким признакам.

По поддерживаемым технологиям и языкам программирования

По масштабу и назначению

По лицензии

Примеры популярных серверов приложений

Apache Tomcat

Сервлет-контейнер с открытым исходным кодом, разрабатываемый Apache Software Foundation. Является де-факто стандартом для развертывания веб-приложений на Java. Поддерживает сервлеты, JSP, EL и WebSocket. Не поддерживает EJB и JTA.

WildFly (бывший JBoss Application Server)

Полнофункциональный сервер приложений с открытым исходным кодом, разрабатываемый Red Hat. Поддерживает все спецификации Jakarta EE. Отличается модульной архитектурой и возможностью тонкой настройки.

Oracle WebLogic Server

Проприетарный сервер приложений корпоративного класса. Обеспечивает высокую производительность, масштабируемость и надежность. Широко используется в крупных финансовых и государственных организациях. Поддерживает как Java EE, так и Oracle Database.

IBM WebSphere Application Server

Еще один проприетарный сервер корпоративного класса. Интегрируется с продуктами IBM (Rational, DB2, MQ). Предоставляет мощные средства для управления и мониторинга.

Internet Information Services (IIS)

Веб-сервер и сервер приложений от Microsoft. Входит в состав операционных систем семейства Windows Server. Поддерживает ASP.NET, ASP Classic, PHP и другие технологии через расширения (FastCGI).

Применение

Серверы приложений используются в самых разных областях, где требуется надежное выполнение сложной бизнес-логики:

Критика

Традиционные серверы приложений, особенно корпоративные, подвергаются критике за излишнюю сложность и монолитность. Развертывание и настройка таких серверов требуют высокой квалификации. Время запуска и потребление памяти могут быть значительными. С развитием микросервисной архитектуры и контейнеризации многие разработчики предпочитают использовать легковесные контейнеры (Tomcat, Jetty) или вовсе отказываются от сервера приложений в пользу встроенных серверов (например, Spring Boot использует встроенный Tomcat или Netty).

Источники

  1. Спецификация Jakarta EE (ранее Java EE) — Eclipse Foundation.
  2. Документация Apache Tomcat — Apache Software Foundation.
  3. Документация WildFly — Red Hat.
  4. Документация Oracle WebLogic Server — Oracle Corporation.
  5. Документация Internet Information Services (IIS) — Microsoft Corporation.
  6. «Java EE 7 Essentials» — Arun Gupta, O'Reilly Media.
  7. «Pro Spring Boot 3» — Felipe Gutierrez, Apress.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →