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

时间:2008-10-19 14:45:47

标签: python webserver web-frameworks

大多数python框架都有一个某种类型的开发Web服务器,它会警告它不能用作生产服务器。他们往往与他们的生产等价物有多少不同?

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

5 个答案:

答案 0 :(得分:5)

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

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

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

  • 操作系统

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

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

  • 软件/库版本

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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

我建议阅读Theo Schlossnagle的书Scalable Internet Architectures,了解有关此事的更多想法。

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

答案 4 :(得分:0)

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

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