Ответ 1
Интересный вопрос. Это только мой взгляд на эту тему, поэтому возьмите все с солью. Я иногда использовал и управлял приложениями, используя как контейнеры сервлетов, так и встроенные серверы. Я уверен, что по-прежнему существует много веских причин для использования контейнеров сервлетов, но я попытаюсь просто сосредоточиться на том, почему они менее популярны сегодня.
Краткая версия: контейнеры сервлетов отлично подходят для управления несколькими приложениями на одном хосте, но не кажутся очень полезными для управления только одним приложением. В облачных средах одно приложение на виртуальную машину кажется предпочтительным и более распространенным. Современные рамки хотят обладать совместимостью, поэтому переход на встроенные серверы.
Поэтому я считаю, что облачные сервисы являются основной причиной отказа от контейнеров сервлетов. Подобно тому, как контейнеры сервлетов позволяют управлять приложениями, облачные службы позволяют управлять виртуальными машинами, экземплярами, хранилищем данных и многое другое. Это звучит сложнее, но с облачными средами произошел переход на отдельные машины для приложений. Это означает, что вы можете часто обрабатывать всю машину, как приложение. Каждое приложение работает на машине с соответствующим размером. Облачные экземпляры могут всплывать и исчезать в любое время, что отлично подходит для масштабирования. Если для приложения требуется больше ресурсов, вы создаете больше экземпляров.
Выделенные серверы, с другой стороны, обычно мощные, но с фиксированным размером, поэтому вы запускаете несколько приложений на одной машине, чтобы максимально использовать ресурсы. Управление десятками приложений - каждый со своими конфигурациями, веб-серверами, маршрутами и соединениями и т.д. - не забавно, поэтому использование контейнера сервлетов помогает сохранить все управляемое и само по себе. Тем не менее, это сложнее. Контейнеры сервлетов в облаке не кажутся очень полезными. Они должны быть настроены для каждого маленького экземпляра, не принося большого значения, поскольку они управляют только одним приложением.
Кроме того, облака прохладны, а облачные вещи скучны (если мы все еще верим в шумиху). Многие фреймворки пытаются масштабировать по умолчанию, так что их можно легко развернуть в облака. Встроенные серверы быстро развертываются и запускаются, поэтому они кажутся разумным решением. Контейнеры сервлета обычно поддерживаются, но требуют более сложной настройки.
Некоторые другие моменты:
- Встроенный сервер может быть оптимизирован для фреймворка или лучше интегрирован с инструментами фреймворков (например, консоль воспроизведения).
- Не все облачные среды поставляются с настраиваемыми машинными изображениями. Вместо написания сценариев инициализации для загрузки и настройки контейнеров сервлетов использование выделенного программного обеспечения для развертывания облачных приложений намного проще.
- Мне еще предстоит найти установку Tomcat, которая не приветствует вас с ошибкой пространственного пространства perm каждые несколько повторных развертываний вашего приложения. Взятие немного дольше (перезапуск) встроенных серверов не представляет проблемы, когда вы можете почти мгновенно переключаться между этапами создания и производства без какого-либо простоя.
- Как уже упоминалось в этом вопросе, для конечного пользователя очень удобно просто запустить приложение.
- Встроенные серверы являются портативными и удобными для разработки. Сегодня все быстро, прототипы и MVP должны быть созданы и поставлены как можно быстрее. Никто не хочет тратить слишком много времени на создание среды для каждого разработчика.