大多数 python 框架都会有某种类型的开发网络服务器,该服务器会发出警告,表明它不适合用作生产服务器。它们与生产的同类产品有多大不同?

我还没有完全决定要使用哪个框架,要少得多,要使用哪种生产服务器,因此我很难将其固定到“将开发服务器X与生产服务器y进行比较”。因此,让我更精确地使我更精确:根据您过去使用 python 框架的经验,一旦在开发服务器上开发了应用程序,您需要花费多少时间来启动并运行应用程序?或者您是否跳过了开发服务器并在更像您将在生产中使用的服务器上开发您的应用程序?

有帮助吗?

解决方案

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

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

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

  • 操作系统

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

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

  • 软件/库版本

其他提示

我用django开发。我们的生产服务器是远程的,因此将其用于开发是一件痛苦的事。因此,起初,我创建了一个虚拟机,并尝试尽可能地匹配prod服务器的环境。在某些时候,vm被软管(由于一个无关的事件)。我对当时的情况进行了评估,并意识到没有充分的理由使用定制的vm进行开发。由于应用程序可用的资源与prod服务器不同,因此无论如何都不利于计时查询(绝对意义上说)。

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

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

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

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

我建议阅读Theo Schlossnagle的书可扩展的互联网架构,以获得有关此事的更多想法。

直接回答您的问题....一旦您的应用程序经过测试和实施,滚动到productoin的时间就不多了 - 部署操作系统,Web服务器,支持框架,如果他们需要安装,应用程序,那么你很好走。从裸机我看到linux服务器在1小时内上线,窗口约90分钟。如果你的操作系统和网络服务器的运行时间更短......分钟。

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

理想情况下,dev,stage和prod都在不同的机器上。根据预算/需求,单独的机器可以是单独的物理盒,也可以是同一物理盒上的虚拟机。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top