BT

你的观点很重要! 快来参与InfoQ调研吧!

朱鸿:钉钉的成功源自移动端经验的积累
录制于:

| 受访者 朱鸿 关注 0 他的粉丝 作者 InfoQ 关注 6 他的粉丝 发布于 2016年4月1日 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术
22:05

个人简介 朱鸿,1995年保送进入浙江大学混合班,后保送本校读研;读研期间在阿里巴巴兼职开发了以商会友等产品;2002年研究生毕业后赴美发展,后在雅虎美国担任资深搜索工程师,负责搜索产品研发;2009年加入阿里妈妈担任资深架构师,负责淘宝新一代广告系统的架构和研发,见证了淘宝直通车,钻石展位,淘客等产品的高速发展历程。2013年开始进入移动互联网领域,主导开发了第一代移动广告平台;经历了旺信,来往和钉钉的架构设计和产品研发。目前担任钉钉的技术负责人,带领技术团队以创业的心态和方式努力将钉钉打造成为移动+云时代的企业沟通和协同第一平台。

全球架构师峰会(International Architect Summit,下简称ArchSummit)是由InfoQ中文站主办的一次全球性架构师峰会。ArchSummit专门针对架构师人群,讲述与架构和架构师相关的各方面趋势、技术和案例。这也是继QCon之后,InfoQ中文站主办的又一次高端技术盛会。

   

1. 各位InfoQ的网友大家好,现在我们是在ArchSummit的北京现场,现在作客我们专访间的是钉钉的CTO朱鸿先生,第一个问题是这样,请您简单介绍一下钉钉的发展情况,它的发展和团队当初的预期相比是什么样?

朱鸿:钉钉是阿里巴巴内部的创业项目,我们从今年1月份发布1.0版本以来,历经12个月不到就有100万的企业和组织。钉钉的发展预期,因为没有一个特别可以比较的对象,我们就拿了Slack的发展速度来看,大概我们用了8个月的时间赶上了Slack12个月的发展速度,所以跟我们预期相比,显然是有点超出预期,中国的人口基数很大,我们认为这个市场还有很大的潜力,所以我们还会继续的深挖中国的市场。

   

2. 目前钉钉的研发团队有多少人

朱鸿:不到120人。

   

3. 后端跟客户端的研发人员的比例是什么样?

朱鸿:后端少一些,大概是1:2的比例。

   

4. 这样设置人员配比的考虑是什么?

朱鸿:因为现在我们有很多的客户端,有安卓、IOS、web还有Windows,mac等等,这些端上的技术没有很好的跨平台解决方案,所以我们还是端上的人才、组织上会多一些。毕竟钉钉一开始是面向移动互联网的创新和创业,我们专注在移动端会有比较多的工作要去做。所以端上的同学会多一些。

   

5. 你们会不会发 Linux端?

朱鸿:目前还没有规划,我们计划是先用web的版本提供给 Linux用户用。

   

6. 功能上会和客户端一样吗?

朱鸿:大部分会一样,但是会少一些本地的存储和搜索功能。

   

7. 文件传输是可以的?

朱鸿:可以,通过web版可以完全实现文件传送的功能。

   

8. 钉钉的客户端使用什么技术?

朱鸿:钉钉的技术来自来往,我们在做钉钉之前积累了两年多的移动端研发经验,用了一个自行研发的通讯协议,在这个协议之上实现了客户端到服务端的RPC框架,两边定义好接口,通过工具生成客户端和服务端的代码,可以保持兼容性,在发新版本的时候,老的接口是可以保证兼容的。通过这种方式大大的提高了研发的效率。而且保证了逻辑的一致性。

   

9. 这样的话听起来,开发起来会更高效,有没有踩过什么坑?

朱鸿:也会有一些,有时候我们在处理复杂的数据对象的时候,会遇到在某些版本上解析出错。历史上是出现过一次在解析很特殊的一个数据结构的时候,在安卓和ios表现不一致。这个是在序列化反序列化的过程中的一个小坑。

   

10. 我知道了,前两天还爆了Java的反序列化的漏洞呢。

朱鸿:对,我们用的MessagePack包。

   

11. 客户端解析还是对富文本的处理是吧?

朱鸿:反序列化以后还要映射到一个原生的数据结构上面,在这个过程中容易产生坑。

   

12. 钉钉的定位是一个企业级的内部沟通工具,现在的企业,国内和国外还有一些差异,电话这个功能还是比较重要,我们想了解一下钉钉的电话会议功能是怎么实现的?

朱鸿:在中国,我们的网络还不是很稳定,2G网络的用户还非常多,钉钉定义为一个企业级的产品,我们对质量,对服务要求非常高,如果说我一开始就推出VoIP这种功能的话,质量可以说是参差不齐的。所以我们第一个采用了融合通信的技术,使用传统电话的网路,我们通过阿里通信采购了非常多的线路,用以保证通话质量。在手机端就可以发起、管理电话会议,如果需要有管理功能的话,发起方必须是在Wifi的场景,使用Wifi功能,把某个人加进电话会议或者把某个人静音,这实际上是非常大的创新,不需要借助硬件设备,完全在手机端就可以发起一个高清的电话会议功能。未来我们还会有国际电话,结合VoIP进行一个尝试,提供安全的保密电话。

   

13. 我比较关心国际电话功能,你们大概会有一个什么样的计划?

朱鸿:三个月以前我们已经在灰度测试了,目前已经有10几家企业员工在用钉钉的国际电话功能。

   

14. 钉钉电话会议功能特别好使,刚才您提到要使用那些功能,要在Wifi环境下发起,但是Wifi网络的稳定性会不会对电话质量有一些影响?你们有没有做过这方面的优化?

朱鸿:Wifi网络对电话质量是没有影响的,我们走的是不一样的网路。但是联通的手机在接电话或者拨打电话的时候,它的4G网络是不断的,所以对联通手机的用户,不在Wifi也可以发起和管理电话会议,但是这时候会占有一定的带宽,如果数据流过大的时候有可能会影响到一点通话的质量。这个还是靠运营商本身的调度能力。

   

15. 钉钉的发展很快,从1月份到现在,也经历了一些版本的更新,想问一下系统架构到目前为止一共经历了哪些具有里程碑意义的调整?

朱鸿:钉钉的发展是没有技术的历史包袱的,这是比较幸运的,我们做钉钉这个项目的时候,已经积累了大的后台技术以及移动端的接入技术。所以我们在研发这个项目的时候,第一个阶段是做融合通信,给企业员工提供沟通功能。第二个阶段做协同,允许企业把自己的OA功能接到钉钉上来,也允许第三方的ISV进来为企业客户提供定制化的OA应用。在这边架构逐渐走向开放,增加了非常多的服务端、客户端的接口,跟我们的ISV紧密合作,在通讯的基础上实现OA的创新。所以架构上还是一个比较自然的延伸过程,没有非常大的变化。

   

16. 我们团队也在用钉钉,我看到钉钉有很多非常丰富的办公协同功能,比如说日历、签到、拜访,这些业务是不是都在阿里云上承载?

朱鸿:目前这些业务确实都是在阿里云的基础设施上实现的,我们现在也有一个计划,为了降低ISV的门槛,我们会提供全套的框架给到ISV,他在这个框架上开发,数据的存储接口,包括托管环境我们都会服务好。也就是说他只要专注开发企业需要的功能,后面运行的环节,稳定、安全、性能,我们会依托在阿里的技术优势上去给他支持。

   

17. 钉钉如何是保持快速发版,为什么问这个问题?因为你们的版本端特别多,不但有三大移动平台还有各种PC端平台,MAC的、Windows的,你们的灰度发布和回滚机制是什么样的?

朱鸿:我们虽然是在一个大公司里面,但是是一个创业的团队,而且团队不大,测试人员非常少,少于10个人,我们怎么做到快速发布。从产品层面,我们定了一个规则,就是三周一迭代,一周提需求,一周开发,一周测试,然后上线。这样的过程是跟团队的分工,我们把技术团队和产品运营团队组在一起,拆成了七个不同的scrum,每一个scrum会负责一个垂直的产品功能。每一个迭代由产品经理负责这一次大版本要发布的功能主题,主要解决哪些用户的问题,这些问题是来源于我们的共创企业,制定好以后每个迭代小团队就会按照这个主题自己跑起来,赶火车。发布的时间点我们会设定好,如果赶不上就下一波了,我们也会对每个scrum进行对比,你这个迭代完成多少需求,迭代上线以后用户满意度是多少,会做用户满意度的调查。通过这些方式激励我们的每个团队跑得好跑得快。

所有钉钉的员工都是灰度用户,我们也计划把阿里的10万员工发展成钉钉的灰度用户,他会第一时间收到我们灰度的版本并使用,并且我们从后台分析,这些灰度用户在性能上有没有遇到一些接口超时、发图片发不出去的情况,这些数据会通过后台收集分析,通过这些数据也会看这个灰度版本是不是所有功能都被cover到了,就像澡堂模式聊天有多少人在用,以及消息的持续都有一个大致的保障。现在在IOS上,我给团队提了一个目标,每一天发布一个beta版,过去我们很难做到这一点,一般是一周一个。这就要求我们每一天合进来的代码到最后产生安装的包并且推出去,需要有一个自动化的过程和基本的质量保证。如果用户装了一个beta跑不起来,那灰度用户就立刻删掉了,我们就失去了一个灰度用户。灰度用户越多,给我们的质量就有了一个很大的保障,这样的话保持三周一个迭代高效率的发版节奏目标就有了质量的保障。

   

18. 这样一讲感觉测试团队的压力会特别大,你们才十个人,怎么做的?

朱鸿:他们只负责做核心功能的回归,大部分的功能是依靠每个scrum的自测,产品经理会自测,我们一般会有一个集中的验收环节,这个验收会花一整天时间,从早上一直到晚上的11、12点,才能把这个迭代所有的功能全都验收一遍。

   

19. 我以为你们很多要做CI/CD的东西,结果你们会用这种方式。那什么情况下你们会做一些回滚呢?

朱鸿:我们的客户端很难做回滚,因为包已经发出去了,我们会用一些像hotfix这样的技术,像安卓可以不发版的情况下把线上发现的Bug做一个紧急修复,这是端上。服务端上我们一直都有灰度上线的机制,这和阿里其他业务的灰度上线没有本质上的区别,新功能发布时会在预发环境先跑一下,上线时会十台十台的上,确保线上用户反馈没有新的问题报出来。

   

20. 现在看钉钉的用户量是在飙升的,你们未来团队会不会进行扩编?

朱鸿:其实我们的人员在年初已经定下来了,不会超过这样的数字。今年就是最多199人,我们会有一个给自己的限制。

   

21. 钉钉现在移动端的性能标准是怎么设立的?

朱鸿:我们自己有一个标准,要做到业界第一,从客户端到服务端,包括客户端顺滑的程度,省电,这些方面都有可量化的指标,每一次发版的时候,都会有一个专门的性能测试同学去做跟上一个版本的对比,以及跟我们竞品的对比,确保在这些维度上是保持向上的态势。服务端也有性能的问题,比如说解决发图片的快速,解决在海外下载图片的快速,所以我们在接入上是一个全球化的部署,用户会就近就快的方式接入到钉钉的服务端,这样他在发消息的时候,第一时间传到服务端,然后我们再通过一些路由设置快速接入到我们的主机房。

   

22. 现在性能的瓶颈会出现在哪里?

朱鸿:我们是定位为企业服务的,我们的定位导致了我们的群会特别大,像阿里,我们一个大的部门可能有上千个人,几千个人在一起,如果每一个人一秒钟发一条消息的话,会收到一千条消息,你可以想像一秒钟一千条信息进来屏幕滚动就会使手机的CPU非常忙。所以我们在这个场景下做了大量的优化,比如说我会打包消息下来,收到一千条消息,不会立刻刷新UI,而是处理好这些消息,入库以后,确保消息不丢再做一个批量的操作,让屏幕一下刷到最后的20条,不是说连续一千条一直这样滚。通过这种方式在端上,不会让你在大群的时候,比如开年会时大家在一个群里各种交流或者抢红包,在这种场景下手机不会说耗电特别快。然后我们服务端还是要继续保持实时的消息下行,确保在这种大型群的情况下消息的延迟也不会特别大。比如说抢红包,我们两个人坐在一起,在一个一千人的群里面,不会产生不一致的情况。所以在这方面我们做的性能优化会比较多。

   

23. 您刚才提到ISV第三方接口,现在我们还没有接入支付的功能。

朱鸿:下一版本就会有支付功能。

   

24. 这方面优化多吗?

朱鸿:新的功能对创业团队来讲,从技术上我会先保证这个功能的安全性,然后稳定,明年我的高可用性要达到4个9,性能上确保这个是业界一流的使用体验。刚刚的问题?

   

25. 第三方的东西,比如开放给ISV的这些东西,会不会越来越多。

朱鸿:接口确实会越来越多,但是我们会优先考虑安全、稳定,以及性能确保让ISV开发出来的应用给到我们客户的时候也是一流的体验。

   

26. 其实主要的功能还是钉钉自己来提供,至于一些定制化的需求的功能,是需要ISV自己做了?

朱鸿:对,这是我们现在的策略。

InfoQ:好,我的问题就这些。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT