首页 > 代码库 > 十年京东,十年技术发展—畅读《京东技术解密》
十年京东,十年技术发展—畅读《京东技术解密》
《京东技术解密》试读章节共71页,我花了两天时间仔细读完,读了过后感到意犹未尽,非常想一口气把整本读完,然而只能将试读章节反复读了好几遍,收获颇多,遂有此文,借此总结京东十年来的技术变迁和迅速发展。
之所以对这本书感兴趣基于两个原因:一是自己最近刚好在读一本书《不战斗不成功:刘强东和京东商城的“野蛮”奋斗史》,见识到了刘强东本人丰富的创业经历,与当当网拼图书、与淘宝网拼百货、与苏宁易购拼家电,京东真是什么都卖,这份处处竞争的心也值得佩服。二是自己一直对京东印象不错,觉得京东是“正品多、假货少、物流快”,也经常在上面买东西。作为一名技术人员,也就非常想知道支撑京东背后的技术架构是什么。
文中一开头刘强东大哥总结的就很好,直接说明本书的目的所在:
京东可以高速发展到今天的规模的原因,其中最核心的是坚持“倒三角”战略:建立出色的团队;打造财务、物流和技术三大核心系统;降低成本、提升效率;为用户带来最佳体验。在《京东技术解密》一书中,大家会看到技术驱动的力量,这也是京东第一次全面展示自己的技术体系。
从2004年京东刚上线只有一组简单展示IT产品的网页,到如今京东已经是覆盖PC端、移动端,并完整支撑物流、订单、交易、商品、财务系统的巨大电商平台;从当初的四五个人到如今的4000+人;从简单的.Net+SQLServer 系统到主要基于Java 的大规模分布式系统。十年来,京东的技术平台实现了高速成长,渐渐的从业务主导型转为技术驱动型。
京东的系统比较复杂,涵盖电商全流程全价值链,从前端的交易系统到供应链,到仓储、配送、客服以及售后,除了财务报表之外,几乎全部系统都是自己研发的。下面总结京东的技术和管理变迁。
如何管理4000人的团队?
1. 组织架构优化的重要性
以前的京东其技术团队一直是职能化结构:产品部、研发部、测试部以及运维部门。但当员工越来越多时,这样的技术团队协作、沟通、优先级划分都很困难,因此14年京东对技术团队做了调整:研发体系分为9 大模块4 个平台。
9大模块:提供基础设施的云平台和运维、实现网上营销的营销研发部、针对COO体系的运营研发部、实现内部信息化管理的职能研发部、提供统一的大数据技术平台的大数据部、负责移动客户端研发的移动部、负责全国研究院建设的研究院和主要负责管理体系建设的技术研发管理部。
4个平台:技术平台(打造基于云的技术架构,支撑其上所有的应用)、大数据平台(数据独立、大数据处理)、电商开发API平台(以API 服务的方式进行服务)、应用平台(包括自己的网站、移动客户端、内部的ERP及外部的ISV 开发应用)。
组织结构的调整解救了京东因为团队人多导致组织混乱和管理困难的问题。
2. IT 管理123:1 个愿景、2 个重点、3 个体系
- 1个愿景:即希望或目标,“做中国最有影响力的技术团队”。hope是很重要的,有了hope就有了动力、有了干劲,几千人为同一个目标共同奋斗、努力是一件很值得自豪的事情。
- 2个重点:文化和结构。我个人一直认为公司的文化和氛围非常重要,你工作的开不开心、值不值或有没有干劲与公司的文化息息相关,好的文化会让人们觉得工作是享受的,而不好的文化会让人厌恶工作、抱怨老板。我一直认为华为这么国内外都很知名、强大的公司为什么口碑如此不好,是与其差的公司文化直接相关的(个人愚见),培养好的文化需要关注3个词:信任、分享和成长。结构就不用说了,基本上现在稍微大点的公司都会出现人才梯队,比如阿里的P系列,京东与腾讯一样是T系列。
- 3 个体系:产品体系、架构体系、管理体系。京东打造了让产品经理说了算的文化,避免了业务部门、产品部门和研发部门互相绑架的局面。架构也是让架构师说了算,不是管理者说了算。
与腾讯ECC融合背后的故事
2014 年3 月10 日上午,京东集团与腾讯宣布建立战略合作伙伴关系。当时这条消息爆炸在各大IT圈中,我当时也在纳闷:一个卖东西的和一个聊天的怎么能合作的起来。当然,当时了解的信息不多,也没用过QQ网购平台和拍拍。直到看了本书这章后,才彻彻底底明白了两者融合的前因后果和过程的艰辛不易。
这次融合让京东从自营为主的B2C 业务转变成自营B2C+平台B2C+C2C 的完整电商生态系统。且在移动端,腾讯微信的流量优势以及三四线顾客群的覆盖,使得腾讯与京东形成优势互补。
1. 京东与易迅的整合
这需要完成技术对接,包括商品、订单和库存的对接。说起来容易,做起来难,双方的体量都很大,易迅的主流系统有十几个,京东的主流系统更有几十个,而易迅在被腾讯收购之后又对系统进行了几次调整,其复杂性可想而知。因此怎样最快解决问题、推出商品,对双方都是很大的考验。
- 首先需要解决快速沟通的问题:双方的研发体系庞大,人员众多,系统对接工作涉及一百多人,沟通过程中怎样快速找到相关人,信息怎样准确传递,都令人困扰。有时候打电话沟通不清楚,就当面沟通——出差,经常在北上深之间飞奔。
- 做中间转换接口匹配数据:京东和易迅两个网站的用户群体的偏好存在很大的差异,双方网站用户的重合度非常低,而用户和流量是电商平台最重要的资产,因此所有产品的对接和系统设计都要以用户体验为第一,否则可能会引起用户的流失,进而导致流量的下降。但双方系统都各自运行了很多年,不管是用户体验,还是业务场景上都有很大的不同,比如在配送环节,易迅有一日三送,而京东是定时达等等。这些都不能简单统一为一个,而必须能互相兼容,且用户体验只能增强。类似这样的不同点多达几十处,最后的方案就是做一个中间转换接口,分别来解析和匹配两边的数据对接,并通过历史记忆来自动匹配。
2. 京东与QQ网购的融合
融合目标一旦确定下来,就容不得半点迟疑,北京即刻成立了专门的项目小组,并在京东会议室资源非常紧张的情况下申请了一间专用会议室作为战时指挥部,主要项目组成员随即打点行囊入驻、封闭,还需要北京、深圳两地多个业务、产品、研发团队无数次的沟通、修正和冥思苦想。此次的融合是空前的,不同的文化、不同的地域、独立的系统,要全面打通面临着各种技术、商务、工作方式等方面的不同。需求上的、技术上的以及要平衡各个相关方的利益而产生的各种待确认问题,像一场又一场密集的流星雨,每天在项目指挥部的上空火花带闪电般接踵而至。从项目伊始到项目结尾,这期间经历的艰辛与努力很值得我们细细回味和学习。
3. 京东与拍拍的融合
京东的加入让拍拍焕然一新,之前臃肿不堪的首页即刻换成了如今的清新大方,商品也丰富了不少,账户系统的打通历经了N条方案和无数群组讨论,期间宁愿延迟项目发布也不牺牲用户体验的做法很值得推崇。
京东的大数据平台演变历程
现在没有哪个大公司不关注大数据的,13年初的时候,在京东制定的下一个10 年发展规划中明确提出,大数据战略将成为公司重点战略方向之一。
京东大数据平台从无到有,从集中式到如今的分布式,从Oracle数据仓库到JDW2.0,4 年期间完成了复杂的演变。技术的变迁都是需求驱动的,京东也不例外。
1. 自建数据仓库—解决数据服务不能自主的困境
数据多了,就需要成立专门的数据部门(Tiger 团队),其工作重点是数据分析与数据报表,但在没有数据仓库的年代里,分析师们只能依靠DBA 提供的两台查询机排队写SQL 提数,然后再拿回来做分析。遇到业务需求方描述不清或口径不明确时,往往要花大量时间沟通调研,反复提取数据,这个过程耗时费力不说,还会被需求方不断催促,使得效率非常低下。Tiger的解决方案就是:自建数据仓库,这是做到自主数据服务的必由之路。且采用的是基于开源的MySQL,采用集群(Cluster)应用架构,支持大规模数据存储与计算应用,而没有使用有着强大数据处理能力的Oracle BIEE 商业智能平台。据提取与报表展现产品同样采用开源技术自主研发,后台Java 程序,前端采用Ajax 框架Extjs。这种轻量级的数据产品在稳定性及服务能力上与BIEE相比虽然有一定差距,但支持快速迭代及无与伦比的灵活性这些优点也是成熟商业产品所无法替代的。正是自主研发、快速迭代和灵活应用这些适用于互联网企业的特点,使得一系列产品和技术方案在快速成长的京东很好地支持了各种场景的数据需求,也成就了今天的京东大数据平台。这对于其他成长中的互联网企业也具有重要的借鉴意义。
2. 开始建设分布式数据仓库
基于Hadoop,以Mapreduce 作为计算引擎的分布式数据仓库开始建设,因为分布式的威力,Oracle渐渐的退出了京东数据仓库。调度平台功能逐渐完善,生产模式也由原来的单节点调度升级到分布式调度。今天的京东企业级数据仓库JDW 便是在这样的历程中演变而来的。
京东大数据产品
- 调度平台:虚拟节点的引入、Plumber 技术的采用非常重要。
- 数据集成开发平台:里程碑产品,结束了数据分析师和业务部门数据需求人员通过客户端工具手工提取数据的痛苦经历。从Extjs到Bootstrap前端技术的转变也值得关注。
- 数据知识管理平台:提供类wiki的功能,这让我想起了Confluence这款软件,不知道使用它作为知识管理工具的公司多不多。
- 京东分析师:实现类Tableau的桌面系统。
- 数据挖掘平台:采用基于内存的存储引擎,集群资源调度与管理基于Hadoop Yarn 框架。
- 数据质量监控平台:实现数据的及时性、准确性和完整性。
大数据技术创新
我觉得这一点非常重要,业界对大数据处理的技术方案几乎已经形成一套通用的技术架构,但为什么还有很多公司还是自己研发一套系统架构(典型的如阿里),主要是因为不同的行业及不同的实际业务需求,通用的方案一方面可能很臃肿,有许多不需要的功能,另一方面不够灵活,不能实现特殊需求,因此大数据平台建设所用核心技术依然需要付出一定的研发投入来实现定向的技术突破与应用,即所谓的“定制开发”。京东在通用的开源技术架构基础上进行定制开发和产品化,从技术和产品两个层面实现微创新和突破性创新,打造坚实的平台基础。技术微创新主要体现在平台的基础架构上,产品层面的突破性创新主要体现在大数据管理应用上,其中总结的创新点具有借鉴意义,需要的可以细看。
在需求的驱动下,京东不断研发出了海量数据实时计算平台“汉江”、海量数据实时查询产品“三峡”、基于分布式架构的联机分析处理系统和海量日志数据分析处理平台,文中分别介绍了它们的技术架构。
这些大数据技术最终实现了精准营销(例如通过邮件个性化推荐产品)、电商C2B 定制(例如京东的JDPhone 计划)、用户画像(解决把数据转化为商业价值的问题)、店铺评级系统的搭建。
最后一章是介绍几位京东技术大咖,看了过后除了跪拜还是跪拜,每个公司都有不少的技术大牛,希望自己以后也能成为其中的一员吧。
十年京东,十年技术发展—畅读《京东技术解密》