CI/CD 在生产后端服务器上

CI/CD on a production backend server

我正在开发一个应用程序,我希望能够快速迭代版本(修复错误和添加功能等),因此显而易见的方法是开发一个 CI/CD 工作流程。前端非常简单,只需将我的服务器所服务的资产替换为新版本,当人们访问该站点时,这些资产将得到服务。但是,我不太确定如何更新由 express 和 node 提供支持的生产后端服务器。在开发中,我可以轻松地重新启动服务器以反映新的更改,但是在生产环境中这样做会对更新时正在使用我的服务的人产生不利影响。

总的来说,我的问题是在不使用 downtime/interrupting 的情况下将新的后端服务器更新推送到我的生产环境的最佳方法是什么?

理想情况下,您需要 运行 某种进程集群。

这背后的第一步是确保您的应用程序是完全无状态的,并且您可以同时拥有 express 服务器 运行ning 的同步副本以实现负载平衡。

如果您确实需要维护某种形式的状态,您可以使用 memory-based 存储(例如 Redis)在服务器实例之间共享状态。

一旦有了这样的架构,您就可以引导和限制流量,使集群中的每个服务器实例都有机会重新启动,而没有流量被引导到它。

假设您有 4 个实例 运行连接您的服务器。您将关闭实例 1,您的负载平衡会将您的流量发送到 2、3 和 4。

在此期间,您可以热重新加载或完全重新加载实例 1。然后您重新打开实例 1,并对 2、3 和 4 重复该过程。

这样的过程称为“滚动更新”