Зачем нужны сервера приложений, если есть контейнеры сервлетов
Сервер приложений (Application Server) предоставляет полный стек Jakarta EE поверх Servlet API: распределённые транзакции (JTA), очереди сообщений (JMS), пулы соединений с расширенным управлением, корпоративную безопасность (LDAP, SSO, SAML) и кластеризацию с миграцией сессий.
Ключевые возможности сервера приложений
- Пулы соединений с БД — тестирование доступности СУБД, балансировка между несколькими СУБД, защита от утечек соединений по таймауту, автоматическое переподключение после сбоев
- JMS — встроенный сервер очередей сообщений с поддержкой кластеризации очередей, миграции при падении узла и гарантированного порядка обработки (Unit-of-Order)
- JTA — распределённые транзакции для обеспечения согласованности данных между несколькими СУБД и очередями
- Безопасность — множество провайдеров аутентификации (LDAP, SAML, SPNEGO/Kerberos), Single-Sign-On между приложениями, авторизация через XACML
- Масштабируемость — репликация сессий между дата-центрами, миграция экземпляров приложений, автоматический мониторинг
- Управляемость — единый AdminServer, одновременный запуск нескольких экземпляров, развёртывание без простоя (rolling deployment)
В 2026 году микросервисная архитектура с Spring Boot и встроенным Tomcat/Undertow заменила большинство сценариев использования серверов приложений. Однако в крупных корпоративных системах (банки, телеком) серверы приложений (WebLogic, WebSphere) всё ещё используются для legacy-систем.
На собеседовании: покажите, что понимаете trade-off: контейнер сервлетов проще и легче, но сервер приложений решает задачи enterprise-уровня «из коробки». В микросервисном мире эти задачи решаются иначе — через Spring Cloud, Kafka, Kubernetes.