订阅移动开发RSS CSDN首页> 移动开发

《近匠》Worktile王涛:典型MEAN架构下的团队协作工具

发表于2015-12-23 01:36| 次阅读| 来源CSDN| 0 条评论| 作者闫佳明

摘要:《近匠》第117期:最近几年各种团队协作工具层出不穷,相信很多人都知道Slack等等国外知名团队协作工具。本期我们邀请到易成时代的创始人兼CEO王涛,他向我们分享了Worktile的技术架构与产品理念。

CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送邮件至tangxy#csdn.net(请把#改成@)。


80后90后是不待见纵向层级管理的一代人,他们在工作中往往更加注重横向的沟通协作,这是新时代互联网发展影响下企业文化所产生的变化。常见的团队协作工具都有哪些,以及如何选择一款合适的团队协作工具,是许多中小企业关心的问题。

Worktile正是一款专注于解决中小团队协作的SaaS软件,它包括任务进度管理,团队成员之间共享文件,在线编写文档以及安排团队的日程等。清晰的看板管理和乐高积木式的模块化功能是其最大的特点。用户可以在看板上按照自己的工作习惯和流程打造贴合自身的工作流,通过充足的自定义权限可以定义团队、项目、任务的多种属性,还可以随时开启关闭功能模块。目前Worktile已经推出了Web版、iPhone版和 Android版,可以满足不同平台的需求。

本期《近匠》我们邀请到易成时代的创始人兼CEO王涛,让他向我们分享了有关于Worktile工具的整体技术架构与产品理念,以及他对近年来国内外团队协作工具发展的看法。


王涛,易成时代创始人兼CEO

CSDN:请介绍一下自己的从业经历和创业故事,顺便也谈谈自己的理想?

王涛:我03年毕业于陕西科技大学机电工程专业,随后留校继续攻读机电工程硕士学位,先后加入长城计算机软件与系统有限公司和宇思信德科技有限公司,从事产品研发、系统架构相关工作,期间连续获得3届“微软MVP”,也写过技术书《你必须知道的.net》。

创业经历总共三次,第一次创业是朋友在做主导,当时没有太多想法对于第一次创业的失败,我的反思是产品价值,一款有用的、用户价值清楚的产品才能吸引用户。由于个人兴趣所致,第二次创业选择了效率类软件,当时是Win8要上线,由于个人对微软很了解,所以对Win8很看好,也是想借着Win8这个平台把知事做起来。但事实证明,Win8是不成熟的操作系统,知事虽然广受好评,但狭窄的平台导致了知事用户群受限,虽然知事还在但并不想继续做下去了。第三次创业明显方向更加清晰,总结了前两次的经验,这一次选择了协同软件Worktile。

CSDN:请谈一谈Worktile在做的事情,为什么选择这一领域?

王涛:一是个人性格原因,我喜欢所有事情井井有条,跟效率、工具相关的服务我都有很大兴趣。我在离职创业前,当时公司用着一个团队协作做的不错的产品,我们团队两三百人,但在用这个产品过程中我发现很多问题,比如我每天都会用它,但我只会用到5%到10%的功能,所以我就觉得,面向我们这个团队的这个产品给了我太多复杂的选项,也许有95%的功能我并不需要,但它会一直摆我面前,这是对喜欢研究产品的人而言非常别扭的一种体验。

第一次创业因为一些原因做不下去了,团队各奔东西。我当时考虑要做一个我有兴趣,同时是我在之前行业看到痛点的产品——对中小企业而言,2012年到2013年协同工具上并没有太好的选择。协同工具解决的问题并不复杂,你可以把它看作对多人服务的更好的邮件,或者是打理许多人每天日常沟通、处理事务、交流想法和分享文件文档的一个工具。但那时,OA从产品诞生出发的点并不是为简单需求考虑,而是赋予了更多管理因素的想法。

第二是环境原因:我总结了三个方面。

第一个是移动互联网时代到了,在人的工作方式上有很多不一样的情况,比如我们需要用手机来处理一些工作场景的东西。在工具软件时代,复杂的产品很难把复杂逻辑挪到四寸或者五寸的屏幕上。从大背景上来看,一个产品如果要在手机端用的很好,那对这个产品基本的要求就是,这个产品解决的问题不要太多,它应该是足够简单的。随着互联网时代的到来,各个领域在手机上都有革命性的产品诞生,我们做的是在工作场合领域,在手机上适应大家工作需求的工具。

第二个背景是云计算,云上会把各种工具和服务变成接口。工作场景原本有很多工具在使用,在协作类产品诞生前,大家工作场合已经有太多工具太多数据太多沟通存在,而这些工具和信息在过去是割裂的,有了SaaS有了云,大家都成为相互的标准。在工作场合IM和协作是非常入口级的产品,作为入口级的产品,拥有通过SaaS通过云把其他服务连接起来的潜力。

第三个背景是80后90后会成为工作的中坚力量。他们身上会有一些符号,他们不喜欢层级的企业文化,也不太喜欢审批这样的问题,但审批这样的问题逐渐淡化的话,服务这些人的点上就有一些变化,我们对这代人在工具协作转变的概括就是:管理会由自上而下变成自驱动。在此情况下协作类产品满足这种大背景原因而诞生。

CSDN目前整个团队的分工和规模,团队的气氛如何?企业文化如何?

王涛:目前整个团队以技术研发为主,秉持着精益的精神保持小团队的状态。办公室的装修是自己设计的,氛围会比较轻松,每天午饭时大家都会一起玩一盘游戏。效率类工具并不会让人无休止工作,而是避免无用反复无效的沟通方式,把时间精力投入到自己的建设中去,所以Worktile的员工都非常有趣,团队经常一起玩德扑、台球、桌球,我们招人时除了看能力也会看人是否有趣,能给团队带来新活力。

Worktile团队

CSDN:团队协作这块,国外发展情况是怎样的?对比而言国内现状呢?

王涛:我们了解的比较知名的,比如Basecamp,以及他们创始团队都非常有名,他们一直在对外传达remoting work这样的理念。Basecamp团队已经超过10年历史,团队规模五六十个人,他们由几个人到十几个人到最后五六十人,真正做到了小而美,这样一个项目团队做到了全世界最大的项目管理产品,超过1500万团队在Basecamp上管理项目,这成绩和他们的想法是非常了不起的。

另一个是最近一两年在硅谷市场非常牛的产品Slack,Slack从诞生到成为独角兽公司用的时间在历史上可能都是最短的,目前Slack在协作角度做的很纵深,取得的成绩和火箭般的速度可以用一骑绝尘来形容,最近他们也在平台化的产品往前走。Slack是非常现象级的产品,很难解释它为何可以在极短时间引爆,但Slack真正让我们知道了To B产品也可以有爆发性产品的潜质。

回到国内,我们做Worktile的时候可以追溯到2012年,但2012年我们并没做真正的投入,主要是做调研的工作。我记得很清晰的是,在2012年我自己在国内并没有发现做的很成熟的面向中小团队的协作产品,在企业级软件领域大家更熟悉的应该是OA。从历史上看,协作类产品成为被关注的点之前,OA一直是企业级产品被广为人知的形态。

CSDN:请说一说Worktile的整体技术架构怎样的?

王涛:Worktile本身就是典型的MEAN(MongoDB、Express、AngularJS、NodeJS)架构,外加上ejabberd作为实时消息推送服务。

整个技术架构上首先是SPA,单页应用程序,这对于Worktile这样的产品来说是最重要的一点,避免用户在不同页面间的跳转,最终我们选用了Google 出品的AngularJs作为SPA的实现技术。

另一个重点在于消息推送,当页面显示的数据有变化时,实时更新页面的显示,如团队中一个成员完成了某个任务,需要在其他成员那边也实时显示为任务已完成,为了达到这种效果,需要在Web客户端和服务器之间维持一个长连接,当有任何改变发生时,给客户端发送不同的消息,告知客户端哪些数据发生了变化。

我用一幅图给大家解释一下Worktile的整体架构:


这几部分我分别解释一下:

1)API服务,包括Web API、Mobile API、Open API,这些都运行于NodeJS之上,选用NodeJS的原因主要是它的异步事件驱动,对于高并发的支持比较好,另外一个原因是使用简单,对于前后端可以使用同一门语言去开发。

2)缓存和队列服务,Worktile中的缓存和队列服务都是基于Redis来实现,Redis是一款非常优秀的开源缓存服务,并且可以选择基于内存还是进行数据持久化,它提供的pub/sub模型对于Worktile来说非常重要,对于一些实时性要求不高的处理,我们都是在Redis中pub一条消息,告知其他服务有数据发生了变化,那些服务在接收到Redis中的消息后,根据消息的类型决定应该如何做出处理。

3)数据库服务,Worktile产品本身的特点决定了它是一个对实时性和性能的要求,远超过对事务性要求的产品,所以在选择数据库时,我们选用了MongoDB数据库,性能高,集群方便,数据以BSON结构存储,和Node.js天生完美结合。

4)文件预览服务,使用Worktile的同学肯定知道在Worktile中所有的文件都可以做到无需下载到本地,而直接在线查看,这一切都是预览服务的功劳,因为文件类型的各种各样,在实现文件预览时也要根据文件的类型做出不同的处理,针对txt、pdf、代码片段等文本型的文件,我们只需要读取文件中的内容,然后在前端用相应的视图展现出来即可,相对比较简单。但是对于Office类型的文件,如ppt、doc、xls等文件,就不能这么简单的处理,我们希望文件在Worktile中查看的效果和用户在本地使用Word、Excel、PowerPoint查看的效果差不多,经过我们的调研,最终选用了微软官方提供的Office Web App服务。

CSDN:整体架构中有哪些重要体系?如何设计的?

王涛:实时消息系统是Worktile整个架构中最重要的两个体系之一,我们想解决的问题很简单就是让页面数据能够实时更新,基于这个需求有如下几个选择:

1) 短轮询,页面端通过js定时异步刷新,这种方式优点在于实现简单,但实时效果较差。

2) 长轮询。页面端通过js异步请求服务端,服务端在接收到请求后,如果该次请求没有数据,则挂起这次请求,直到有数据到达或时间片(服务端设定)到,则返回本次请求,客户端接着下一次请求,这种方式对于服务的要求较高,尤其在并发量很大的情况下,对服务端的压力很大。

3) Websocket。浏览器通过websocket协议连接服务端,实现了浏览器和服务器端的全双工通信。需要服务端和浏览器都支持websocket协议。

Worktile一开始我们选用了Socket.IO作为消息服务,但是随着访问量的增大,需要做集群化的时候感觉到力不从心,尤其对于Socket.IO状态数据的存储,由于并没有官方的解决方案,当时我们采用了一个第三方的开源项目,使用Redis来存储,引起了一些性能上的问题,在后来重构时选用了基于Erlang语言的开源XMPP服务ejabberd作为我们的实时消息服务。

简单介绍一下ejabberd,ejabberd是xmpp协议的一种实现, xmpp广泛应用于即时通信领域。Xmpp协议的实现有很多种,比如java的openfire,但相较其他实现,ejabberd的并发性能无疑使最优秀的。Xmpp协议的前身是jabber协议,早期的jabber协议主要包括在线状态(presence)、好友花名册(roster)、IQ(Info/Query)几个部分。现在jabber已经成为rfc的官方标准,如rfc2799, rfc4622, rfc6121,以及xmpp的扩展协议(xep)。Worktile就是基于XEP-0124、XEP-0206定义的BOSH扩展协议。

由于自身业务的需要,我们对ejabberd的用户认证和好友列表模块的源码进行修改,通过redis保存用户的在线状态,而不是mnesia和mysql。另外好友这块我们是从已有的数据库中(mongodb)中获取Worktile中项目或团队的成员。Web端通过strophe.js来连接(http-bind),strophe.js可以以长轮询和websocket两种方式来连接,由于ejabberd还没有好的websocket的实现,就采用了BOSH的方式模拟长连接。

CSDN技术方面Worktile团队做了哪些创新的尝试?

王涛:从一开始我们就确定了几个原则,作为团队协作工具,从技术上分析首先要解决如下几个问题:

1) 基于Web的跨平台设计,让用户在任何地方都可以随时通过浏览器访问;

2) Web形态的产品要具有原生客户端的体验,如任务的拖拽等;

3) 具有高效的实时消息系统,每个团队成员在Worktile中所做的任何操作,都要实时在其他成员的客户端中自动刷新;

4) 服务要稳定,稳定压倒一切。

在选择使用AngularJS之前,我们首先考虑使用大名鼎鼎的Backbone.js,但是很快又抛弃了,因为在实际使用中Backbone.js太复杂,另一方面开发效率太低。而最终选择AngularJS主要基于如下几点:

1)  自动化双向数据绑定功能,这一点在Worktile中非常重要,如任务的状态变化都要实时变更到其他成员,如果具有自动化双向数据绑定功能,只需要绑定到UI的数据源发生变化,UI会自动发生改变,不需要工程师再通过代码去修改UI元素的改变。

2)  模块化设计,AngularJS堪称模块化设计方面的典范,通过模块化设计我们可以非常好的实现Worktile的工程化,在Worktile中涉及的元素非常多,如有项目、任务、日程、文件、话题、文档等等,而这每一个元素都可以设计为一个模块。

3)  语义化标签,AngularJS在设计之初信奉的理念就是:当编写UI的同时又需要编写业务逻辑时,声明式的代码远比命令式代码要好,命令式的代码更适合写业务逻辑,AngularJS在设计上就通过语义化的标签把对DOM元素的操作和逻辑代码分离。

4)  引入依赖注入,依赖注入是面向对象中比较成熟的设计模式之一,为了解决面向对象中依赖问题,得到了广泛的应用,AngularJS中大胆使用了依赖注入,极大的减少了各个模块之间的耦合问题。

CSDNWeb形态的团队协作产品优势何在?

王涛:Web形态的产品具有原生客户端的体验,要做好这点需要解决两个问题:第一是实时消息推送,任何数据的变化都需要及时变更到团队所有成员当前所在的视图,如一个典型的任务看板,团队所有成员可能同时在操作当前项目中的任务,每个操作引起看板的变化都会实时更新,不需要用户做任何刷新操作,下面这幅图就是一个典型的任务看板:


第二是操作体验,比如拖拽在以前只有原生客户端才能实现的体验,现在在Web产品上也可以实现的非常好,Worktile中有大量的使用拖拽的场景,如给任务分配成员、任务从一个阶段进入到另一个阶段等等。

CSDN:那么Worktile与相同类型其他产品相比,有哪些优势?

王涛:协作类产品分为四大类,侧重点和解决痛点不太一样。


Worktile的产品逻辑,四个词概括:提高效率,无缝沟通,文件共享和在线记录。

原因在于,我们回归到工作场景,你会看到不同类型团队,他们可能差别非常大,但是共性上离不开以上四个词。所以我们在构建Worktile上围绕以上四点来展开。比如说沟通,我们围绕任务文件文档的评论来展开,在我们做的企业版里,把即时沟通部分也作为标配来处理。另一个方面是效率,从产品角度看就是任务,我们想把任务做到极致,把任务配合项目实现不同类型团队业务的解决办法。还有一个就是刚才提到的文件和文档。如果再附加两个的话,那就是关系,人的关系在这里不是社交关系,而是同事之间的关系,所有产品逻辑上来看,会以工作关系来考虑产品。最后其实是邮件,邮件在全世界仍然很通行,邮件是Worktile连接外部世界的载体,未来也会考虑Worktile用邮件连接外部团队。

CSDN 在你眼中团队运作提升效率的关键因素都是什么?

王涛:明确的目标,靠目标驱动团队,是提高效率的最佳方式,比制度约束性的管理方式更佳有效;

找到更好的人,人靠谱又到位,效率还有各种管理问题其实迎刃而解;

找一个像Worktile一样的合适工具,工具的作用就是为目标和团队清晰的条件下,而设计的更友好的辅助工具。

CSDN:今后Worktile有哪些发展规划?

王涛:今后Worktile的主要方向还是商业化。一个to B的SaaS优秀产品必须收费才能支撑起之后更大更长远的发展。同时在行业也会有更深入的研究,不同的行业工作流各有侧重,Worktile会把垂直化产品做成插件形式融合到Worktile平台上。

CSDN:未来团队协作工具在国内将会如何发展?

王涛:Basecamp一直在向世界发出remoting work的信号。协作工具宣扬协同非管理,管理更强调组织架构,强调审批,而协作强调扁平化、透明,这跟互联网行业的本质非常一致。希望跟友商把市场教育起来,未来的发展还有太多事情可以做。


【活动预告】 2015年11月18日,由CSDN主办的2015开发工具及服务年度大奖评选活动正式启动。近两年,开发工具及服务不断涌现,从云服务、即时通讯、安全到统计监测、人工智能、物联网平台等。CSDN将通过公开征集,并结合平台内用户数据采集分析,评选出CSDN 2015开发工具及服务年度大奖。赶快为你的开发工具与服务报名参与评选吧。更多详情,请关注评选活动官网


《近匠》BearyChat李蠡:设计师“熊孩子”的企业IM创业梦】《近匠》第116期:办公室沟通基本靠吼?NoNoNo,“主要看气质”的时代,大家可以做到更理性实用。本期我们邀请到了一熊科技的联合创始人兼CEO李蠡,一起与大家分享他的创业故事和理想。

《近匠》极验验证:基于“行为沙盒”主动框架的安全验证】《近匠》第115期:近期12306登录验证系统也成为了网上热门的恶搞素材,让人们将视线聚焦到了网站的登录验证系统。什么样的验证系统能够让用户既安全又便捷的完成验证行为,是站长们最为关注的。

《近匠》奇点机智创始人邬霄云:用DeepShare打通App间的信息孤岛】《近匠》第114期:奇点机智的DeepShare是一个Deferred Deep Linking服务,比单纯的Deep Linking(深度链接)更加有效。它能帮助开发者和运营者更好地传播产品内原生内容,实现更快的用户增长,并监测流量渠道。

回顾更多内容及线下开发者活动信息,请关注mobilehub公众微信号(ID: mobilehub)

0
0
  • CSDN官方微信
  • 扫描二维码,向CSDN吐槽
  • 微信号:CSDNnews
程序员移动端订阅下载

微博关注

相关热门文章