在远程计算机上轻松部署基于jvm的Web服务器

问题描述 投票:0回答:2

我想知道使用java或kotlin部署Web服务器的最简单方法是什么。使用nodejs,我只需将所有服务器代码保存在远程计算机上,然后使用sshfs插件为vscode编辑它。对于基于jvm的服务器,这似乎并不容易,因为intellij不提供远程编辑支持。是否有基于jvm的服务器的方法,允许快速迭代开发周期?

java kotlin server development-environment remote-server
2个回答
0
投票

您是否必须将服务器代码保存在远程计算机上?如何在本地开发和测试它,只有当你想在实际的部署站点上测试它,然后部署它?

我曾经尝试过使用带有IntelliJ的SSH-FS,而且由于IntelliJ构建缓存的方式,性能非常糟糕。缓存正在进行中,但15分钟后我放弃了。没有缓存和智能提示的IntelliJ将接近常规编辑器。

在我的专业环境中,我也会不时使用Unison:https://www.cis.upenn.edu/~bcpierce/unison/。我将它配置为仅复制代码而不是生成的源。它大部分时间都运行良好,但它往往有它的怪癖,可以让你浪费半天的时间进行调试。

总而言之,我看到了这样的选择:

  1. 在本地开发和测试,并避免频繁部署到远程计算机。
  2. VSCode与sshfs插件,因为为什么不,如果它足够你nodejs
  3. 像Unison这样的同步工具。

有关IntelliJ支持的SSHFS的相关答案(几年前,但我相信,仍然适用):


0
投票

专业部署不会在远程服务器上保留源代码,原因如下:

  1. 它不太安全。如果您可以通过编辑源代码和重新编译来更改正在运行的应用程序(或者即使自动部署编辑),攻击者也可以更容易地执行相同操作。
  2. 它不太稳定。在编辑源文件或重新编译时尝试访问您的应用程序的用户会发生什么?他们最多得到一个错误页面;在最坏的情况下,他们可能会得到垃圾回复,甚至泄露客户数据。
  3. 它不太可测试。如果您编辑源代码并立即部署,您如何测试以确保您的应用程序正常工作?直接向您的用户投掷未经测试的错误代码是非常不专业的。
  4. 它的可扩展性较差。如果您可以将源代码保留在服务器上,那么根据定义,您只有一台服务器。 (或者,稍微好一点,共享一个公共文件系统的少量服务器。)但这不是很可扩展:您只能在一个地理位置明确托管,因此容易受到各种单点故障的影响。专业的Web规模部署需要在应用程序的每个级别进行地理分布和冗余。

如果您想要“快速迭代开发周期”,那么最好的方法是使用本地开发环境,可能涉及本地VM(使用Vagrant管理的东西)或本地容器(使用Docker之类的东西管理)。 VM和容器都提供了将包含源代码的本地目录映射到正在运行的应用程序服务器的机制。

© www.soinside.com 2019 - 2024. All rights reserved.