尝试渐进式的 SOA
2009 年是 VANCL 业务激增的一年,也是技术平台向 SOA 转型的一年。在推进 SOA 的过程中,首先需要理解的就是 SOA 不是一个技术问题,是个业务系统规划问题,必须由业务专家而不是技术专家完成。SOA 治理是梳理和解决公司整体业务层面和 IT 系统的对齐问题,目前在国内还很少有公司能够充分认识和做到。更务实的还是由 IT 部门牵头与各业务部门产品专家在业务流程视图的指导下,按照业务自治原则进行子系统划分,以确定各子系统的自治域范围以及服务和数据契约。比如确定订单生命周期中的各种对订单操作的 Service,是都归入订单系统下还是允许某些可以归入其他系统?
在由传统模型向 SOA 演进的初期,技术团队会面临很多问题。首先就是分布式事务问题,由于还没有像支付宝公司那样研发一套自有的分布式事务方案,目前我们允许 Service 可以按照 DLL 部署到其他系统中,这也是一种无奈的平衡。初期对于 SOA 模式的不适应导致我们的开发周期过长,并且还需要在传统系统上完成大量的业务需求,所以我们的原则是仅对有业务改进需求的系统进行渐进式的 SOA 化,完成一个部署一个,而不是单独组建 SOA 团队进行新旧系统并行开发。
升级分布式数据访问层
去年我们构建了基于 NHibernate 的数据访问层,今年将进行对分布式数据访问层的升级,主要改进包括:透明地支持对数据库的读写分离和按功能拆分数据库的访问、对 Memcached 和 NoSQL 数据库的访问的封装等。一般一个电子商务平台有几个核心系统,前端是数据搜索和购物推荐,产品分类列表、单品页、搜索功能都是构建在数据搜索技术之上,但还需要整合 Memcached 和支持页面静态化处理,同时向其他系统和合作伙伴提供 Search API 的支持。在购物推荐方面,目前我们的探索是,基于用户购买行为和用户评论打分的相似度进行分析,但这受制于数据积累、用户评分真实度、礼包促销导致的脏数据等各种因素的影响,所以需要一个逐步积累完善深化的过程。
而 Tag-Based 分析是基于手工打 tag 的方式,可以给购物推荐引擎一个更准确的数据源,从而能够快速获得满意的推荐结果。以 tag-based 为主,辅以用户购买和浏览行为数据分析,目前来看比较符合 VANCl 的现状。后端系统,主要包括基于工作流的订单处理流程,以及支撑服务系统和 WMS 仓储系统,前者的核心是基于元数据的流程控制、基于工作流模型的订单处理引擎、基于订阅发布的企业事件分发模型等。后者对于一般企业来讲,是个巨大的工程,难度不在于技术而在于物流和仓储知识,这是个巨大的经验鸿沟。
展望 2010,依然是升级
2010 年,我们所面对的是在系统各方面的全面升级:包括核心的企业事件处理服务器,可以智能的触发缓存更新、静态化页面处理、各订阅子系统的逻辑处理等。包括全面的 SOA 化和在 DDD(Domain Driven Design 领域驱动设计)指导下的电子商务领域模型建设。包括服务于各种合作伙伴的数据和业务流程的开放平台,使 VANCL 成为可以输出 IT 能力的大平台。2010,任重道远!
相关内容:
1、架构师(三月刊)
个人简介: 栾义来,凡客诚品 (北京) 科技有限公司项目管理 & 架构总监,领导技术项目管理部门和架构师团队。曾在金山软件、我有网、FastMobile 中国担任技术总监、资深架构师等职位。在电子商务、移动互联网、ERP 等领域有丰富的架构和技术管理经验。
评论