【稳定性】从项目风险管理角度探讨系统稳定性

京东云开发者
• 阅读 246

背景:

在软件开发过程中,系统稳定性是一个重要的考量因素。它直接影响到软件的性能、可靠性和用户体验。然而,由于各种原因,如需求迭代、架构升级、配置变更、人力变动、系统不熟悉等,系统稳定性可能会受到影响。一直想写一篇风险管理的文章,想着从项目管理的风险维度出发,对系统稳定性进行有效的风险管理,来保证系统稳定性。



文章中会出现一些项目管理知识的专业术语,先来个日常生活中上班堵车风险的案例对PMP中风险管理有个初步概念



【稳定性】从项目风险管理角度探讨系统稳定性



一、风险概念

分类 已知风险 未知风险
概念 包括已知的已知、已知的未知 未知的未知
共性 ▣ 已知风险和未知风险都是不确定性事件,本质上都具备风险的四个要素,即:事件、原因、概率和后果 ▣ 两类风险一旦发生,都需要执行应急措施来处理,相关费用最终都应计入到项目成本中。
联系 ▣曾经的未知风险一旦发生后,就变成今后的已知风险。▣ 对已知风险的应对,可能带来次生的未知风险。

已知风险 VS 未知风险

区别 已知已知风险 已知未知风险 未知未知风险
风险事件 已识别出 已识别出 未识别出
风险原因、概率、后果 清楚 不完全清楚 完全不清楚
应对策略 规避/解决 主动承受 被动承受
应对计划 可规划 无法清晰规划 不可规划

二、规划及识别风险

识别风险是风险管理的第一步。对于系统稳定性,小组长需要密切关注需求的各个环节,及时发现可能导致系统不稳定的因素。

1.【需求】需求不明确或不完整是一大风险因素。如果产品经理的需求文档存在不明确或不完整的情况,那么项目的开发和测试都会面临较大的风险。在这种情况下,如果能够及时与产品经理沟通、明确需求,就能够减少风险,否则,项目上线后就会面临更大的稳定性挑战。

2.【架构】系统架构设计维度,思考是否存在风险

3.【编码】开发代码,思考技术是否向前兼容,如果有问题,如何快速发现问题,解决问题

4.【测试】测试边界是否覆盖周全、引流场景是否覆盖周全,比如Promise有些场景可能只有大促才有。

5.【上线】上线doublecheck,配置变更、如果灰度、验证、监控等

6.【验证】业务是否验收完成等

风险识别技术非常的多,包括:信息收集技术(头脑风暴、德尔菲技术、访谈、根本原因分析),假设分析,图解法(因果图、系统或过程流程图),SWOT分析,专家判断。



【稳定性】从项目风险管理角度探讨系统稳定性



集思广益会:针对复杂的场景可集思广益,目的是取得一个详尽的风险清单,可将风险分解结构作为:框架分类汇总,是最常用的风险识别方法。

风险登记册:记录已识别单个项目风险的详细信息,一般团队内部使用。始于风险识别过程,以后的风险管理需要对其更新。包含:已识别的风险清单、潜在风险应对措施、风险跟进人。

三、定性定量风险分析

对识别出的风险进行定性和定量分析,可以帮助团队更准确地评估风险的影响程度和可能性。

分类 定性风险分析 定量风险分析
概念 定性风险分析是对已经识别出的每一个风险进行主观分析,判断各风险发生的可能性和后果,并通过综合考虑可能性和后果来确定各风险的严重性,对各风险进行初步排序。 定性分析的结果要写入风险登记册,例如风险的可能性和后果、风险级别、风险排序、紧急风险、需进一步定量分析的风险、只需待观察的风险、风险归类。 定量风险分析是对被定性分析确认为严重而且又可量化分析的风险的客观分析。定量分析的结果要写入风险登记册。
共性 ▣ 都是风险管理知识领域的项目管理过程,都要用“专家判断”这个工具与技术。 ▣ 都要根据风险管理计划中的相关规定进行。 ▣ 定量风险分析要用到数字,定性风险分析也有可能要用到数字。例如:在定性分析中,可以用数字表示风险的可能性和后果;定性风险分析的工具“风险概率和影响矩阵”可以是由数字组成的。 ▣ 要根据定性分析和定量分析的结果来制定风险应对策略和措施。
联系 ▣ 定性分析的结果是定量分析的基础。
区别 ▣ 对已识别的每一个风险都要做定性分析,但不是对每一个风险都要做定量分析。许多风险,可在定性分析之后,跳过定量分析,直接进入规划风险应对过程。 ▣ 定性分析是主观的分析,即:不同的人很可能会得出不同的分析结果。定量分析是客观的分析,即:只要所依据的数据是一样的,不同的人会得到相同的分析结果。 ▣ 定性分析,作为主观分析,灵活性较大。定量分析,作为客观分析,灵活性较小。在定量分析中,必须采用一些硬性的分析技术,如决策树、敏感性分析、蒙特卡洛模似



【稳定性】从项目风险管理角度探讨系统稳定性







【稳定性】从项目风险管理角度探讨系统稳定性



四、风险防范

风险防范的目标并不是让风险出现的可能性降到零,这是不切实际的想法,专业的风险防范要做的其实是两件事情。

第一:要将【未知的未知】尽可能转化为【已知的未知】,再将【已知的未知】转化为【已知的已知】,当然这里面要考虑成本问题。比如梳理历史代码逻辑等等。

第二:对于无法防范的风险,做好应急预案,将它的损失维持在最小

根据系统论的原则,一个系统在受到刺激之后会做出响应,如果一个刺激是完全未知的,那系统受到刺激做出的响应就是未知的未知。



越是稳定的系统,刺激和响应之间的关联性就越好,响应所带来的风险也越容易控制。因此要防范风险就要把系统做稳定了,尽量让系统对于各种刺激做出的响应是可预期、有应对方案的。

对于一个不很稳定的系统,最好的做法就是尽量不要给它新的刺激,以免出现意想不到的反应。比如对于一个情绪不稳定你又不了解的人,就不要去刺激他,否则结果就难以控制



五、监督风险

TL组长要定期对风险进行监督,以确保风险管理措施的有效实施。

例如可以通过每日站会、每周周会了解项目进度和遇到的风险问题;通过持续集成和自动化测试,监控系统的运行状态;通过定期的代码审查和性能测试,确保系统的稳定性。

六、案例实践:

背景:团队最近开发了一个XXX需求,牵扯时效内核计算底层变更,原计划2人日*3周开发。

1.风险监督:由于事先知晓该需求存在很多已知已知风险,故每日站会会单独review该需求进行风险监督。在过程中发现进度有风险(日常打扰事宜较多、范围评估不准),进行了人员调整投入(从2人增加到3人)

2.识别风险:研发编写代码后,在编写单测场景中遇到很多特殊场景,不断确认,最终发现改动牵扯范围比预期的广(很多场景影响了其他业务),存在很多 已知未知、未知未知风险。

3.定性定量风险分析:针对特殊场景登记到PRD中(类似风险手册),并且备注影响范围等

4.风险防范:

4.1、将【未知的未知】尽可能转化为【已知的未知】,再将【已知的未知】转化为【已知的已知】

经过定性定量风险分析后产品同事牵头、研发、测试一起跟业务反馈风险点。并且弄清楚本次需求背后要解决的问题优先级到底是什么?每个问题影响面多大?是否有其他方案解决?

4.2、应对策略,即满足业务需求又能将风险降低到最少

经过跟业务沟通,本次需求背后需要解决3个问题,其中1个问题不紧急,业务可人工干预调整,第2个问题是上游需要去解决的,核心是第3个问题是必须要解决的。针对这找出了核心问题。本次需求只需要覆盖问题3,经过分析调整,问题3改动范围明确并且改动范围小,当场输出排期并且制定上线日期

最终是即满足了业务的最大诉求、研发对改动范围又小、也规避了最大风险、保障了系统稳定性。

思考:

1、隔离:系统A业务 和 B业务 隔离

2:思考需求背后是要解决什么问题?现在方案对系统风险大吗?是否还有方案?最终取舍平衡。

七、总结:

从管理风险维度出发,通过对风险的规划、识别、分析和监督,团队可以有效地管理系统风险,从而提高系统稳定性。



附: 项目管理的风险管理:包含成本风险、进度风险等多维度



【稳定性】从项目风险管理角度探讨系统稳定性





参考:

已知风险VS未知风险:https://blog.csdn.net/david_520042/article/details/118784646

定性风险分析VS定量风险分析:https://blog.csdn.net/david_520042/article/details/118887635

项目风险管理: https://blog.csdn.net/sun_meiko/article/details/127902352

点赞
收藏
评论区
推荐文章
公孙晃 公孙晃
1年前
Mac系统清理工具:Cocktail
CocktAIl是一款功能强大、易用的mac电脑维护工具,它的系统优化、硬件维护、系统维护、文件管理、系统信息等特点,可以帮助用户更加方便、快捷地进行Mac系统维护和管理,提高系统的效率和稳定性...
架构师日记 - 从技术角度揭露电商大促备战的奥秘 | 京东云技术团队
本文从技术角度深入分析了大促备战的背景和重要性,重点介绍了备战期间稳定性保障的相关措施,包括具体的指导方向和落地细节。本文旨在回顾和梳理备战期间的关键步骤,以帮助我们更加从容的应对系统稳定性的挑战。
浅谈常态化压测 | 京东物流技术团队
随着业务的不断增长,支撑业务系统的压力也逐渐增加,会面临如系统越来越厚重、逻辑越来复杂、迭代节奏越来越快等繁杂的情况。我们当前并没有做到在每次变化时快速识别出性能风险,检测产品或系统的稳定性、可靠性,而且我们还在不断的投入人力成本在压测这件事情上也是不合理的,所以我们要将性能验证融入到我们日常的工作中,把压测做到常态化,做成平常的一件事。
【稳定性】稳定性建设之弹性设计 | 京东物流技术团队
弹性设计为系统稳定性建设提供了一种新的视角和方法,它有助于提高系统的可用性、性能和安全性,同时也降低了维护和修复的成本和风险。
API 小达人 API 小达人
1年前
实用干货丨Eolink Apikit 配置和告警规则的各种用法
API在运行过程中可能会遇到各种异常情况,如响应时间过长、调用频率过高、请求参数错误等,这些异常会对系统的稳定性和性能产生严重影响。因此,对API进行异常监控和告警是非常必要的。本文将介绍EolinkApikit中使用的告警规则,帮助开发者和运维人员更好地监控和管理API。
京东云开发者 京东云开发者
8个月前
稳定性方法论:可灰度 & 可监控 & 可回滚
业务系统核心目标是挣钱,系统稳定性建设核心是防止丢钱(丢钱逻辑如下图所示),站在公司的角度看,产品功能建设和系统稳定性是同等重要。前段时间写了《》,该文章在稳定性建设的理论和实践基础上,抽象出稳定性治理的框架,希望建立一个稳定性治理的标准动作、最佳实践。但
京东云开发者 京东云开发者
3个月前
当系统闹脾气:用「因果推断」哄稳技术的心
背景系统稳定性问题往往涉及复杂的因果关系。例如,一个系统的崩溃可能由多个因素引起,包括硬件故障、软件bug、业务配置、外部攻击或其他操作不当等。理解这些因素之间的因果关系对于系统稳定性建设至关重要。举个例子:服务雪崩A服务调用B服务之间发生了雪崩效应,原本
京东云开发者 京东云开发者
1个月前
【稳定性】稳定性建设之变更管理
作者:京东物流冯志文背景在软件开发和运维领域,变更管理是一个至关重要的环节。无论是对现有系统的改进、功能的增加还是修复漏洞,变更都是不可避免的。这些变更可能涉及到软件代码的修改、配置的调整、服务器的扩容、三方jar包的变更等等。然而,变更的执行过程往往伴随
taskbuilder taskbuilder
16小时前
任擎Tasgine应用服务引擎
1任擎简介在开发一个企业级管理软件时,首先要考虑的是系统底层的基础性功能,例如组织结构管理、角色管理、操作权限管理、身份验证、系统日志记录和查询、系统UI界面、系统门户、消息推送、文档存储等等。另外,还得考虑系统的稳定性、兼容性、安全性、可扩展性和性能等,