Node.js 降低自动部署的风险 部署

Node.js 降低自动部署的风险 部署,node.js,git,deployment,npm,Node.js,Git,Deployment,Npm,我目前在一家通过github部署的公司工作。但是,我们必须登录到所有3台服务器,才能使用shell脚本手动更新它们。在与首席技术官交谈时,他明确表示,自动部署对他来说就像伏都教。这是可以理解的。我们有4个不同国家的开发人员远程工作。如果有人不小心推错了分支,我们可能会遇到停机,而我们的服务停机时间不能超过10分钟。由于我们所有的开发人员都在不同的时区,我们的CTO要到第二天早上才知道,我们很难与那些因为巨大的时差而出现问题的开发人员会面 我的问题:为什么要自动部署 在处理我的个人项目时,我决定使

我目前在一家通过github部署的公司工作。但是,我们必须登录到所有3台服务器,才能使用shell脚本手动更新它们。在与首席技术官交谈时,他明确表示,自动部署对他来说就像伏都教。这是可以理解的。我们有4个不同国家的开发人员远程工作。如果有人不小心推错了分支,我们可能会遇到停机,而我们的服务停机时间不能超过10分钟。由于我们所有的开发人员都在不同的时区,我们的CTO要到第二天早上才知道,我们很难与那些因为巨大的时差而出现问题的开发人员会面

我的问题:为什么要自动部署 在处理我的个人项目时,我决定使用自动部署可能对我最有利,但我的项目仍然是任务关键型的,我希望尽可能减少停机时间和人为错误。手动部署的问题在于,我无法在合理的时间内通过SSH在多达20台服务器上手动部署。当我考虑自动缩放时,这个问题就一直存在。我需要从映像启动一个新服务器并部署到它

我的书堆 我的服务是在Node.js Express框架上开发的。这些环境中的部署和引导实用程序非常丰富。我的项目在部署时使用npm的package.json来
uglify
我的脚本,并且还使用
forever monitor
作为守护进程运行我的服务。我还考虑
grunt.js
进一步为生产和测试环境引导我的环境

部署方法 到目前为止,我考虑过:

  • 使用webhooks使用git自动部署
  • 通过shell使用git手动部署
  • 通过shell使用npm部署
  • 码头工人
我对Docker这样的技术不是很精通,但我很感兴趣,我肯定会给那些给我很好的描述为什么我应该或不应该使用Docker的人打分,因为我对它的使用非常感兴趣。欢迎采用其他方法

我的问题:为什么我害怕自动部署 在任务关键型环境中,宕机会使您的业务陷于停顿,更糟糕的是,有大量最终用户点击刷新按钮。如果有人将非构建的东西推送到生产分支并自动部署,那么我将看到一个非常混乱的情况

我喜欢自动部署的优雅,但风险让我怀疑。我非常赞成尽可能提高自己的工作效率。因此,我正在寻找一种方法来轻松、高效地部署到许多服务器

我在寻找的答案
向我解释如何降低自动部署的风险,向我解释一种更适合我的项目的替代方案。请随意询问评论中缺少的任何细节。

这里没有简单的答案。我提供了一组由Etsy公司的Mike Brittain发布的幻灯片,Etsy公司实行连续部署:

精选亮点:

  • 频繁和小批量部署
  • 使用配置/功能标志控制系统行为和“暗发布”主要功能
  • 代码检查对生产分支的所有更改
  • 投资于监控并改善反馈回路
  • 将“服务”单独管理到“应用程序”,并注意运行时版本和向后兼容的更改

希望这有助于

你考虑过代码>半自动/代码>部署吗?i、 e.在每台服务器上创建一个侦听器,当
ping时,该侦听器将在服务器上运行更新脚本。通过这种方式,您可以检查构建是否通过,如果您确定,您可以通过单击将其部署到所有服务器?我已经考虑过一些类似的问题。持续集成在这里有用吗?是的,可以。首先在您的暂存服务器上部署,在那里进行测试,然后在通过测试后自动部署到生产环境中。@alex这就是想法。我在git存储库中有一个暂存和生产分支。问题是,如果有人在进行修补程序和推送之前忘记了“git checkout staging”,那么它会自动将未经测试的代码部署到我的生产服务器上。也许可以将您的生产分支移动到其他任何人都不可用的git存储库,然后仅从staging server提交?