京东的云化:相比 IaaS,应用系统的 SaaS 化才是重点

  • 杨赛

2014 年 2 月 14 日

话题:云计算DevOps

截止到 2013 年底,京东已陆续推出京东宙斯、京东云鼎、京东云擎、京东云汇、京东云峰等云计算解决方案,分别覆盖了 API 开放平台、IaaS 基础设施、PaaS 应用托管、代码托管 / 众包服务、移动应用后端服务等层面。

京东集团技术副总裁何刚在2013 年 8 月的一次公开分享中表示,京东电商云的发展已经实现了第一阶段目标——完成京东 IT 资源的内部云化。在此基础上,京东电商云正走入第二阶段,将努力在 2015 年向产业链开放京东电商业务全部资源和能力。

定位于电商产业链的京东云在技术完成度上达到了怎样的阶段?其产品化遵循怎样的思路?发展到现在都遇到过哪些挑战?InfoQ 中文站在 2013 年底对何刚进行了一次采访,对上述问题进行了探索。

嘉宾简介

何刚,现任京东集团技术副总裁,负责集团云计算和开放平台工作。曾任盛大集团副总裁,盛大云计算公司 CEO,美国亚马逊公司 AWS S3 技术负责人,美国微软公司网上广告部门和 SQL Server 数据库部门首席研发经理等职务。何刚是中国电子学会云计算专家委员会委员,中国通信学会云计算和 SAAS 专家委员会委员, 中国通信学会大数据专家委员会委员,中国数据中心产业发展联盟云计算服务专家委员会副主任委员。

何刚早年考入中国科大少年班,后毕业于美国威斯康辛大学麦迪逊分校,获计算机科学与物理学双硕士学位。

InfoQ:之前提到京东 IT 资源的内部云化已经完成。这意思是不是说现在我们看到的京东,包括背后的交易、营销、物流、库存管理之类的系统,都已经运行在京东云上了?您觉得这第一阶段是最难的一步吗?能否介绍一下京东内部云化的实现流程,包括先改哪部分,后做哪部分,怎么做旧系统到新系统的切换,切换是否采用灰度部署等等。

何刚:我们内部的云化并不仅仅是简单的基础资源的云化,应用都跑在 IaaS 上。

京东的云化是电商能力和资源的云化,从信息系统角度来看就是京东七大业务信息系统的 SOA 化,应用系统的 SaaS 化。为了支撑这个,我们内部搭建了私有云平台,从 PaaS 和 IaaS 层面全面支撑应用系统的开发、运行和运维。

业务系统的 SOA 化我们已经搞了几年了,应该说已经基本实现了 SOA 化。但是,这是项长期工程,将持续进行下去。至于底层技术平台的云化,我们也是根据业务需求来进行的,不是为了云化而云化。

目前,我们云存储、中间件系统、自动化运维平台已经在内部广泛使用,云数据、虚拟化平台已经在支撑我们营销、交易、物流、金融等核心业务,但这个不是完全迁移上来,而是有需要的和新开发的系统才运行在云上。

InfoQ:各个京东云的服务是否共享底层基础架构?这个底层系统现在哪些基于 OpenStack,哪些基于自研?

何刚:京东云主要包括公有云、私有云、金融集团云三大部分。物理上金融集团云完全独立;技术上三大部分共享 IaaS 和 PaaS 层。

现在底层系统,在 IaaS 层部分有使用 OpenStack,但是基于京东优化版,做了大量的稳定性和规模扩展方面的改进,其中大部分系统是自研。

InfoQ:云擎是用 CloudFoundry 实现的,使用到现在也做了很多的改良。您对目前云擎在功能和性能上的表现是否满意?目前在云擎上的主要工作是什么?

何刚:基于 CloudFoundry 搭建的京东应用引擎(JAE),我们对其整体架构和解决方案比较满意。其原理是基于消息订阅 / 发布的消息通信的分布式系统,在支持组件横向扩展方面具有优势,使系统具有较强的伸缩性和较高的资源利用率。

目前 JAE 主要面向个人开发者和中小开发团队,支持多种 Web 应用开发语言和丰富的底层服务支持(云数据库、云存储、缓存等)。JAE 从任何一个方向延伸出去都有较大的优化和扩展空间,可以做精做强,不过我们近期将力量集中在以下方面:

  • 更智能的组件弹性伸缩功能
  • 更友好的用户操作介面和流程
  • 更合理的资源分配策略

另外,考虑到组件的大并发处理和效率,我们规划将来对原 Ruby 语言实现的关键组件进行改写,用 Go 语言实现。

InfoQ:云鼎和云擎有很多服务是重合的,类似于 Google 的 GCE 和 GAE 之间的关系。我们是否允许开发者通过云擎对云鼎上的实例进行管理?

何刚:目前是不可以的。云擎提供的是应用开发 PaaS 平台,通过核心的应用引擎将应用代码进行编译、部署、运行和运维,用户看不到自己的应用具体部署在哪个实例上,所以不能像在云鼎里那样对实例进行全面自助的管理。但是云擎也提供了部分对实例资源管理的功能,如弹性扩展、云监控等。

InfoQ:我们看到目前京东云的几块服务,宙斯已经对外开放注册,云擎、云峰需要人工审核,云鼎仅针对企业开放,云汇、服务市场、设计师门户则要求提供详细的企业认证信息或个人认证信息及客服电话。为什么进行这样的差异设定?

何刚:从用户范围上来看确实存在一个漏斗关系。

最大的是云擎、云峰、云汇:所有的个人开发者、开发团队,甚至软件公司都可以在上面开发应用,而且这些应用是没有限制的,可以是 to B 的应用,也可以是 to C 的应用,应用类型也不限于电商相关,各种应用类型都可以。

第二个是宙斯,客户是需要调用 JOS API 接口的开发者、站长和 ISV,其应用肯定是想要调用 JOS 接口,从事电商相关的业务。

再下来是云鼎,面向需要稳定、高级的应用运行环境的 JOS 用户。云鼎为需要更多京东开放数据的电商应用提供商提供服务,可以说是给 JOS 客户提供的 VIP 服务。

InfoQ:将投入产出比低的云鼎单独拆分出来,提高准入门槛,这个比较容易理解;将相对可控、不容易造成性能问题和安全问题的宙斯单独拆分出来,也比较容易理解;把云擎和云峰拆分运作,这个不太容易理解。当时决定从运营层面将这几块产品拆分,都考虑过哪些利弊?

何刚:我们将云擎、云峰单独作为两个云解决方案,分别提供了 Web 应用和移动客户端应用全流程的云服务,从代码,到编译打包,到部署测试,到运维管理,并配套基础、成熟的中间件服务。

之所以这样,是考虑到中国云计算尚处于起步阶段,大部分的开发者还不能像美国那样,用最基础的云产品就能搭建一个完整的应用解决方案。我们打包成云解决方案就是为了培养广大开发者使用云服务开发应用的能力和习惯,引导中国的开发者进入下一代的云端开发模式。

InfoQ:一个基础架构系统做起来,在规模上会有几个特别难过的坎儿,过去之后就有很长一段时间可以平稳发展,直到遇上下一个坎儿。京东云是否已经遇到过规模上的门槛?是如何解决的?

何刚:过规模的坎,网络流量显著变化和控制节点的挑战增加,是主要的。我们在解决这个问题时,60% 的部分主要还是靠事前的充分预估和设计;20% 的是靠各种从整体到单个子系统的规模上量的测试来保证;余下的部分靠上线后有问题处理问题的方式来面对。总体来说还算比较平稳。

InfoQ:云化带来的问题是如何对用户和数据进行隔离,业界的趋势是通过 SDN 进行更好的网络隔离。是否有计划引入 OpenStack 的 Neutron,或者自研一套方案?

何刚:SDN 已经在我们试验和开发集群,完成从核心到接入交换机的全方位测试和试验,能够较好的融合。

在私有云的生产环境中,我们刚开始上了一个小集群,提供离线计算类的服务。现在线上的 EC2 部分出于稳定考虑还是使用的传统网络。

云计算DevOps