1、基于模式挖掘的可靠性治理探索美团优选事业部自我介绍孙玉鑫,2018年加入美团专注于服务端质量保障和效率提升,在自动化建设、稳定性治理等方向积累了较多经验1.可靠性治理的痛点2.什么是模式3.大数据下的尝试4.典型实践分享目录为什么要做可靠性治理安全性和可靠性都是信息系统的固有属性,却很容易成为换取更快交付速度的代价,而事后则需要高昂的修复成本。对照Google可靠性七层模型,我们日常在设计和开发阶段的可靠性相关投入较低。而这一阶段积累的问题,需要在后续的容量规划、测试、发布、复盘、应急和监控等多个环节投入更高成本来发现。基于这个现状,我们需要找到低成本且有效的方式来发现和治理这些问题。可靠性治
2、理的挑战面向弹性的设计幂等性、健壮性、一致性面向失败的设计超时、限流、熔断面向变化的设计容量规划、容量验证模糊度模糊度最常见的两种情况Overfitting:很多时候我们只能Case By Case的处理单点问题,无法解决潜在的同类问题。例如一个接口存在幂等性问题,那么我们可以很快修复问题,并添加幂等性相关的用例。但还有哪些接口有问题是无法穷举的Underfitting:我们清楚知道某一类问题需要被关注,但不能确定具体的解法。例如主从延迟会带来一致性风险,我们会强调相关验证的重要性,并制定规范,但由于没有确定的规则,并不能保证这一类风险得到控制 1.可靠性治理的痛点2.什么是模式3.大数据下的
3、尝试4.典型实践分享目录模式的定义维基百科中的定义:A pattern is a regularity in the world,in human-made design,or in abstract ideas模式揭示了这个世界上,人工设计和抽象思想中的规律。1904年,瑞典数学家柯赫构造了“Koch曲线”几何图形软件工程中的模式1991年Erich Gamma获得博士学位后去了美国,在那与Richard Helm,Ralph Johnson、John Vlissides合作出版了Design Patterns-Elements of Reusable Object-Oriented Sof
4、tware 一书。在此书中共收录了23个设计模式。这四位作者在软件开发领域里也以他们的匿名著称Gang of Four(简称GoF),并且是他们在此书中的协作导致了软件设计模式的突破。软件工程中的模式2017年,微软AzureCAT模式和实践团队在Azure 架构中心发布了9个新的微服务设计模式,并给出了这些模式解决的问题、方案、使用场景、实现考量等。外交官模式(Ambassador)防腐层防损层(Anti-corruption layer)后端服务前端(Backends for Frontends)舱壁模式(Bulkhead)网关聚合(Gateway Aggregation)挎斗模式(Sid
5、ecar)技术场景中的模式Cache-Aside(Lazy Loading)Write-Through如何找到这些模式业务数据、用例积累、专业知识、故障复盘等,都是有效的输入,其中来自真实用户行为的海量业务数据蕴含巨大的潜力。1.可靠性治理的痛点2.什么是模式3.大数据下的尝试4.典型实践分享目录流量采集技术的成熟随着JVM非侵入式运行期AOP解决方案的成熟,我们可以进行任意环境下各种协议流量和依赖数据的采集。也可以在测试环境回放线上的真实业务流量。环境隔离技术的发展依托分布式弹性块存储服务,测试数据隔离已经具备一站式解决方案,如存储编排快速构建和销毁、存储编排管理、数据隔离与自动路由、数据同
6、步/导入等,业务在使用时只需做简单的配置即可做到测试环境数据“即拿即用”。自动化测试还有哪些可能流量采集和环境隔离的能力,给自动化测试带来了新的可能,也让可靠性治理有了新的思路。流量采集请求参数返回值调用链路.环境隔离数据隔离服务隔离消息隔离RPC隔离.规则(接口用例)模式模型(场景用例)业务测试可以结合代码逻辑和业务模型,进行功能覆盖。但可靠性治理不同,我们需要识别技术选型,挖掘潜在模式,面向不同业务解决一类问题。相较于规则测试有更高的模糊度挑战,相较于模型测试有更高的通用性要求。为什么是模式模型模式规则 变更识别 功能覆盖 幂等测试 健壮性测试 接口测试 Diff测试 1.可靠性治理的痛点