5

大多数 python 框架都会有某种类型的开发网络服务器,它会发出警告,指出它不能用作生产服务器。它们与生产等效物有多大不同?

我还没有完全决定要使用哪个框架,更不用说使用什么生产服务器了,所以我很难将其归结为“将开发服务器 x 与生产服务器 y 进行比较”。话虽如此,让我把问题说得更准确一点:在您过去使用 python 框架的经验中,一旦在开发环境中开发应用程序,您需要花费多少时间让应用程序启动并在生产系统上运行服务器?或者您是否跳过了开发服务器并在更像您将在生产中使用的服务器上开发您的应用程序?

4

5 回答 5

5

考虑到可用资源,较低的环境应尽量与生产环境匹配。这适用于所有开发工作,无论它们是基于 Python 还是基于 Web。实际上,大多数组织都不愿意花这种钱。在这种情况下,尽量使生产环境正下方的环境尽可能接近生产环境。

要记住的一些变​​量是:

  • 很多时候,生产中有多台机器(应用服务器、数据库服务器、Web 服务器、负载平衡器、防火墙等)。记住这些。

  • 操作系统

  • CPU 数量。从单 CPU 较低的环境迁移到多核生产环境可能会暴露未经测试的多线程问题

  • 负载均衡。很多时候较低的环境没有负载平衡。如果您正在跨多个生产应用程序服务器复制会话(例如),您应该尝试在较低的环境中执行相同的操作

  • 软件/库版本

于 2008-10-19T16:36:03.337 回答
2

通常,它们在运行应用程序所需的设置方面是相同的,包括环境设置。
但是,客户通常拥有在处理能力和其他硬件资源方面不太强大的开发系统。我已经看到在开发环境中使用它们的虚拟服务器,因为它们通常有多个并行进行的项目,这有助于他们降低成本。

于 2008-10-19T14:50:57.400 回答
2

我用 django 开发。我们拥有的生产服务器是远程的,因此使用它进行开发很痛苦。因此,起初,我创建了一个 vm 并尝试尽可能地匹配 prod 服务器的环境。在某些时候,vm 被冲洗掉了(由于不相关的事件)。我当时盘点了一下情况,意识到使用定制的 vm 进行开发确实没有充分的理由。由于应用程序可用的资源与 prod 服务器不同,因此无论如何(绝对意义上)对时间查询都没有好处。

也就是说,我现在使用 django 的内置开发服务器和 sqlite 进行开发,使用 apache/wsgi 和 postgresql 进行生产。只要双方都满足 python 依赖项,它就是 100% 兼容的。唯一的潜在问题是编写原始 sql 而不是使用 orm。

于 2008-10-19T16:50:49.467 回答
1

理想情况下,开发、测试和生产服务器的逻辑配置应该相同。它们应该具有相同版本的操作系统、Web 服务器和用于运行应用程序的所有其他软件资产。但是,取决于您的环境将裁剪的强度 - 在开发机器上手工复制的图像/脚本等无法通过测试和/或生产。

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

我会推荐阅读 Theo Schlossnagle 的书Scalable Internet Architectures以获得更多关于这个问题的想法。

直接回答您的问题....一旦您的应用程序经过测试和实施,投入生产的时间并不是很好 - 部署操作系统、Web 服务器、支持框架(如果它们需要安装、应用程序,您就可以开始了)。从裸机上我看到 linux 服务器上线 1 小时,windows 大约 90 分钟。如果您的操作系统和 Web 服务器运行时间更短……分钟。

于 2008-10-19T15:06:47.587 回答
0

您的登台环境应该模仿您的生产环境。开发更像是一个游乐场,对开发环境的控制不应该那么严格。但是,开发环境应该定期从生产环境中刷新(例如,将.prod 数据复制到dev db,关闭dev 上在prod 上关闭的端口等)。

理想情况下,dev、stage 和 prod 都在不同的机器上。单独的机器可以是单独的物理机,也可以是同一物理机上的虚拟机,具体取决于预算/需求。

于 2008-10-20T03:38:02.843 回答