基于运维数据分析的云原生软件架构评估
如果无法正常显示,请先停止浏览器的去广告插件。
1. 基于运维数据分析的
云原生软件架构评估
彭鑫
复旦大学
pengxin@fudan.edu.cn
2.
3. 云原生(Cloud Native)软件
据IDC预测,到2022年,90%的应
用程序将采用微服务架构;35%的产
品应用将是云原生的
云原生:应用的设计、实现及部署运行方式充分适应云计
算平台的特点(如分布式、弹性伸缩)
微服务:物理隔离,轻量级分布式通信,独立部署、独立更新、独立伸缩
DevOps:开发运维一体化,持续集成与自动化发布
持续交付:频繁发布、快速交付、快速反馈、快速试错
容器化:服务无差别封装在容器中,运维无需关心服务技术栈
4. 软件生态系统
支持定制化开发的
软件产品线
应用共享并依赖于平台及开发框架
应用间可互联互通
应用持续增长并自主演化
安卓生态系统
苹果生态系统
特点:技术依赖、离线演化
5. 云原生软件生态系统
Service
Service
Service
Service
Service
Service
Service
服务独立开发、部署、演化
Service
Service
新的业务和特性不断生长
Service
Service
Service
服务持续交付与更新
Service
Service
Service
特点:持续运转、在线演化
6. 云原生软件架构治理问题
服务调用环路
脆弱的长调用链路
服务内聚弱、
职责不单一
Service
Service
Service
Service
Service
能力地图不清晰,
存在重复服务
Service
Service
服务间耦合强,
边界不清晰
Service
Service
业务和技术层次
不清晰
随着服务的不断增加和调整,云原生软件架构可能会不断退化
缺少整体规划的系统生态性演化是一个主要原因(只见树木、不见森林)
7. 传统的软件架构分析技术
代码静态分析
通过各种程序分析及文本分
析手段揭示并分析模块与文
件间依赖关系与概念关联,
分析成本低,使用广泛
代码动态分析
代码演化历史分析
通过程序插桩获取软件运行
基于版本库演化历史分析获
时信息,从而揭示不同软件
取不同文件的修改和演化历
模块或对象之间的交互关系, 史,揭示文件间的演化关联,
分析成本高,使用较少
分析成本低,有一定使用
8. 云原生软件架构分析的挑战
服务独立开发和部署
运行环境复杂多变
运行环境配置及相互影响复杂多变,难以
掌控和模拟
服务成为基本开发和运行单元,代码及演
化历史分析只能应用于服务内部分析
02
01
自主生长、独立演化
大量内部及第三方团队参与,演化过程难
以通过自顶向下的方式进行集中控制,涉
及大量不同部门、协调困难
开发
04
03
系统行为高度动态
服务和系统行为受到部署和运维配置及运
行环境影响,具有高度的动态性
运维
9. 云原生软件架构分析的机遇
运行日志
调用链路
可观察性
Peter Bourgon. Metrics, tracing, and
logging.
https://peter.bourgon.org/blog/2017/02/21/
metrics-tracing-and-logging.html
指标度量
显式的软件体系结构
外化的交互行为
系统持续在线运行
完善的基础设施支持
10. 分布式服务调用链路(Trace)
Trace处理与分析流水线
Trace拓扑结构
Trace的时间线表示
Span Log
Bowen Li, Xin Peng, Qilin Xiang, Hanzhang Wang, Tao Xie, Jun Sun, Xuanzhe Liu: Enjoy your observability: an industrial survey of
microservice tracing and analysis. Empir. Softw. Eng. 27(1): 25 (2022)
11. 类比:城市运行数字体征系统
对城市生命体进行“24小时×365天”
的“全时智慧体检”。相较于传统的静
态城市运行体征,即将上线的上海城市
运行数字体征系统是“活”的,以“实
时、鲜活”的多维、多源、多态数据为
基础…通过数字体征来呈现城市正在发
生什么、需要关注和处置什么…更好地
研判城市运行的趋势和规律,及时发现
潜在的风险,助推城市管理,将被动处
置变为“治未病”…
解放日报:上海城市运行数字体征系统将上线
http://www.xinhuanet.com/info/2021-05/12/c_139940069.htm
12. 基于可观测性数据的微服务系统分析
Service
Service
Service
Service
Service
Service
Service
故障诊断
Service
Service
架构分析
Service
Service
Service
Service
Service
Service
业务理解
13. 运行时调用链路聚合分析
执行轨迹
按轨迹拓扑
结构聚合
业务流分析概念模型
执行路径
按途径的关
键服务聚合
业务流分析示例
业务流
Xiaofeng Guo, Xin Peng, Hanzhang Wang, Wanxue Li, Huai Jiang, Dan Ding, Tao Xie, Liangfei Su: Graph-based trace analysis for
microservice architecture understanding and problem diagnosis. ESEC/SIGSOFT FSE 2020 (Industry Track).
14. 基于调用链路聚合的业务架构可视化分析
基于海量轨迹聚合的业务流分析流水线
业务架构
可视化
业务架构
变化对比分析
Xiaofeng Guo, Xin Peng, Hanzhang Wang, Wanxue Li, Huai Jiang, Dan Ding, Tao Xie, Liangfei Su: Graph-based trace analysis for
microservice architecture understanding and problem diagnosis. ESEC/SIGSOFT FSE 2020 (Industry Track).
15. 云原生软件架构分析:从开发态到运行态
开发态
基于代码和提交历史等开发态数
据分析各种关联关系,例如:
调用关联(代码静态分析)
数据关联(代码静态分析)
主题关联(代码文本分析)
演化关联(提交历史分析)
运行态
基于部署和运维日志、调用链路等运
行态数据分析各种关联关系,例如:
调用关联(调用链路分析)
数据关联(调用链路分析)
演化关联(部署历史分析)
指标关联(指标波动分析)
16. 基于运维数据的云原生软件架构评估
S 1
S 2
S 1
弱循环调用
S 1
S 2
S 1
S 3
S 2
服务内聚度弱
强循环调用
S 1 S 6
S 2 S 7
S 3
S 4
S 3
S 5
S 6
S 4
S 3
S 5
S 2
S 8
S 9
服务间耦合度高
基于调用链路等运维数据实现对于服务拆分、
分布式通信、可用性保障等方面的设计评价
针对架构退化进行早期预警
枢纽式服务
Xin Peng, Chenxi Zhang, Zhongyuan Zhao, Akasaka Isami, Xiaofeng Guo, Yunna Cui: Trace Analysis based Microservice
Architecture Measurement. ESEC/SIGSOFT FSE 2022 (Industry Track).
17. 面向架构评估的链路数据模型及指标定义
服务调用链路
数据模型
评估指标定义
(部分)
Xin Peng, Chenxi Zhang, Zhongyuan Zhao, Akasaka Isami, Xiaofeng Guo, Yunna Cui: Trace Analysis based Microservice
Architecture Measurement. ESEC/SIGSOFT FSE 2022 (Industry Track).
18. 总结
19. 展望
问题日渐突出:架构治理问题日渐突出,引发更多关注
融合数据分析:融合链路与其他动静态数据实现综合分析
构建数据基座:面向可持续发展建立统一的数据基座
丰富分析手段:指标性评估与趋势性分析相结合
建立治理体系:建立监管和数据标准,自治与调控相平衡
20.