che*_*505 18 maintenance php node.js
我在澳大利亚的一家大型游戏网站上帮忙。我们从当地时间早上 7 点到第二天凌晨 1 点举办比赛,每周的每一天。自从网站发布以来,我们一天也没有跳过。自然,这使得维护非常难以运行,我们发现我们的临时服务器在我们的生产分支之前最多提交 50 次。通常,主开发人员必须极早醒来以合并分支并确保一切正常。
我们一直在努力使我们的临时站点与生产站点尽可能相似,但我们只能使其如此相似。
我们的网站基于 Laravel,带有一个实时的 Node.JS 服务器。我们正在使用 Laravel Forge。
有人对我们如何更频繁地推送更新有任何建议吗?我们对任何事情都持开放态度。
Mic*_*ton 22
您可以做很多事情来改进部署过程。其中一些是:
确保您的代码经过良好测试。
理想情况下,您应该拥有 100% 的单元测试覆盖率,以及针对每个可能的场景进行集成测试。
如果你还没有得到这个,你可能应该放下所有的东西并得到它的照顾。
研究行为驱动的开发。
拥有完整的测试套件将使您能够...
运行持续集成。
每当有人提交更改时,CI 就可以自动在其上运行测试套件。如果测试套件通过,则可以立即部署(或安排部署)。对于不需要对数据库进行任何重大更改的更改,仅此一项即可为您节省大量时间和麻烦。
万一出现问题,CI 也可以给你一键回滚。
CI是很多有用的更少,如果您的测试套件是不完整的,正确的,因为整个前提下休止符上能够验证您的代码以自动方式。
进行原子更新。
理想情况下,您不应该只是将新文件复制到生产服务器上的旧文件上。相反,请使用诸如 capistrano 之类的工具,它将每个文件复制到一个新位置,然后使用符号链接指向所需的部署。回滚是即时的,因为它只需更改符号链接以指向先前的部署。(虽然这不一定涵盖您的数据库迁移。)
还要看看 Docker 之类的容器是否可以帮助你。
进行更小、更频繁的更改。
无论您有测试、CI 还是什么都没有,仅此一项就可以显着帮助您。每个更改都应该有自己的 git 分支,并且部署应该有尽可能少的更改。由于更改较小,因此在部署期间可能出错的可能性较小。
在这一点上,尽可能使更改更加独立。如果您对奥马哈游戏进行了更改,并且它不影响德州扑克、5 张牌梭哈或其他任何游戏,那么这是唯一需要暂停维护的游戏。
分析任何长期运行的东西。
您提到部署的某些部分需要很长时间。这可能是数据库架构更改。非常值得让 DBA 查看您的数据库以及每个架构更改,以了解哪些方面可以做得更好。
让主题专家查看部署中占用大量时间的任何其他部分。
工作零时。
您可能已经这样做了,但值得一提。不应再期望开发人员(和系统管理员!)“朝九晚五”工作,尤其是对于 24x7 的操作。如果有人希望有人整夜照看部署,解决任何问题,然后保持白天的时间表,那么您的期望是不切实际的,并且您正在为这个人设置倦怠。
从你所说的来看,你每天早上 1 点到 7 点都有一个维护窗口,问题不是时间而是方便。这是正常现象,许多人只是将其作为业务的一部分来处理。
您可以有 2 个(或更多后端)系统,其前端可将流量引导至当前处于活动状态的任何一个。一旦您对发布的工作感到高兴,您就告诉前端切换到新系统。这应该很容易编写脚本,需要很短的时间。
现在您可以选择保留旧系统,以便您可以退出或更新它,以便在构建/测试下一次更新之前将其用作实时系统的备用系统。
修改其他答案:您应该遵循蓝绿部署模型。当您要发布新版本时,请将其部署到内部临时网站。然后,您可以在下一个版本的生产站点上运行自动化测试。当测试通过时,您将负载均衡器指向使用新网站。
这有助于以下方式:
当您可以随时以无压力的方式进行部署时,您和其他人提到的所有其他问题都会变得不那么严重。蓝绿部署模型是一个非常完整的部署问题解决方案。
归档时间: |
|
查看次数: |
1329 次 |
最近记录: |