读淘宝技术这十年

最近读一本书《淘宝技术这十年》,收获很多,简要记录了一些心得:

1.优秀的系统很难一步到位,需要持续的重构优化

淘宝网发展到现在,流量全球排名第12、国内排名第3,业务量达到亿+级别,其系统架构能支撑如此大业务量,不是一朝一夕所完成的,是经历了多次系统机构的升级,淘宝网最初是LAMP架构(Linux+Apache+MySQL+PHP),运行了将近一年的时间,服务器由一台发展到多台;后来数据库撑不住了,将MySQL换成了Oracle,引入了搜索引擎;然后不到半年的时间,把开发语言换成了Java,数据服务逐步采用了IOE(IBM小型机+Oracle+EMC存储);随着数据量和访问量的增长,又进行数据库分库、加入缓存、使用CDN,之后稳定下来运行了2年多时间,但随着业务的快速发展,淘宝网遇到了前所未有的问题,已经不能通过花钱买更好的机器和更好的服务来解决了,于是淘宝网被迫开始走向了技术创新的道路,形成了现有的自主研发的分布式电子商务系统架构。

结合以前看过MySpace的系统升级过程,得出一个结论:任何系统都有一个发展升级的过程,没有必要也不可能一步到位,每发展到一个阶段都需要考虑系统重构优化,重构需要有适当的前瞻性,在做到业内领先地位的同时,会遇到前所未有的问题,需要大胆创新。

2.架构升级过程分模块进行

淘宝网在升级到企业级Java网站的时候,请了SUN公司为其操刀,在迁移过程中不停止服务,原来系统的bugfix和功能改进不受影响,他们的确很强大,大致方案是结合业务分模块,一个模块一个模块的渐进式替换。如用户模块,老的模块继续维护,不添加新功能,新功能在新的模块上开发,跟老的模块公用一个数据库,开发完毕后放到不同的应用集群上,另开一个域名,同时再替换老的功能,替换一个,就把老的模块上的功能关闭一个,逐渐把用户引导到新域名上来,等所有的功能都替换完之后,关闭原域名,这在我们系统做大规模升级时值得借鉴。

3.SOA与我们不谋而合

淘宝网在飞速发展的背后,前后台系统的业务量和代码量呈爆炸式增长,团队协作越来越艰难,代码越来越臃肿,开发的效率越来越低,淘宝对技术架构做了调整,采用了SOA的架构,这与我行新一代核心银行系统以客户为中心,面向服务的理念,基于SOA思想规划信息系统建设不谋而合,而我行SOA的推广还处在起步阶段,上周总监室组织了关于ESB的技术沙龙,笔者跟总监室交流了服务颗粒度和服务分层的思想,提议借鉴淘宝的服务分层模式,BoEing做后台的服务层,提供原子级别的服务,渠道做前端的服务层,提供组合的服务。

3.构建服务化自助渠道开放平台——自助网关平台

淘宝面对需求具有长尾理论特征的中小企业,提供了一个开发平台,很好的拓展了业务。我们正在构建的自助网关平台,也许建设的初衷不一样,我们主要是想复用,避免重复建设,但最终目标很相似,要做成一个提供服务化API的开放平台,所以在阅读本书过程中,为以后自助网关平台在开发过程中需要考虑的服务路由、服务接口标准化和授权等问题提供了宝贵的经验。

4.注重技术积累和人才引进

淘宝在几次架构重构优化过程中,很注重技术积累和人才引进,在很多领域已经做到了国际领先水平,我们要想有大的提升,达到3510目标,也需要技术积累和人才引进,我行已经创立的农银大学,可以考虑发展科技学院,培养我行的科技人才。

5.大数据时代

阿里巴巴是因为淘宝的发展而强大,带动了支付宝,形成了大数据平台,发展了阿里金融,然后大数据时代、互联网金融一下子火起来了,紧接着很多互联网公司都往金融领域进军,传统银行面临冲击,很多银行被迫反击,学习淘宝大搞电商,但其实银行一方面做电商并没有优势,也得不到大数据,另一方面其本身有已经有大数据而没有好好利用,关键在于数据的打通,构建一个自己特色的大数据平台。