微信号:infoqchina

介绍:有内容的技术社区媒体

石墨文档创始人、双胞胎程序员:产品拥有百万用户、千家企业用户是怎么做到的?

2016-08-23 07:30 大咖说



大咖说是InfoQ推出的视频直播节目,每周四晚八点半和您见面!

回复:石墨,获得直播完整版视频。

回复:InfoQ,加入大咖说直播群,下期直播彩蛋在最末!

本视频时长1小时17分,建议在Wifi环境下观看。


1
为什么选择SaaS云协作创业?

什么是SaaS?简单来说,就是基于Web环境提供的办公工具。比如大家常见到的,云储存的百度云、做CRM的Salesforce、办公沟通的钉钉等等,这些基于互联网提供的工具软件,更加轻便,也为企业办公节省了成本,提高了效率。

为什么做这个事儿?这跟我们的经历有关系。我们之前在美国读研,后来留在美国工作了一段时间。发现国外的使用工具比国内确实要领先。在国外,无论学习还是工作,会接触到很多的工作方式。

使用云端工具用的非常多以及非常成熟。也不止一款,在那个时候就培养了使用大量工具去进行工作。并且企业服务公司,除了提供工具以外,互相之间的环境非常好,他们各个工具之间还会打通。所以在海外对于人效的要求是很高的。

在我回国的时候,发现中国的工作节奏更快,工作效率要求更高。但是中国的企业工具可选性还很少,我们团队在协作中,产生了企业工具服务的需求,于是我们就想,不如我们自己来做一款能帮助人们工作高效的,简单好用的SaaS工具。

2
组建团队的故事

面试:我们面试是非常开放性的面试。很多技术、产品等岗位的小伙伴也是因为这样的面试而选择了我们。我们在初步了解到面试者的基本情况之后,会给面试的小伙伴一个题目,然后共同去完成这个题目。这可能是一个算法,一个技术架构设计,也可能是一个系统优化。

团队:一开始组建的过程中,我们招到了非常优秀的团队伙伴,有从腾讯、百度、阿里、豌豆荚等公司来的技术大拿;有从苹果、奥美、豆瓣等公司来的产品设计。小伙伴们很有想法,有个性,在团队的磨合上,相对也会花费一些时间。但是当一个团队work出一个成果的时候,那种兴奋以及每个人的成长都是不可磨灭的。

加入氪空间这是我们的第一个转折点:团队建立之后我们就开始做产品,产品初步形成之后我们就想入驻氪空间。在一次36Kr有一个活动,我们当时谁都不认识就过去了。我们演示了一下我们的产品,后来他们就觉得非常酷这个产品,可以有不同的人在上面写。不过那个时候产品还很不稳定,后来就过了一段时间,就没什么消息了。

我们以为好像没什么希望了,但后来等他们回来的时候,吴洁又去了一趟,得到消息就说,我们被第二期领取了。这时候就进了36Kr,大家非常兴奋,就是因为都觉得那个就是进这孵化器很牛,后来就跟大家庆祝了一下,然后就整个团队有10个人左右,全部搬到了北京。

3
如何克服云协作的技术难点?

首先, 云协作的核心技术难点有哪些?

a、实时同步协作 b、解决服务器的压力 c、多端适配 d、离线编辑

1、 为了支持实时协作编写,我们的技术团队在背后做了非常多的工作。其中之一就是对 Operational Transformation 算法的实现和改进。这个算法系统一直是学术界比较火热的领域,它可以解决一段文字被多个客户端同时修改所引起的冲突合并问题。

我们对这个算法进行了非常深入的探索和修改,将他的维度从一维拓展到了二维,实现了对表格的支持;同时我们也对算法的性能做了深刻的优化。

到目前为止,我们使用改进后的算法已经处理了约十二亿个文字。这套算法行之有效地解决了实时协作的这一大痛点。

2、粒度越小的事物就越具有随机性。用户敲击键盘输入一个文字只需要几毫秒。而在石墨文档上同时编写文档的用户非常多,很容易出现在一个很小的时间段内数据分布不均的情况。

为此,我们引入了 Nats 数据管道对进入服务器的所有数据进行削峰平谷处理,将数据高峰期涌入服务器的数据略微延迟移到空闲期进行处理,从而使得服务器可以平稳的运行,不受到随机数据的影响和波动。

同时基于此,我们还实现了根据数据流量对后端服务器进行自动扩容,当数据量突然增大时自动增加服务器,提高整体系统的负载能力。

在保证用户能够便利和流畅地编写文档的同时,我们也非常注重用户的文档安全性。石墨文档的所有数据都会定时地分发到全国多个数据备份节点,在整个分发过程中文档数据会进行银行级别的 AES 256 位加密,保证个人用户和企业用户的数据安全。

3、互联网时代,各种终端层出不穷。每个人日常都会使用至少两种设备,也就是电脑和手机。石墨文档是一个为方便用户编写体验而打造的产品,所以对用户的每一个终端进行适配是我们非常重要的任务之一。到目前为止,我们已经适配了 50 种不同的机型和浏览器,并按照渐进增强的模式着力在各个平台打造能够提升用户体验的产品。

4、离线编辑,又是一个巨大的技术挑战。我们背后的算法本身对于实时性要求非常高,因为多个用户同时编写一份文档时,会有很多版本冲突,但是因为每个用户都是同时在线的,所有的输入都会实时地发送到服务端,所以服务器能够更好地理解用户编辑的愿意,从而解决文档的版本冲突。

而对离线编辑的支持使得用户同步来的文档内容可能是花了几个小时编写的大段文本,此时的版本已经和服务器上面的版本有了非常大的出入。为此我们投入了相当大的精力来使得离线编辑同步时能够更加准确地还原用户编辑所要表达的内容,从而使同步的同时不影响其他用户的正常输入。

4
一款优秀的产品如何影响用户?

首先,从产品方案的选择和研发,中间一定会产生冲突。我们更倾向于打磨更多,当然内部推动也需要会快。我们在快的同时做每个东西花了心思。我们希望我们做的东西做了思考和验证,再去打磨。

一款优秀的产品需要有思想的指导,背后来源于哲学和对这个世界的看法。

我们的想法很简单,我们坚持:第一我们为中国人设计,所有设计思考偏向东方文化;我们认为设计不是在于表达,更好的设计是最自然最舒适安静的,对于一个工具不需要彰显,工具来帮助人们产生内容就很有价值,相反带来的是对设计好的认可。

第二我们不去彰显,用最自然的方式,去贴近用户的使用习惯。我们的素材也不找那些有个性的,我们希望用最熟悉的素材图标,让用户一看到就能够操作,缩短所有的学习成本,能够在短时间内最高效的完成一件事情。


下周四(8月28日)晚8:30,大咖说直播预告!

技术圈耕耘十六载,系统架构师、资深讲师title,他会为你分享:程序员如何实现经济、精神双自由?

快来报名吧!


 
InfoQ 更多文章 移动支付背后的高可用架构丨视频+PPT下载 程序员简易成长指南:从菜鸟码农到架构师 饿了么:业务井喷时,订单系统架构这样演进 10个帮助网页开发者与远程团队合作的工具 炒了8年的概念,到底该如何理解DevOps这个词?
猜您喜欢 Google I\/O 2016 大会全记录 两种方式实现js,ajax的跨域 【干货】给网页设计新手的10条法则 南沪艳阳谈U2L---我在金融行业座谈会上的分享 【干货】MySQL5.6配置同步复制的新方法以及常见问题的解决方法