SaaS 场景下的全链路灰度发布实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 全链路灰度发布实践
Saas场景下的全链路灰度发布 / 戴明智
2.
3. 戴明智
1、SpringFramework、Apache Skywalking社区contributor,个人博客阅读量100w+。
2、2019年入职微盟,基础架构团队技术专家,参与并负责微盟全链路灰度平台的建设,经历了整个全链路灰度平台从0到1的过程
4. CONTENTS
01 设计背景
02 全链路灰度带来的挑战
03 全链路灰度在微盟的落地
04 落地效果及未来规划
5. Part one
设计背景
01
6. 多版本并行测试难
当多个版本并行测试时,
会出现环境占用,
协调难度大,维护成本高
7. 多版本并行测试难
每个迭代有自己独立的环境,
互不干扰
8. 直接发布线上⻛险大
1.生产发布只能在晚上进行,发布效率低
2.一次发布变更会影响所有商家,发布⻛险大
3.如果发布后出现问题,回滚复杂,无法快速回切回
9. Part two
全链路灰度带来的
挑战
02
10. 什么是全链路灰度
全链路灰度是单体架构下灰度发布的衍生物,实施成本及复杂度更高
11. 全链路灰度带来的挑战
流量标签如何传递
多组件如何快速支持
SDK封装 OR JavaAgent?
资源如何隔离
K8s资源、消息队列、注册中心如何指定合
适的隔离方案?
数据一致性问题
业务数据如何保证一致性?灰度策略如何
保证一致性
12. 隔离 如何做?
资源
1、稳定性越高越好,这里的稳定性不仅只灰度环境本身,还有灰度对生产的影响
稳定性
成本
可维护性
2、成本越低越好
3、可维护性需要从多方面考虑,通常来说隔离方案越复杂,维护难度越大,同时
可维护性需要结合公司当前情况评估
13. 隔离?
K8s资源如何做
K8s
稳定性 成本 维护难度
独立集群部署 高 高 高
同一集群,标签区分 低 低 低
同一集群,node隔离 中 中 中
14. 隔离?
K8s资源如何做
15. 隔离?
注册中心如何
注册中心
稳定性 成本 维护难度
独立集群部署 高 高 高
不区分集群 低 低 低
16. 隔离?
注册中心如何
17. 隔离?
消息队列如何
消息队列
稳定性 成本 维护难度
topic级别隔离 高 高 高
消费组级别隔离 低 低 低
18. 隔离?
消息队列如何
19. 传递?
流量标签如何
跨线程如何传
递跨进程如何
传递?
跨进程如何传
递跨进程如何
传递?
20. 多组件
快速支持
优点
缺点
SDK开发封装 JavaAgent
开发简单、排查问题方便 无侵入、推广容易、所有组件统一在
Agent中增强,维护方便
组件过多时,开发代价大,维护难,推 相对sdk开发,agent开发较难,难以
广速度慢
调试
21. 一致性 问题
数据
方案一:下发策略时添加生效时间戳,减少网络延迟带来的影响
方案二:先下发策略,策略带有版本号,确认所有应用接收到策略后,通过入口
应用启用指定版本的策略
22. 一致性 问题
数据
23. Part three
全链路灰度在微盟
的落地
03
24. 整体架构
25. 灰度生命周期
26. 实践场景一:环境创建
27. 实践场景二:配置流量策略
流量调整过程中,
需要支持对环境运行需要的资源
进行扩容
28. 实践场景三:灰度推进到蓝绿状态
需要先完成对资源的1:1扩容,之后再切换流量
29. 实践场景四:灰度转正,灰度发布完成
只有流量全部切换到生产环境才允许发起转正
一键转正,流量无损,不用考虑服务编排
30. 实践场景五:流量回切,灰度下线
31. Part four
落地效果及
未来规划
04
32. 落地效果
33. 落地效果
34. 规划:监控
35. 规划:开放、扩展能力
36. 欢迎交流
个人微信:dmzitman
邮箱:dmzitman@163.com
37.