当前位置: 首页 > 科技观察

高并发挑战带来的思考看阿里如何带领业务方玩转交易平台

时间:2023-03-20 17:33:58 科技观察

【.com原稿】自2009年11月11日起,“双十一”成为盛大的狂欢购物节。谈到购物和电子商务,人们最关心的是GMV(商品交易总额),或者说高峰期的压力,却忽略了这个平台的技术有多成熟。随着双十一的开展,越来越多的“卖家”参与到双十一活动中,这给阿里的技术带来了不小的挑战。时间短,质量要求高。阿里巴巴业务平台事业部资深专家余刚先生坦言,如何降低开发门槛,让每个业务都能自己开发一个交易平台来应对高峰压力,已经成为阿里亟待解决的问题。《企业门诊》第二期跟大家聊一聊交易平台如何更好的满足业务方,从而提高研发效率。症状一:开发门槛高。从2009年到2016年,双十一活动已经持续了7年,阿里的技术也在不断丰富和创新。面对众多的支付业务,阿里选择了所有业务在同一个交易平台完成的方式。这个平台是一个大流程,所有的商家都通过这个流程完成交易。每个业务在流程上的定制点写在一起,通过优先级、组合等关系完成一些业务场景。一个好的平台可以让平台上的用户自己完成研发,不需要平台人员的支持。一旦满足这个要求,就应该尽可能地降低平台的门槛。但相反,一个能够支持各种情况的大型交易平台,其流程会比较庞大和复杂。长此以往,开发门槛会变高,业务方无法自行完成研发。面对这个矛盾的问题,如何降低平台的开发门槛成为唯一的难题。症状二:开发成本高为了降低自助平台的开发门槛,不得不改变原来离散的定制点,高成本也成为一大问题。离散的定制点使得各业务方从头开发,难以复用,从而导致两个高成本问题:人工成本和时间成本。阿里使用的交易平台是一个流程非常复杂的模型,需要专门的团队维护,每个业务方都配置自己的研发团队。由于平台开发门槛高,业务方的研发团队需要平台维护人员的支持才能顺利开发。这样的重复,在这个过程中会消耗大量的人工成本。另外,业务方的定制都混在一起了。小企业一旦出现失误,很可能会牵连到非常重要的企业。总之,流程中的每一个业务都是写在一起的,相互影响,相互牵连。一错一错的模式,会耽误很多商家的后续流程,浪费太多的时间。在意识到现有的交易平台不能很好地满足业务后,阿里进行了深入分析。平台必须降低开发门槛。业务方在开发前不需要了解全局,只需要关注自己应该关注的定制点即可。各个业务方的代码也应该相互隔离,平台可以针对某个业务场景提供功能包,保证如果出现错误,问题方只影响自己的业务,避免各个业务的发展从头开始所产生的开发成本。处方:开放隔离业务可以使用交易平台进行自助开发,需要平台开放。以“双十一”为例。参与活动的商户有数百万,每个商户的活动都大同小异。一个标准化的平台如何满足如此大量的个性化交易需求?如果为买卖双方提供一个开放的在线交易平台,业务方无需考虑平台的整体情况,只需专注于自己需要的定制点即可完成开发。这相当于降低了开发门槛,高效满足业务需求。对于开发成本高的问题,于刚先生认为,平台一定要隔离。平台可针对不同业务场景提供业务包功能。业务包包括业务使用场景、业务产品、扩展点定制。场景由实例组成。系统通过各种信息确定业务的唯一身份,然后反馈给相应的业务包,完成交易流程。通过这种“私人定制”业务包功能,可以很好的避免业务与业务之间相互牵扯的问题,从而提高研发效率,节约开发成本。综上所述,对于一个需要多团队协作的复杂平台,从平台所支撑的业务方的角度,如何降低其学习门槛,提高研发效率,是自助的概念。平台要开放,才能发展业务;做好隔离,才能发展业务。同时,建立沉淀机制,让更多的能力在业务之间复用,提升整体研发效率。阿里使用的解决方案基础能力延伸阅读:通过域组织交易的基础能力,通过扩展点机制提供业务方可能定制的业务产品:跨域定制最终可以完成特定的业务场景,产品和业务场景可以直接使用:具体交易模式的流程定义,可以包含业务使用产品的声明业务包:由业务方自己开发,业务包指定了业务和业务使用的场景要使用的产品,以及基础能力扩展点的定制。每个业务包都有自己的场景实例。系统在请求时通过商品、用户等信息确定唯一的业务标识,路由到相应的业务包执行后,根据业务包中指定的场景、产品、扩展点完成。业务事务处理,从而实现业务与业务之间的隔离。业务运营平台:提供业务报表周期的管理,如业务的创建、配置、下线等,每个层级都可以通过代码中的注解自动展现给运营平台,通过平台的运营,业务方可以看到自己业务选择的场景,使用了哪些产品,做了哪些定制。信息与代码实现完全一致,相当于拥有了一个动态文档,从而避免了人员流动带来的原始文档更新不及时、业务逻辑不清晰等问题,同时降低了成本学习。***进行测试。人工准备用例库覆盖率难以保证,而且各种业务结合时,测试边界不清晰,离线环境测试的数据也不稳定,这对自动化测试方式来说难度很大。但线上环境验证难度大,测试难度不小。面对测试,阿里认为因为线上数据场景最齐全,所以保证使用线上数据进行测试,而且是采用自动化测试,不会影响线上。最终的测试方案,通过线上的录音请求,以及系统对外服务的调用,保存结果,然后离线读取录音结果。当系统回放给驱动程序请求时,执行过程中将使用所有对外部服务的调用。mock,并直接返回到线上记录再到相应的返回结果,全程自动执行,记录的数据可以按照业务、场景等多维度进行组织。【原创稿件,合作网站转载请注明原作者和出处为.com】