我一直在开发人员必须经历与网络运营(服务器人员)合作从开发/测试到生产部署的环境中工作。
我最近开始了一项工作,开发人员可以直接从他们的机器转到生产,没有中间人。是否有理由让开发人员无法做到这一点?
到目前为止我所拥有的:
您对部署更加谨慎 如果它必须通过的东西 其他人。作为一名年轻的程序员 它有时需要我多次尝试 得到一个有效的部署。以来 我学到了NetOps的家伙很生气 确保它是第一个是正确的 时间。
如果出现问题并且不止一个人知道发生了什么,那么就会有一些问责制。老板:“网站刚刚倒下了!”,办公室里的其他人都说:“安倍刚刚进行了部署,这是他的错!”
当某人独自负责生产服务器时,他们不太可能做些蠢事。
将(希望)有关部署和回滚功能的更多信息。可以回滚的日志,备份,自动功能......
还有其他正当理由吗?我只是一个控制狂吗?
答案 0 :(得分:14)
一些想到的东西(可能与你的重叠):
答案 1 :(得分:10)
因为许多开发人员先天无法认为他们会犯错误 - 这也是优秀开发团队拥有专门测试团队的原因。
“我只是在Prod中进行这个小配置更改,这不会破坏任何东西。”
我会想到,OOP开发人员应该理解职责分离。你打破它,拥有它。通过单独的Ops团队避免出现问题。在某些环境(例如财务)中,大量资金(有时是法律)也会因不受控制的生产环境中的不明智或恶意变化而面临风险。
在小团队中,我可以看到开发人员拥有生产访问权限的案例,但必须对其进行控制和审核,以便您始终了解生产中的内容。从这个意义上说,推送部署和回滚按钮的人并不重要,但是它们存在并且是改变生产环境的唯一方式。
我不希望那是我工作的很大一部分。一旦他们看到他们花费更多时间进行编码,您可能会发现自己的开发者都同意。
答案 2 :(得分:7)
主要原因是允许开发人员直接部署到生产环境会削减质量保证流程。这引入了风险。哪种管理类型不喜欢。
因此,另一个要点是风险大幅增加。
答案 3 :(得分:7)
安全性 - 通过一个网守(带备份),只有一个人正在访问生产数据和服务器。这意味着更少的接入点。
易于管理 - 您无需在生产环境中创建任意数量的帐户来跟踪 - 或者更糟糕的是,在许多帐户中共享一个帐户。 (假设你的prod环境与你的开发环境分开。
实践是完美的 - 一个人制定一个例行公事并且坚持下去就会减少搞砸的机会。
答案 4 :(得分:5)
如果有办法犯错,最终会发生。大数定律。如果你也希望它们具有生产力,那么把开发人员的负担变得完美是不合理的。
现在,更改的开销/难度应与您的正常运行时间要求直接相关。重申:停机时间越长,就应该投入更多的时间来防止停机。
答案 5 :(得分:2)
通过直接部署到生产环境,很可能不涉及任何质量保证(即没有测试任何内容)。
答案 6 :(得分:2)
因为需要有一个人,你可以去了解谁在网站上部署了什么。如果每个开发人员都可以部署,那么当有人注意到错误时,你不知道是谁部署了什么。
答案 7 :(得分:0)
SOC-1合规性可能(不必要地)建议或要求开发人员与部署到生产的人员分开,以便控制措施到位以防止恶意。