Node.js 降低自动部署的风险 部署
我目前在一家通过github部署的公司工作。但是,我们必须登录到所有3台服务器,才能使用shell脚本手动更新它们。在与首席技术官交谈时,他明确表示,自动部署对他来说就像伏都教。这是可以理解的。我们有4个不同国家的开发人员远程工作。如果有人不小心推错了分支,我们可能会遇到停机,而我们的服务停机时间不能超过10分钟。由于我们所有的开发人员都在不同的时区,我们的CTO要到第二天早上才知道,我们很难与那些因为巨大的时差而出现问题的开发人员会面 我的问题:为什么要自动部署 在处理我的个人项目时,我决定使用自动部署可能对我最有利,但我的项目仍然是任务关键型的,我希望尽可能减少停机时间和人为错误。手动部署的问题在于,我无法在合理的时间内通过SSH在多达20台服务器上手动部署。当我考虑自动缩放时,这个问题就一直存在。我需要从映像启动一个新服务器并部署到它 我的书堆 我的服务是在Node.js Express框架上开发的。这些环境中的部署和引导实用程序非常丰富。我的项目在部署时使用npm的package.json来Node.js 降低自动部署的风险 部署,node.js,git,deployment,npm,Node.js,Git,Deployment,Npm,我目前在一家通过github部署的公司工作。但是,我们必须登录到所有3台服务器,才能使用shell脚本手动更新它们。在与首席技术官交谈时,他明确表示,自动部署对他来说就像伏都教。这是可以理解的。我们有4个不同国家的开发人员远程工作。如果有人不小心推错了分支,我们可能会遇到停机,而我们的服务停机时间不能超过10分钟。由于我们所有的开发人员都在不同的时区,我们的CTO要到第二天早上才知道,我们很难与那些因为巨大的时差而出现问题的开发人员会面 我的问题:为什么要自动部署 在处理我的个人项目时,我决定使
uglify
我的脚本,并且还使用forever monitor
作为守护进程运行我的服务。我还考虑grunt.js
进一步为生产和测试环境引导我的环境
部署方法
到目前为止,我考虑过:
- 使用webhooks使用git自动部署
- 通过shell使用git手动部署
- 通过shell使用npm部署
- 码头工人
向我解释如何降低自动部署的风险,或向我解释一种更适合我的项目的替代方案。请随意询问评论中缺少的任何细节。这里没有简单的答案。我提供了一组由Etsy公司的Mike Brittain发布的幻灯片,Etsy公司实行连续部署: 精选亮点:
- 频繁和小批量部署
- 使用配置/功能标志控制系统行为和“暗发布”主要功能
- 代码检查对生产分支的所有更改
- 投资于监控并改善反馈回路
- 将“服务”单独管理到“应用程序”,并注意运行时版本和向后兼容的更改
希望这有助于你考虑过代码>半自动/代码>部署吗?i、 e.在每台服务器上创建一个侦听器,当
ping时,该侦听器将在服务器上运行更新脚本。通过这种方式,您可以检查构建是否通过,如果您确定,您可以通过单击将其部署到所有服务器?我已经考虑过一些类似的问题。持续集成在这里有用吗?是的,可以。首先在您的暂存服务器上部署,在那里进行测试,然后在通过测试后自动部署到生产环境中。@alex这就是想法。我在git存储库中有一个暂存和生产分支。问题是,如果有人在进行修补程序和推送之前忘记了“git checkout staging”,那么它会自动将未经测试的代码部署到我的生产服务器上。也许可以将您的生产分支移动到其他任何人都不可用的git存储库,然后仅从staging server提交?