LINUX.ORG.RU

Стек для Java-приложения в 21 веке

 , ,


0

4

Я застрял в прошлом. Пишу веб-приложения на сервлетах (ну т.е. сверху там и Spring MVC может быть и Wicket и JSP, но снизу сервлеты), пакую их в .war, пускаю в томкате. Приложений около десятка, все работают с двумя базами (ну т.е. баз две, какие-то работают с одной, какие-то со второй, какие-то с обоими).

Что я имею:

  1. Унифицированный конфиг. Все значения определяю в server.xml в глобальном JNDI, к которому линкую приложения. Общий пул соединений с базой.
  2. Унифицированные логи. Хотя раньше делал логгирование в каждом приложении отдельно, удобней пользоваться великим и ужасным java.util.logging-ом.
  3. Parallel deployments. Очень крутая фича. Выкатываешь новую версию, ждёшь, пока на старой сессии не истекут, убираешь старую, никто ничего не заметил. Ну если надо, можно сразу старую убрать, тогда вроде сессия вылетит, надо перезайти. Наверное можно и без перезахода это всё сделать.
  4. Можно на венде одним движением руки создать сервис. На линуксе тоже актуально, если хочется запускаться от рута и потом сбрасывать привилегии (например для биндинга на 80-й порт).
  5. Всё в одном месте, порты там указать, ключи из keystore подгрузить для https, всё уже в конфигах, всё написано.
  6. На всё про всё одна JVM, за все накладные расходы платишь один раз.

Но по сути это всё несколько устарело. Java EE сдохла, все пишут на спринге. Но как реплицировать подобное окружение, я не совсем понимаю.

Вроде как нынче пишут всё в толстых жарах, куда засовывают HTTP-сервер (тот же томкат).

Получается, что мне нужно запускать десять JVM-ов? Не очень хорошо с точки зрения потребления ресурсов. Тем более, что Java не отдаёт память.

Будет десять тред-пулов? Опять же не очень хорошо. Сейчас тред пул один (в смысле два), видно, сколько коннектов надо. Оцениваешь все приложения в сумме. А так придётся каждое приложение исследовать и давать огромный запас, чтобы потом в СУБД разрешить столько соединений. Вроде тоже не очень хорошо с точки зрения потребления ресурсов. Тем более, что коннект к базе данных порой по 10 секунд висит, пока соединит.

В каждом приложении свои настройки логов будут. Получается нужен ещё какой-то сервис, куда сваливать все логи, чтобы хотя бы error-ы в одном месте видеть.

Всякие сервисы надо будет делать самому, причём для каждого приложения отдельно. Гемор.

Придётся ставить реверсивный прокси перед приложениями. Кстати какой? Чтобы позволял деплоить без даунтайма.

И причём не понятно, зачем всё это. Собственно тред про это - посоветуйте, как это всё нынче делают и зачем это всё делают? А то вроде томкат старый, но чем его заменять - не понимаю.

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

★★★★★

Что я имею:

Ты свой софт один пишешь?

alpha ★★★★★
()
Ответ на: комментарий от menangen

Для десктопа (Windows 10) и мобилок он теперь общий и называется Bedrock Edition.

EXL ★★★★★
()
Ответ на: комментарий от menangen

Можно поподробнее?

Прямо сейчас в моем проекте это проявятся в том что у нас подключены статические анализаторы генирирующие ворнинги которых игнорируются. Люди привыкают к информационному шуму, теперь им закомитеть 30 ворнингв будет ок. Разумеется разработчики не злодеи, в правленом коде уже было 28 ворнингов, в ходе рааботы случайно добавилась еще пара и теперь 30, а в следующий раз будет уже 32. Зачем тогда нужно было внедрять внешние статические анализаторы? Потому что «хорошие практики».

Еще карго-культ не предполагает аргументировать выбор, т.е. вместо поиска решения и рассуждений будет фраза «у нас так принято» или «так написано».

Это в java api/http

На этом уровне не скажу, карго-культ проявятся в принятии решений и невнятной аргументации в пользу сделанного выбора.

Aber ★★★★★
()
Ответ на: комментарий от abcq

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

Так микросервисы и заточены под очень неумные прокладки, так сказать способ запилить сложный софт полсотней студентов.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.