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

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

Сервер приложений: что это такое

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

Для веб-приложений главная задача сервера – обеспечить работу динамических страниц. Дополнительно framework включает в себя балансировку нагрузки, поддержку кластеризации, высокую отказоустойчивость, что позволяет разработчикам заниматься только бизнес-логикой. Они предназначены для многих корпоративных сайтов с высокими требованиями к надежности, к примеру, для приложений, реализующих схемы B2C, B2B, B2E. Application server обеспечивает не просто оперативный вывод данных, но и оптимизацию кода программы на любых устройствах, включая и в android приложениях.

Зачем нужен, где используется и что делает сервер приложений

Рассмотрим пользу и работу application server через наглядный пример. Допустим, вы владеете сайтом, в задачи которого входит предоставление информации пользователям по запросу. Потом решили расширить возможности ресурса, но с подключением ряда опций в браузерах мобильных устройств сайт просто перестал работать.

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

Для решения этой проблемы весь программный пул разбивается на 3 части:

  1. Графическую оболочку, которая будет инсталлироваться на мобильные устройства.
  2. Код программы с размещением на сервере.
  3. Базы данных (далее − БД) и средства управления ими.

Пользователь ставит у себя на планшете, допустим, только графическую часть. Она уже направляет запросы на сервер. Данные обрабатываются, а при помощи серверных приложений генерируется код, который затем отправляется обратно в клиентскую программу. Можно сделать вывод, что сервер для запуска приложений обеспечивает выполнение любого кода, который был направлен из графического компонента.

Примеры конфигураций серверов для приложений

Все варианты, указанные в таблице №1, могут применяться по отдельности или в разных комбинациях друг с другом. Каждое окружение имеет разные требования, поэтому нет единой верной конфигурации.

Таблица №1. Примеры конфигураций серверов для приложений

Вид конфигурацииОписаниеПример использованияПлюсыМинусы
1Все находится на одном сервереВ этом случае все окружение будет на сервере. Это сервер БД, web server и application server. Необходим для быстрого развертывания приложения. При этом мало будет возможностей в плане масштабируемости и изоляции компонентов. Простота в использовании. Софт и БД используют одинаковые ресурсы сервера, а это снижает производительность.Трудно выполнять горизонтальное масштабирование.
2Dedicated server баз данныхСУБД может быть отдельно от другого окружения, чтобы убрать конкуренцию за ресурсы сервера между БД и приложениями. Дополнительно выделенный сервер позволяет увеличить безопасность, убрав БД из DMZ, интернета.Аренда сервера для приложения подходит для быстрого развертывания приложения, но при этом помогает убрать проблему борьбы софта и БД за одинаковые системные ресурсыНет конкуренции за ресурсы сервера. Есть вертикальное масштабирование каждого компонента. Можно добавлять дополнительные ресурсы к нужному серверу. Если верно настроить работу сервера, то можно повысить безопасность.Установка более сложная, чем если использовать только один сервер. Могут быть проблемы с производительностью, если пропускная способность недостаточна для передачи данных или сетевое соединение между 2-мя серверами имеет длительное время отклика.
3Балансировщик нагрузки Обратный прокси используют для увеличения производительности за счет распределения нагрузки между разными серверами. Если один упадет, то другие серверы будут обрабатывать входящий трафик, пока упавший сервер снова не будет работать. Примеры софта − HAProxy, Nginx, и Varnish.Полезен для серверного окружения, которому нужно провести масштабирование путем добавления новых серверов (горизонтальное масштабирование). Ресурсы окружения можно увеличить добавлением новых серверов. Защита от DDOS-атак за счет установления лимита клиентских соединения до нужной частоты и количества.Может стать «больным» местом в производительности, если его неправильно настроить или он испытывает нехватку ресурсов. Появляются сложности, которые нужно устранить администратору. Например, работа с софтом из-за sticky session. 
4HTTP AcceleratorНеобходим для снижения времени отклика на запросы пользователя. При этом используются разные методы.Ответы от web server и application server кэшируются в памяти, а после при других запросах на тот же веб сервер для приложения, они быстрее обрабатываются. Примеры такого программного обеспечения − Varnish, Squid, Nginx.Полезно использовать для динамических web server с тяжелым контентом или большим количеством файлов, к которым необходим одновременный доступ. Увеличивается производительность сайта. Можно использовать в виде балансировщика нагрузки. Защита от DDOS атак.Нужны специальные настройки для повышения производительности. Если запросы от пользователей не предполагают использование кэширования данных, то HTTP Accelerator просто снижает производительность сервера. 
5Репликация БД по схеме Master-Slave Схема предполагает наличие одного ведущего и 1+ вспомогательных узлов. Все записи направляются на ведущий узел, а вот запросы на чтение перераспределяются между всеми узлами.Помогает увеличить производительность софта в части обслуживания запросов на чтение из БД. Повышение производительности чтения информации из базы данных.Можно повысить производительность за счет использования ведущего узла только для записи. Сервер для реализации прикладных клиентских приложений, работающий только с БД, должен иметь механизм определения узлов, на которые придется направлять запросы клиентов на чтение и запись. Обновления вспомогательных узлов асинхронны. Есть риск получения не самых свежих данных при запросе. Если главный узел не работает, то данные по запросам не получить, пока не будет исправлена ошибка (при этом нет встроенных резервных средств).

Блок вопрос-ответ

В чем отличие веб-сервера от сервера приложений?

Web server – сервер, который занимается обслуживанием статических веб-страниц для пользователей через HTTP. А сервер приложений выполняет некоторые прикладные программы (на нем держится бизнес-логика системы). Он содержит длительно работающие пакетные процессы, службы interop, которые не предназначены для использования человеком (RPC, JSON и др.), отвечает за создание динамического контента посредством выполнения кода на стороне сервера (JSP, Java servlet API или EJB).

Как работает сервер приложений на примере php-приложения?

Если объяснять на пальцах, то на примере php-приложения это выглядит таким образом:
Запрос => Web server (nginx) => Сервер приложений (php-fpm, например) => БД (если этого требует скрипт) => Сервер приложений => Web server => Ответ.

Удобно ли настраивать сервер приложений?

Изменения в настройках application server, как изменение сервера БД или системных настроек, могут проводиться централизованно.