如何以敏捷方式部署Web应用程序

5

什么是最好的实践和工具,可以支持我在web应用程序的持续部署中?

我们应该能够轻松地每天部署多次。

这是一个Ruby on Rails 3应用程序。 我们使用Git和Github。


仅供参考:RoR允许极快的应用程序开发。一个带有管理部分和Markdown的博客可以在十分钟内编写完成。 - user142019
@TimeMachine - 真的吗?现在我想学习Ruby和RoR。我在Mac OS X上,哪里可以获取相关信息? - Moshe
原始的RoR网站有一个名为“20分钟创建博客”的教程。是的,只需要20分钟,但这是因为它是为不熟悉RoR的人准备的。Mac OS X已经安装了Xcode的RoR。如果已经安装了Xcode,您就可以使用RoR。否则,请安装Xcode。 - user142019
我最喜欢学习RoR的网站是http://railscasts.com/。有很多新手和初学者的教程。 - user142019
2个回答

4
“最佳实践”是什么意思?
我假设你正在尝试采用敏捷方法。你试图得出一组最佳实践来部署代码,这有点可怕。事实上,任何针对敏捷团队的最佳实践列表都很可怕。如果你仔细研究敏捷开发,你会发现它要求团队进行检查和适应,并不断地改进。一旦你认为你的团队已经找到了“最佳实践”,你默认同意你可以停止改进,因此停止检查、适应和改进。《敏捷估算和计划》一书的作者Mike Cohn建议,敏捷团队不应该制定一组最佳实践,而应该通过检查和适应不断改进。
为了给你一些建设性的反馈,这里是我们Scrum团队遵循的一些实践,我们通过检查和适应我们自己的部署过程找到了这些实践。我还将添加关于我们的源代码检入实践以及部署的信息。
1. 每当开发人员检入代码时,Hudson-ci使用scm poll触发器自动构建和部署代码到开发环境,并通过电子邮件发送适当的成功或失败通知。
2. 开发环境中有一个每晚的构建,由Hudson-ci每晚自动触发。
3. 在功能在Dev环境中准备好并经过初步测试后,团队上的QA会触发Hudson-ci进行构建和部署到集成服务器,其中可以对功能进行集成测试。集成环境是生产环境的精确副本。
4. 生产部署通常使用基于发布计划的Hudson。
有几种CI工具可供选择。我最喜欢的是Hudson-ci。其他工具包括Continuum和Cruise control。但我认为Hudson是最通用和易于使用的工具,因为它有社区驱动的插件,所以你可以很容易地找到适合git和Ruby on Rails应用程序的插件。

+1 推荐使用Hudson。 - rcravens
1
+1 对于“任何敏捷团队最佳实践的列表都是可怕的” - Don Roby
谢谢你的出色回答。当系统正在升级时,我希望我的用户看到一个“我们正在升级”的页面,而不是404错误页面。我猜我需要使用两个Rails应用程序,对吗? - Nerian

0

IMVU 是持续部署的典范,他们遵循“如果我们确定没有出现任何问题,就需要立即部署”的规则来实现这一点。现在,他们的流程已经拥有非常出色的自动化功能,但一切始于这个规则。

我认为帮助实现持续部署的一些要素包括:

  1. 始终确保构建无误。这意味着在提交时运行自动化单元测试的持续集成,并立即对任何失败做出响应。在 IMVU 中,他们甚至会自动回滚破坏构建的提交。
  2. 广泛的功能测试。这是您确保未破坏任何功能的关键。这些测试通常较慢,因此您需要采取策略以保持测试时间的缩短,例如在多台计算机上并行运行测试或使用像 SauceLabs 这样的服务。
  3. 自动化部署。永远不要手动进行部署。永远不要手动更改配置。使用相同的技术在所有环境中进行部署。
当你说连续部署时,大多数人会想到自动进入生产环境而无需人为干预。你可以停留在这一点上——推按钮的生产部署——仍然能够获得很多价值。我们(urbancode,AnthillPro 的制造商)帮助很多客户实现这些元素的部署。虽然很少有人进行自动化的生产部署,但自动化部署对每个人都有帮助。

Jtf


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