最佳策略:将新代码部署到现有实例还是新实例?
Best strategy: Deploy new code to existing instances or new ones?
需要的想法:部署新代码时,部署到全新实例(Digital Ocean 上的 droplet)与部署到现有实例相比有什么好处吗?
现在部署新实例很容易,我想知道现在更好的方法是简单地部署一个新实例并将路由更改为新实例...
我知道无论您使用 Chef 还是其他部署工具都可能会决定一个解决方案,但寻找关于该主题的一般想法....
这完全取决于您的基础架构有多大,以及在出现问题和错误的情况下调试系统需要做多少工作。可以在一定程度上维护小规模部署到现有机器,但是当系统占用空间变大时,应该是 Immutable infrastructure 的时候了;您正在部署新机器并摆脱旧机器的地方。而不是对现有更改应用新更改的方法。
这种方法的好处是:
- 在机器级别更容易封装部署。您附加新实例,等待旧实例上的流量停止,然后将其关闭。
- 所有机器的日志记录更加集中,这在调试时很方便; 问题出在哪里,以及哪台机器造成了这种不良行为。
- 可以灵活地终止出现问题和创建问题的服务器
新的动态连接到您的负载均衡器。
需要的想法:部署新代码时,部署到全新实例(Digital Ocean 上的 droplet)与部署到现有实例相比有什么好处吗?
现在部署新实例很容易,我想知道现在更好的方法是简单地部署一个新实例并将路由更改为新实例...
我知道无论您使用 Chef 还是其他部署工具都可能会决定一个解决方案,但寻找关于该主题的一般想法....
这完全取决于您的基础架构有多大,以及在出现问题和错误的情况下调试系统需要做多少工作。可以在一定程度上维护小规模部署到现有机器,但是当系统占用空间变大时,应该是 Immutable infrastructure 的时候了;您正在部署新机器并摆脱旧机器的地方。而不是对现有更改应用新更改的方法。
这种方法的好处是:
- 在机器级别更容易封装部署。您附加新实例,等待旧实例上的流量停止,然后将其关闭。
- 所有机器的日志记录更加集中,这在调试时很方便; 问题出在哪里,以及哪台机器造成了这种不良行为。
- 可以灵活地终止出现问题和创建问题的服务器 新的动态连接到您的负载均衡器。