目录
一、背景
在每天做的项目中,我们都会或多或少,或直接或间接和钱打交道。如果你目前正在负责支付类的业务,恐怕资损防控更是业务和系统的底线了。目前由于资损防控涉及的方方面面非常多,目前尚没有“一剑封喉”的解决方案,但通过团队成员、各个角色的投入,可以尽可能减少资损问题的发生,或减少其带来的损失。
二、什么是资损
资损,通常是说,由于产品设计、实现异常、误操作等等,导致公司、用户、客户直接或间接承受了资金损失。
广义上,只要系统运行后的资金与业务预期的资金不一致,都是资损。资损中又可分为:可追回,不可追回。
三、资损防控方案
1、目标
- 尽可能少/小发生资损事件
- 尽可能快发现资损问题
- 尽可能快速减少资损带来的损失和影响
2、方法论
思考方向
- 事前规避(尽可能预防)
- 事中发现(及时发现)
- 事后快恢(及时止血)
业务操作的完成,必然会有数据相对应。而资损的发生必然对应数据的不正确。因而,建设 资损防控能力,必然要始终围绕 业务和数据两个方面来进行。但要应用资损问题,还需要在深刻理解业务的基础上,分析资损问题的产生原因,才能对症下药。资损问题产生的原因多种多样,从需求设计、技术实现、测试、上线、运营等等方面都可以找到许多典型的例子,资损产生的原因主要来自于产品设计、系统故障、缺陷、人为操作、安全漏洞。但 资损防控中,最为核心的触发点是:系统中风险点的梳理,只有暴露了风险,才能有针对性的应对。
预防能力,从风险点梳理开始
1、需求设计中的风险点
业务中的资金流向;
异常场景交互;
用户异常操作;
资金口径/规则;
二义性/易用性;
2、系统设计中的风险点
资金监控能力
鲁棒性(熔断,重做,回滚,超时处理,幂等)
并发/分布式问题
资金平衡问题(正向资金、逆向资金的平衡规则)
ps: 架构合理性,比如,缺少幂等考虑,金额表达方式不一致
3、测试设计中的风险点
资损专项测试
资金流的回归
与第三方业务的测试覆盖度
发现能力在于问题发现的范围与速度
1、发现问题的范围;
2、发现问题的时效性;
方案:
灰度发布能力,相比于功能,资损问题可能需要更长时间才能暴露,所以需要选择流量来尽可能快的暴露问题;
监控能力,对异常情况,资金趋势的监控
对账能力,核对两个业务系统的流水的数据一致性;这部分个人认为是值得开发同学、测试同学投入精力的部分。
ps: 为了保证 数据、场景更接近线上,可以考虑优化测试环境的真实性,比如 线上引流方式,提前暴露不同场景的问题
快速止血能力来自对问题处理的迅速反应
目标:第一时间减少用户侧的损失;
方法:资损演练
四、资损演练
目标:实际上是为了验证资损防控中的发现能力,处理能力
具体目标:资损问题能够快速发现(如1分钟),快速定位(如5分钟),快速恢复(如30分钟),快速复盘(如半天~1天)
具体操作:各个环节进行打分
具体手段:资损故障注入(历史的故障场景、风险场景、异常场景)
输出:风险点数量、故障注入数量、资损止损数量
资损演练类似故障演练,就是通过各种手段模拟资损的场景,观察问题暴露能力(如:系统监控告警)问题处理能力(如:多久可以定位问题,解决问题等)