加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 可以配置Heroku进行真正的无缝部署吗?

发布时间:2020-12-16 20:26:37 所属栏目:百科 来源:网络整理
导读:我们的团队最近对连续部署非常有兴趣,但是我们已经遇到了一些路障,就如何在Heroku上实际部署代码 – 似乎不可避免地需要一些停机时间代码推送到Heroku. 在传统的环境中,代码部署可能看起来像这样: 将代码推到某个分段目录(旧代码仍然存在) 针对数据库运行迁
我们的团队最近对连续部署非常有兴趣,但是我们已经遇到了一些路障,就如何在Heroku上实际部署代码 – 似乎不可避免地需要一些停机时间代码推送到Heroku.

在传统的环境中,代码部署可能看起来像这样:

>将代码推到某个分段目录(旧代码仍然存在)
>针对数据库运行迁移(通常情况下,事先运行迁移更为安全,可以防范破坏代码的几个)
>从负载均衡器中取一半(或一部分服务器).
>将代码部署到这些服务器.
>如果可能,运行某种自动化烟雾测试/锻炼服务器,使他们“热”
>切换哪些服务器进出负载平衡器
>冲洗并重复.

对于Heroku,我几乎无法控制两个关键步骤:

>我无法首先运行数据库迁移.我认为解决这个问题的一个方法是保持数据库迁移分开,并将其推送到英雄首先 – 尽管痛苦的解决问题 – 但只会加剧…
> Dyno的启动时间可能需要相当长的时间 – 显然,这更像是Rails的错误,而不是Heroku,但关键的问题是我不能像上面的负载均衡器那样执行某些操作,以确保我的应用程序在新部署的服务器被放回到负载平衡器之前准备并加载.相反,我几乎别无选择,只能给用户一个10-15秒的加载屏幕,并希望最好的(如果我使用上面的数据库部署策略,那么TWICE)

我们现在使用维护屏幕,但如果我们进行全面的部署(我们可能每天有大约10-20个部署,而10-20 * 30秒的维护屏幕开始到加起来)

有人遇到类似的问题吗?你怎么解决他们?任何伟大的案例研究/成功案例,真正的连续部署在英雄?

解决方法

关于dynos的启动时间,Heroku有一个beta功能来解决:

https://devcenter.heroku.com/articles/labs-preboot/

它首先启动你的新的dynos,等待一段时间,交换流量,然后才能杀死旧的.我的应用程序在部署期间看到性能有明显的改善.你可以在这里阅读它:

http://ylan.segal-family.com/blog/2012/08/27/deploy-to-heroku-with-near-zero-downtime/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读