针对支付宝最近出现的八折优惠事故,说说如何才能避免类似事件的发生?

Sherwin.Wei Lv7

针对支付宝最近出现的八折优惠事故,说说如何才能避免类似事件的发生?

回答重点

根据官方回应出现 bug 的原因是运营人员配置错营销模板导致的,即优惠额度和优惠类型都写错了。

image.png

实际上,类似的人为错误是难以完全避免的。作为开发人员,我们可以从产品技术的角度出发,思考如何尽量降低人为失误的发生几率,并通过及时的预警、拦截等机制,在出错后减少资损。

从产品侧思考

很多敏感场景我们需要“防呆设计”,例如用户需要输入日期这个场景,程序通过日期格式验证(如:YYYY-MM-DD),并且如果用户输入不合规范(例如输入2025-31-14,超出合理范围),则程序给出错误提示并要求重新输入,这其实就是防呆设计。

例如,在工业上这样的设计就是防呆设计:

image.png

回到面试场景,针对资金、资产相关配置,产品上的设计可以考虑以下几点:

  • 多重审核:营销模板系统可以设计一个“草稿-审核-发布”的流程,确保在发布之前,经过多重人员审查,避免因配置错误导致资损。(不清楚为什么支付宝这次会出现这样的错误,因为这种配置按照正常流程肯定是多重审核的)
  • 多个优惠类型的冲突检测:在配置多种优惠时,系统应该检查不同优惠类型的冲突。例如,如果一个活动允许使用“满减”优惠,同时又允许使用“折扣”优惠,系统需要确认两者是否允许叠加使用,或限制其只能选择一种优惠。产品侧需强提醒(例如弹框)运营当前优惠有叠加,是否确认配置
  • 合理校验优惠额度上限:在设置优惠额度时,系统应该能够检查是否超过了预设的上限。例如,对于某些活动,优惠额度不能超过商品价格的 100%(避免用户获得免费商品)。如果优惠类型为折扣,系统应确保折扣比例在合理范围内,如果优惠力度过大,则需要强提醒(例如弹框),比如优惠了 70% 这种
  • 合理校验优惠范围:如果优惠品类过多,例如选择了几十种品类,或者直接选择了全品类这种范围的优惠也需要强提醒,进行二次确认,甚至三次确认(选择全品类时一次确认,最终提交时候再次确认)。

从技术侧思考

  • 即时监控和告警:对于优惠活动的应用情况,设计实时监控机制,任何不符合预期的异常(如优惠幅度异常、超出预算等)要第一时间告警。比如,如果在短时间内大规模用户(像以前pdd的拉新活动,变成了所有用户可享,很明显数据量肯定是异常的)都获得了折扣,可以通过日志分析和支付流水对比,及时发现异常。
  • 环境隔离:测试环境和正式环境一定需要有严格的隔离机制,例如网络隔离、数据库隔离等等。因为有太多太多问题是因为测试数据流入正式环境导致的(因为测试往往需要改价、配置大额优惠等等)
  • 自动熔断:针对一些优惠可以预设一个资金池,即最大优惠总额,当超过预设的范围则自动熔断,后续所有优惠直接失效,防止资损进一步扩大。(实际上大部分营销活动都有一个优惠预期,最大优惠总额可以比优惠预期多一些)
  • 系统默认兜底检查:例如同一用户多次短时间内享受了优惠、优惠额度不能超过商品价格的100%等等。很多时候我们写代码都需要考虑兜底,这样代码和产品才会健壮。即尽可能的避免人为的错误产生影响(把系统的使用者当成呆子,他们就是会做一些神操作,而你就是系统的最终守护者!
Comments
On this page
针对支付宝最近出现的八折优惠事故,说说如何才能避免类似事件的发生?