在生产应用中管理和部署多个环境的最佳实践

42次阅读
没有评论

问题描述

在准备启动一个生产网站时,希望获取关于管理和部署多个环境的最佳实践。在高层次上,他想要在保证生产环境稳定性的同时,尽量提高开发速度。以下是他的一些设想:
1. 开发人员提交小的变更和分支到主干分支,以避免额外的开销。
2. 除了生产环境外,还有多个其他环境,如“开发”环境。
3. 在“开发”环境中使用 CI/CD,以便每当分支合并到主干分支时,都会构建和部署最新的主干分支。
4. 经常在“开发”环境中进行内部测试和 QA,每当认为功能稳定并且准备好发布新功能到生产环境时,手动将当前主干分支部署到“生产”环境。

用户想知道对这种方法的看法,并希望了解关于细节的建议。

解决方案

最佳实践研究

在大多数情况下,您的计划与研究中发现的方法是一致的,这些方法与提高软件交付性能和稳定性有着强有力的关联。以下是一些关键的实践方法:

  1. 分批工作: 开发人员应该采用小批量的变更提交和分支,以避免大量的额外开销和冲突。
  2. 持续集成: 持续将代码集成到主干分支,确保代码始终保持可部署状态。
  3. 自动化检查: 需要建立一个快速的构建过程,运行测试来尽早地捕捉问题。对于需要更长时间的测试,可以自动部署到“边缘”环境并启动长时间运行的测试。
  4. 自动化部署: 避免人工介入,自动将经过检查的版本部署到目标环境。

环境管理

如果需要人工审核软件版本,可以考虑让使用特定环境的人能够主动拉取新版本,以确保更新不会干扰测试会话。应该实现一个按钮操作,将软件部署到他们的测试环境。他们还应该可以使用按钮将测试数据重置为已知状态。

生产环境部署

可以设置一个基于自动化检查的连续部署流水线,在检查完成后自动部署到生产环境。根据组织的政策约束,可能需要人工批准发布。这是完全可以接受的,在这种情况下,您将处于持续交付模式。持续交付具有与持续部署相同的自动化,还具有额外的“人工干预”步骤,如审核和批准。

在一些罕见的情况下,您可能需要安排在特定时间进行部署,因此需要另一个手动干预 – 但部署本身应该是自动化的。您可以使用部署自动化工具来管理环境、审核、部署以及在开发、测试和生产中使用的不同变量。

敏捷、精益和DevOps

以《加速DevOps报告》中定义的方式,DevOps是迄今为止人类提供软件的最佳方式。值得关注年度报告,了解有哪些新发展。您可以使用DevOps能力模型来获取可能改进流程的想法(但不要试图一次性采用所有想法)。

希望这对一些人有所帮助!

请注意:上述解决方案仅供参考,具体实施方法可以根据您的组织情况和需求进行调整。

正文完