开发Web服务器和生产Web服务器有多接近?

5
大多数Python框架都会有一个开发Web服务器,但会警告不要将其用作生产服务器。它们与其生产环境相比有多大的差异?
我还没有确定要选择哪个框架,更不用说使用什么生产服务器了,所以很难将其固定为“比较开发服务器x和生产服务器y”。因此,让我把问题变得更加精确:在您以前使用Python框架的经验中,一旦在开发服务器上开发完成应用程序,您需要花费多少时间才能将其运行到生产系统上?或者,您是跳过开发服务器,直接在更像生产环境的服务器上开发应用程序的吗?
5个回答

5
较低的环境应该尽可能地与生产环境相匹配,只要有可用的资源。这适用于所有开发工作,无论它们是基于Python还是基于Web的。实际上,大多数组织不愿意花费那种金额。在这种情况下,请尝试将至少直接位于生产环境下方的环境尽可能接近生产环境。
需要注意的一些变量包括:
- 生产环境中通常有多台机器(应用服务器、数据库服务器、Web服务器、负载均衡器、防火墙等)。请牢记这些。 - 操作系统 - CPU数量。从一个CPU较低的环境转移到多核心生产环境可能会暴露未经测试的多线程问题。 - 负载均衡。许多时候,较低的环境没有进行负载均衡。如果您正在多个生产应用程序服务器之间复制会话(例如),则应尝试在较低的环境中执行相同操作。 - 软件/库版本

2

通常情况下,它们在所需的设置方面相同,包括环境设置等运行应用程序所需的设置。
然而,在处理能力和其他硬件资源方面,客户端通常具有较弱的开发系统。我看到他们在开发环境中使用虚拟服务器,因为他们通常同时进行多个项目,这可以帮助他们降低成本。


2
我使用django进行开发。我们的生产服务器是远程的,因此在开发过程中使用它非常麻烦。因此,一开始我创建了一个虚拟机,并尽可能与生产服务器的环境相匹配。但由于某个不相关的事件,这个虚拟机有点失灵了。那时我审视了一下情况,意识到没有必要为开发使用一个定制的虚拟机。由于应用程序可用的资源与生产服务器不同,所以无论如何都不能很好地定时查询(从绝对意义上说)。
话虽如此,现在我使用django内置的dev server和sqlite进行开发,使用apache / wsgi和postgresql进行生产。只要两侧满足python依赖关系,就可以100%兼容。唯一可能的问题是编写原始SQL而不是使用ORM。

1

理想情况下,开发、测试和生产服务器的逻辑配置应该相同。它们应该具有相同版本的操作系统、Web 服务器和所有其他用于运行应用程序的软件资源。但是,根据您的环境强度,会在开发机器上出现一些手动复制的图像/脚本等内容,这些内容无法通过测试和/或生产。

为了最小化这种情况,您可能需要某种推送脚本,可以将您从一个阶段移动到另一个阶段,即 PushVersionDev、PushVesionTest、PushVersionProd。理想情况下,这应该是相同的脚本,带有代表需要将应用程序移动到各个阶段的目标服务器的参数。

我建议阅读Theo Schlossnagle的书《可扩展的互联网架构》(Scalable Internet Architectures)以获取更多关于此问题的想法。

直接回答你的问题......一旦你测试和实施了你的应用程序,推向生产的时间并不长——部署操作系统、Web服务器、支持框架(如果需要安装)、应用程序,然后你就可以开始了。我见过从裸机开始,Linux服务器在线的时间只需要1小时,Windows大约需要90分钟。如果你已经有了操作系统和Web服务器,甚至更短...几分钟就可以了。

0

你的演示环境应该模仿你的生产环境。开发更像是一个游乐场,对开发环境的控制不应该太严格。然而,开发环境应该定期从生产环境刷新(例如,将生产数据复制到开发数据库中,在开发中关闭与生产中关闭的端口等)。

理想情况下,开发、预发布和生产都在不同的机器上。这些独立的机器可以是独立的物理盒子,也可以是同一物理盒子上的虚拟机,具体取决于预算/需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接