暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

谈谈稳定交付(二)——工程能力

拖地先生 2021-12-06
788

正文共: 2146字,预计阅读时间: 8分钟


谈谈稳定交付(一)——研发过程》中提到的系统稳定,从软件分层、岗位过程和运行状态来看,用这三句话概括:

  • 符合预期的功能交付

  • 不中断的使用体验

  • 具备持续交付能力的团队

这篇来聊聊第二点,如何实现“不中断的使用体验”。




从代码上线的那一刻起,产品和研发真正进入了验证阶段,不管是人还是机器,作为用户都在实时地反馈着运行的体验。研发经常面对老板灵魂拷问的“稳定”,也大多是用户核心体验遭受损失的时候。


人总是难免出错的,尽善尽美的设计不论从产品还是研发来说,在时间和成本的制约下都不可能达到。从解决问题的角度,尽快识别体验受损,先于问题带来负面影响或扩大范围就修复,是一个更容易收敛的方向。


那么,如何识别体验受损。


用户投诉时,影响就已经扩大。从经验看,一个投诉背后可能一千个用户已经受影响。自己人不可能每时每刻都盯着产品使用,如果用户是机器,投诉无从提起。一个已经被证明的方式是数字度量


用户的行为体现着他们的体验,行为可以用数字来度量。产品承载的是业务,因此核心体验就是核心功能的度量。单位时间内的支付笔数或登录数、核心使用路径的转化漏斗等等,都可以从核心功能中加以识别并数字化。


有了业务的量化,如何体现在系统中?


在研发面试中有一道经典问题:“浏览器中输入URL后回车到页面完全展示,发生了什么?”这个问题的回答能够体现基于业务和架构思考的全面性,继续基于回答的深挖,可以得到技术深度的细节验证。


这个问题体现的是,系统承接的业务实现,就是业务数据的流转过程。用户体验是否中断,就是数据流转是否中断,或者数据流速带来的延迟是否匹配用户的忍耐范围。


到这里,我们有了第一个方向——一切尽在掌握识别用户、定义核心功能和路径、梳理业务数据流转过程、摸排可能带来数据中断的点、摸排计算或传输延迟的场景。




有了方向,接下来的问题是如何实现。数据中断和数据延迟分别代表的是高可用的两个场景:容灾和性能,这也代表着工作实现的两个目标。


同样的,任何工作开展前,都需要基于目标进行度量,或者是定义度量的方向。通常的定义有:容量、可用性、时延、错误率、是否人工。人工这一项经常会被忽略,这是工程产品化的基石,背后意义是在问题出现时的处理速度,能否深入演进至系统自愈。


度量后的关注点是波动,任何数据波动都可能是稳定性的隐患,基于波动去定义场景、问题和解决方案。而平均数据的变化,就是体现团队工程能力最佳的注解。


有了目标和度量,需要具体展开工作了。一个是梳理,一个是应对应对在所有研发团队日常中多多少少都有体现,核心点在于梳理是否全面,是否做到一切尽在掌握,抓住数据流转这个方法就能够保证线的完整度。唯一要注意的是梳理落实在应用级,避免业务流在集群中的流转被遗漏。



数据流完整了,也需要对每个点的全面性做确认。通常我们会从IaaS、PaaS、SaaS或业务层来区分注意点。业务规模小一些的,或者完整基于云原生的,PaaS的的要素可能会合入IaaS或者业务层考量。


IaaS层是硬件基础,四大硬件点:内存、网络、磁盘、CPU。还有物理部署,属于架构的范畴,但很容易被忽略


PaaS层根据业务不同差异较大。一方面是业务中台,背后是服务化管理。一方面是广泛被应用的大数据和流批计算套件。要点是集群、应用、数据。如果基于云原生,要省去很多动手的工作,同时风险也被转向外部开放,在应对中需要在业务层多加考虑,同时要和云厂商建立深度的合作内容。


PaaS中容易被忽略的有两点。一个是开源套件中的管理应用,很容易在业务流中忽略掉服务治理流。在服务治理流中的数据和应用是否具备高可用,会在意想不到的时候出现一个大坑。另一个是数据中的状态,与持久化的数据和配置相比,状态数据会影响到服务完整恢复的周期,由于广泛应用开源,通过演练能更容易暴露出关注点。


业务层方面,除了开篇提到的业务度量,确认核心业务和业务等级能够极大控制解放方案的复杂度。



有了完整的梳理,应对的工作就是确定性的。工程方面,架构、监控、灰度(无感发布)、弹性伸缩、限流、熔断,基于不同的业务场景都有非常成熟的解决方案,取舍在于演进过程。一些短期难以自动化或者复杂度必须人介入的,就需要有预案的准备,并辅以流程制度来减少人为出错的场景或者范围。


上述是服务器角度,web或移动端方法类似,可以参考《移动互联网技术质量体系的理解》。从中断和延迟看,分别有如下的方向,由于数据体量可控,因此直接抽出一些北极星指标更容易集中收敛。





实现不中断的体验,体现的是研发团队的工程能力,在不同业务水平下,需要适度进行工程建设。虽然一个有追求的团队目标是全面的工程产品,但一口吃不成胖子。在过渡期采用适当的流程规范,以人力为建设过程提供缓冲是必要的。

最后基于这个体系,附上以我们团队情况建设的脑图供大家参考。


拖地先生,从事互联网技术工作,在这里聊聊日常的实践和心得。往期推荐:

说说这个公众号

平均响应1000ms到200ms,PHP和Go那家强?

技术产品职业瓶颈?29份腾讯通道材料教你成长

低头赶路,也别忘了抬头看天

加班能解决交付的期望么?

谈谈稳定交付(一)——研发过程

如果对你有帮助,让大家也看看呗~

文章转载自拖地先生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论