Gymterview
middle

Зачем нужны сервера приложений, если есть контейнеры сервлетов

Сервер приложений (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.