什么是在开发Web应用程序时所说的暂存环境?

17

在为他人开发Web应用程序时,多个测试环境是一个好主意。然而,不同的开发团队对每个环境的含义有不同的定义。

目前,我喜欢保持简单,只需开发环境(我的本地计算机)、一个暂存环境(在将应用程序部署到全球之前进行测试)和生产环境。虽然可能有更多环境的价值,但我现在将坚持这三个环境。

我的主要问题是:

定义临时环境时,哪些属性是适当的?

以下是一些相关问题:

  • Web服务器必须与数据库分别部署在不同的物理机器上吗?
  • 数据库必须与生产数据库完全相同吗?
  • 暂存环境可以进行维护吗?
  • 暂存环境可以用于测试新功能(即beta环境)吗?

3
很好的问题--在我看来,关于开发有大量的信息,但是关于部署和设置环境的信息却很少。 - harpo
4个回答

11

我建议您的测试环境尽可能与生产环境相似。

如果您在生产环境中使用单独的服务器来处理数据库和Web服务器,请尽可能保持在测试环境中,如果您使用负载均衡器,请尝试在测试环境中进行配置等。

然而,在我的经验中,情况并非如此,我们的测试环境在硬件方面总是比生产环境弱。这样做的问题在于您无法测试每个功能并确信生产环境将以同样的方式工作。

至于其他问题:

  • 测试环境通常可以在需要时关闭,您可以拥有更灵活的安排时间,以安装新版本。
  • 我们曾经遇到过在测试环境中安装多个应用程序实例的情况。一个类似于生产版本,另一个带有客户测试的新功能。

10

"Staging" 的涵义是,你正要部署到生产环境,因此需要一个尽可能接近生产环境的环境,以最小化可能因不同环境直接导致的任何问题。例如,开发和测试环境可能具有生产环境没有的某些实用程序,或者生产环境可能具有更严格的权限和身份验证,可能会对您的应用程序造成问题。

因此,理想的暂存环境是生产环境的精确副本(尽管没有公共访问)。如果您正在使用虚拟化服务器,则这应该是非常简单的。如果没有,那么环境应该尽可能接近于模仿生产环境(应将应用程序部署到相同的路径,权限应完全相同,配置文件应为生产环境的副本等)。回答您的问题:

  • Web 服务器是否必须与数据库位于不同的物理机器上?如果在生产中是这样的话。
  • 数据库是否必须与生产数据库完全相同? 数据库结构必须一模一样,但可以填充虚拟数据。
  • 暂存环境是否可以停机维护? 是的。
  • 可以将暂存环境用于测试新功能(即 beta 环境)吗? 不可以,我会使用开发或测试环境进行此操作。 暂存应该是用于将立即进入生产的功能(即“发布候选”环境)。

2

“定义分阶段环境时,应该选择哪些属性?”

技术栈必须相同。事实上,您应该能够简单地克隆分阶段环境以重新构建生产环境。

“Web服务器是否必须与数据库位于不同的物理机器上?”

对于分阶段环境来说?不一定。如果您的配置管理非常可靠,那么在分阶段环境中,您将拥有所有必要的配置参数,并且在移动到生产环境时可以正确地修复它们。

如果您的配置管理不太可靠,则需要在分阶段环境中具有与生产环境相同的物理架构,以便您可以进行配置更改。

“数据库是否必须与生产数据库完全相同?”

取决于用例。如果您正在升级数据库,则它们不能完全相同。

如果您没有升级数据库,则它们将完全相同。

“分阶段环境是否可以进行维护?”

为什么不能呢?

“分阶段环境是否可以用于测试新功能(即beta环境)?”

必须用于此。否则,您如何进行升级呢?


1
一个 stage 或者 staging 环境是一个用于测试的环境,它与生产环境完全相同。换句话说,它是生产环境的完整但独立的副本,包括数据库。由于精确复制了生产环境,Staging 提供了真实的 QA 测试基础。一个良好实施的 staging 环境使得定义重要标准并准确测试成为可能。
现在考虑一个测试团队,在非生产环境下执行所有测试的情况。例如,在大多数软件开发组织中,有多个开发编码和 QA 测试环境,以便发布到生产环境。然而,无论是开发还是 QA 测试环境都没有生产环境具备的全部内容。
需要任何帮助,请查看我们的 Custom Web Application Development Services

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