Простое развертывание веб-сервера на основе jvm на удаленной машине - PullRequest
0 голосов
/ 08 января 2019

Я хотел знать, какой самый простой способ развернуть веб-сервер, созданный с использованием Java или Kotlin. С nodejs я просто сохраняю весь код сервера на удаленном компьютере и редактирую его с помощью плагина sshfs для vscode. Для серверов на базе jvm это не так просто, так как intellij не предоставляет поддержку удаленного редактирования. Существует ли метод для серверов на основе jvm, который позволяет быстрый итеративный цикл разработки?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Профессиональное развертывание не сохранит исходный код на удаленном сервере по нескольким причинам:

  1. Это менее безопасно. Если вы можете изменить запущенное приложение, отредактировав исходный код и перекомпилировав (или даже если изменения развернуты автоматически), злоумышленнику будет гораздо проще сделать то же самое .

  2. Это менее стабильно. Что происходит с пользователями, которые пытаются получить доступ к вашему приложению во время редактирования исходных файлов или перекомпиляции? В лучшем случае они получают страницу с ошибкой; в худшем случае они могут получить мусорную реакцию или даже утечку данных клиента.

  3. Это менее проверяемое. Если вы редактируете свой исходный код и сразу же развертываетесь, как вы тестируете, чтобы убедиться, что ваше приложение работает? Бросать непроверенный баг-код прямо в ваших пользователей крайне непрофессионально.

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

Если вам нужен «быстрый итеративный цикл разработки», то лучший способ сделать это - локальная среда разработки , которая может включать локальную виртуальную машину (управляемую чем-то вроде Vagrant) или локальный контейнер (управляемый чем-то вроде Docker). Виртуальные машины и контейнеры предоставляют механизмы для сопоставления локального каталога, содержащего ваш исходный код, с работающим сервером приложений.

0 голосов
/ 22 апреля 2019

Нужно ли хранить свой серверный код на удаленной машине? Как насчет его разработки и тестирования локально, и только если вы хотите протестировать его на реальном сайте развертывания, затем разверните его?

Однажды я пытался использовать SSH-FS с IntelliJ, и из-за того, как IntelliJ создает свой кеш, производительность была ужасной. Кеширование продолжалось, но через 15 минут я сдался. А IntelliJ без кеширования и умных подсказок был бы близок к обычному редактору.

В моей профессиональной среде я также время от времени использую Unison: https://www.cis.upenn.edu/~bcpierce/unison/. Я настроил его так, чтобы копировать только код, а не сгенерированные источники. В большинстве случаев он работает довольно хорошо, но у него есть свои причуды, которые могут потратить впустую полдня на его отладку.

Подводя итог, я вижу такие варианты:

  1. Локальная разработка и тестирование, избегая частых развертываний на удаленной машине.
  2. VSCode с плагином sshfs, потому что почему бы и нет, если вам достаточно для nodejs?
  3. Инструмент синхронизации, такой как Unison.

Соответствующие ответы по SSHFS от службы поддержки IntelliJ (несколько лет, но, я думаю, до сих пор верны):

...