专栏首页磨坊的编程笔记DevOps实践蓝绿部署时踩的坑
原创

DevOps实践蓝绿部署时踩的坑

蓝绿部署属于基于环境的发布模式。蓝绿部署模式中,会存在两个生产环境:蓝环境和绿环境。在任意时间里,都只有一个环境处理客户流量,另外一个环境用作测试新版本。蓝绿环境属于逻辑概念,处理客户流量的是绿环境。

image-20210122090921398.png

1.2 如何执行

任意情况下,绿环境提供用户流量,蓝环境用于部署新版本,测试人员在蓝环境中测试。

image-20210125144132930.png

升级的时候,蓝环境进行版本升级(升级到版本1.1),用户流量指向绿环境(版本1.0)。

image-20210125144409915.png

待蓝环境测试工作做完,确认一切正常后,用户流量切换到蓝环境 。

image-20210125144526590.png

就逻辑上而言,此时蓝环境应该是绿环境,绿环境是蓝环境。

image-20210125144653344.png

敏捷开发的情况下,新的迭代又开始了。新的版本此时部署到蓝环境。

image-20210125144753917.png

1.3 F&Q

上面的步骤看起来很简单,实际却暗藏深机,如果考虑不周,会踩很多坑。

比如:

F:蓝绿部署主要目的是为了解决生产上版本更新迭代问题的,最终必然会落实到生产环境。蓝环境在生产中部署,生产环境数据库产生测试的脏数据如何处理?

Q:财大气粗者,两套数据库安排上。若是精简持家,这个就是个很头疼的问题了,我现在就是卡在这个问题,暂时还没有什么好的解决方案。

F:多系统,多厂家合作的大型系统,怎么破?

Q:要么全部上蓝绿部署,至少在数据流转层面进行蓝绿区分。要么全部不上蓝绿部署,用灰度吧。这样的大系统应该在开工的时候就说好要不要上蓝绿部署的。

1.4 总结

优点:

  1. 上线与部署解耦,开发人员可以在工作时段部署新版本,并开始测试工作。上线的工作只需要挑个良辰吉日把用户流量切换。熬夜通宵上线部署的日子一去不复返。
  2. 生产环境也可以玩测试,因为版本不同导致上线问题的日子同样一去不复返,上线出现问题的概率大大降低,上线第二天再也不用提心吊胆了。
  3. 如果出现问题,马上切换流量。切流量可比回滚快多了,从用户的角度看,也就是网络卡了一下吧,用户感知极低。

缺点:

  1. 需要维护两套系统,运维成本翻倍。
  2. 生产环境脏数据问题。
  3. 多厂家合作的大型系统,协调成本不可避免。

END

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DevOps 之路:一切,从一个笑话说起

    今天想和大家分享下关于我们自己内部做的DevOps实践,实施过程中有很多问题和坑,一路踩过来确实也不容易。 DevOps是很一个很大的概念,我们第一阶段只是实现...

    DevOps时代
  • 业务上云实践和架构演进思考

    从17年开始,结合公司业务上云专项,在线教育从一开始的云IaaS层迁移,到更开放的开源中间件选型,再到思考云原生的研发模式,做了很多实践和思考,推动后台架构演进...

    王昂
  • DevOps平台中的自动化部署框架设计

    本文目录: 一、背景 二、我们的需求是什么? 三、概念澄清 四、概念模型 五、总体设计 六、关键点设计 七、总结 一、背景 说到自动化部署,大家肯定都会想到一些...

    yuanyi928
  • 附032.Kubernetes实现蓝绿发布

    蓝绿发布本质上是希望能优雅无误的迭代应用,以便于使应用平稳提供服务。通常是不停老版本的同时对新版本进行先发布,然后确认无误后进行流量切换,即并行部署。 Kub...

    木二
  • CI/CD 和 DevOps 的过去和未来

    本文由 DevOps时代高翻院整理发布 十年前,DevOps 的理念在 Andrew Shafer 和 Patrick Debois 两位先驱的脑海中酝酿。一...

    DevOps时代
  • ​DevOps VS 职责分离

    在国内不少的研发组织依然通过职责分离的方式来管理研发团队,这种情况下就会造成团队之间合作效率低下、责任互相推诿等问题。我们翻译了以下这篇文章来与读者们一起探讨 ...

    CODING
  • 基于Devops的厘米秀项目实践经验分享

    基于现在研发变革的大背景,可能需要每个技术同学有更多的新思路特别是在测试方面会接受比较大的挑战,上半年在思考如何能更好让手头上的工作跟公司的整体相契合,一直没有...

    腾讯移动品质中心TMQ
  • ASP.NET Core on K8S深入学习(14)Ingress灰度发布

    本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。

    Edison Zhou
  • 【技术创作101训练营】开源云原生持续交付平台简介

    大家好,今天,我们将一起来学习基于Spinnaker的持续交付实践,相信各位同学之前应该都听过Spinnaker吧,但是你实际上去部署的时候 肯定是很困难的,更...

    泽阳

扫码关注云+社区

领取腾讯云代金券