其他
严选品牌视角下的2B架构实践
本文从严选品牌的视角分享2B系统架构设计上的一些挑战和实践,希望在2B领域的一些架构思考和方法论能够引起更多的探讨和共鸣。本文内容涉及供应链、物流、商品、客售等相关系统的一些案例。
1. 写在前面
2. 严选2B系统的特点和挑战
品牌模式决定严选不可能像传统电商大规模自建仓储物流等业务基础设施 ; 爆品驱动背景下核心品类的业务运作精细化要求不同于电商更注重大盘最优的运作方式; 从供应商到用户横跨供给、履约、销售的完整生意链路运作的多样性大于单纯围绕售卖场的流量运营;
用户和角色不同:2C的终端用户相对固定,2B用户呈现出用户类型多,用户角色更多的特点,使得对于围绕用户的系统交互、权限、规则等呈现出更多样、更精细的诉求。 通常2C产品,我们很少讨论用户角色,因为通常我们的身份就是终端用户,而对于2B,一个公司组织下的不同部门、不同个人使用产品系统处理工作的职责都不尽相同,一个组织一个部门就是一个大的角色,一个部门下又有很多小的角色,比如:供应链团队下有计划、采购、品控、仓储等等大的职能,品控职能下还有QA、SQE、QC、合规等等小的职能角色,再细化甚至还有不少的小角色,同一个人甚至又分饰不同角色,这么多的角色配合才完成了整个严选从供应商到用户的端到端的流程协作,这么一个复杂的流程势必在多角色的交互、协同,功能和和数据的权限控制上都有着差异化的协作和管理诉求; 所以: 如何支持不同用户、不同角色在不同场景下差异化的管理和权限诉求; 如何更好地完成多角色间的系统联动体验; 如何更好地满足不同角色特定行业特定场景下的精细化诉求; 业务场景和功能:呈现出长链路、长周期、业务模式多样的特点,整体业务的组织、流程和规则复杂度高,使得对于系统的全生命周期监管、一致性的协同体验、架构层面的流程、规则、领域抽象有较高要求。 举个商城的例子,在2C的环节我们直接能够看到商品、购买商品、产生交易、收到快递就完成了一个简单地商业交易行为,但是与之对应的是一条从供应商到用户手上横跨商品研发、生产、物流、仓储、配送的复杂生产履约链路。 这个过程涉及到计划下单、生产排期、预约入库、到货履约、仓库存储、物流下单、拣货、打包、出库、配送等等数十个大节点,光是一个拣货又有这波次、拣选、分拨等等很多细分的业务操作环节;流程长、业务场景多: 任何一个环节出现问题都会影响最终的流程成功; 任何环节的协同中断都会导致最终流程效率; 任何业务的变化都可能影响到全链路的产品系统功能,最终影响研发效率。 应用架构方面:不同于2C聚焦单个用户的数据生产、加工、处理,2B系统有着大量全局性的数据处理、决策、分析场景,批量性的数据操作使得架构层面面临脉冲式的稳定性压力。 2C场景,我们最经常提的挑战戏称为 “三高”(高并发、高性能、高可用),比如 淘宝2020年大促的接单峰值有30w+的TPS,拆解到下游库存、商品这样的链路还会继续放大,这样的情况下随便一个慢sql、网络抖动都可能会引起系统异常甚至是雪崩,最终影响大批量用户体验 ,所以系统如何更容错、更隔离、性能更丝滑是核心的挑战; 而对于2B场景,我们系统的峰值TPS别说“万”级别,想有个千级别、百级别甚至都是极少数的场景,所以同样的系统问题在2B场景上的用户影响要小得多,但是2B链路通常涉及管理、分析、数据处理的场景,比如仓储的拣货要根据大量的物流订单生成整体效率最优的拣选单,这种场景通常单次操作就涉及到上万级数据的分析处理,数据处理的准确性、实效性都会影响最终的拣货路径和作业效率,同时会造成大量的机器成本开销, 比如长时间的生成不了拣货任务可能会造成整个仓库的作业停滞,影响仓库生产,这对于2B来说都是非常致命的问题。 所以,对于2B如何处理好批量性的重型操作是整个应用架构在稳定性上的一个核心挑战。
3. 严选在2B架构的一些解法
做好整个物流的调度分配; 最大化服务商信息流和严选信息流的一致程度; 对于履约过程中异常的快速响应。
抽象履约决策过程的关键因素(订单结构、库存情况、仓租、服务商质量等),将整个决策因子规则化,形成面向业务闭环的策略配置中心; 通过沙盘仿真的方式提供策略配置调整的模拟环境,让业务决策更有信心。
业务视角而不不是技术视角的监控能力:基于纵贯线,我们的核心是围绕业务单据串联起来的业务链路,这是天然的业务视角; 作为基建跨场景的复用率和研发效率; 作为数据产品能够面向场景要求满足不同实时性诉求。
下图为纵贯线的产品交互:
(图中数据非真实数据)
按照业务场景定制数据规则,比如商品可以根据对应商品开发同学过滤同组权限。 抽象出权限规则,通过数据+数据规则+数据权限的方式,权限绑定到数据规则,数据规则决定数据范围,这样做的好处是可以把相对频繁多变的数据权限和主数据的管理解耦,提供更灵活的数据权限配置能力。
比如服配行业因为同一个SPU下的SKU宽度太大,考虑到资源和成本,我们通常的补货、备货都是只考虑到单款单色,很难基于SKU维度进行补货,所以我们为服配行业定制了基于色款(SKC)的补货模式; 比如我们在商品外包装设计平台 ,因为餐厨行业的供应商没有二次定制包装设计稿的能力,而后我们有调研发现这种场景的占比并不低,所以我们提供了基于外部供应商模板进行导入设计的系统能力。
全面异步化:从产品体验到架构内部协作,整个2B的场景应该基本都能够异步化。 事务任务化:以Event-driven的方式驱动事件解耦。 批量调度化:借助异步化和事件化的处理单元,将原先多个业务任务转化成一次批量处理,提升处理效率和系统资源利用率。
4. 写在最后
本文由作者授权严选技术团队发布