我们有一个开发模式,每个开发人员负责部署他/她负责的程序。
我们想要实现的目标如下:
- 所有开发人员都能够将他们的应用程序部署到我们的生产环境中。
- 具有良好的安全水平
- 对谁做了什么事进行问责。
- 跟踪哪个应用程序使用了哪些资源。
目前,我们已将所有部署脚本编写在织物。
我们为每个应用程序设置了一个帐户。该帐户的 SSH 密钥将分发给负责部署该应用程序的开发人员。此帐户还用于运行该应用程序。
这实现了第 1 点、第 4 点和部分第 2 点,但没有实现第 3 点。它还有一个缺点,即必须准备好服务器环境,因为我们不想为应用程序帐户提供 root 访问权限(依赖项由 root 身份用户安装,目录创建)。
为了解决上述问题,我们应该如何制定部署策略?我们是否遗漏了策略中的一些重要目标?
答案1
我们现在有一个类似的策略,但我们正在放弃它,正是因为你上面提到的第 3 点。
程序员也负责发布的情况看起来确实很好、简单、方便、快捷,但如果您关心系统的稳定性和责任制,它很快就会变成一场噩梦,因为它鼓励快速破解(“没有人必须知道,在这里,我们很快就修复了它,就像它从未发生过一样”)并且不鼓励正确的文档(“但每个人都知道”)。同行评审?Fuhghehtaboutit ;)
在这样的系统下,你只会得到系统管理员和程序员之间永无休止的争斗,相信我,不久前我也经历过这种情况。
实现稳定且文档齐全的系统的唯一方法是,发布所需的所有步骤都应尽可能频繁地进行适当记录、编写脚本和测试,理想情况下,测试系统应每天自动重建。一旦您处于该阶段,任何人都可以运行脚本并进行发布,并且应该不是是写这些报告的人,因为他没有兴趣报告自己遗漏的内容。