揭秘高效协作工具背后的技术架构
發(fā)表于2015-12-08 10:50| 1731次閱讀| 來(lái)源CSDN| 4 條評(píng)論| 作者蒲婧
CTOCTO俱樂部CTO講堂管理實(shí)踐團(tuán)隊(duì)協(xié)作Worktile width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-12-07%2F2826411-CTO&type=3&count=&appkey=&title=%E5%A6%82%E4%BD%95%E5%81%9A%E5%88%B0%E5%9F%BA%E4%BA%8EWeb%E7%9A%84%E8%B7%A8%E5%B9%B3%E5%8F%B0%E8%AE%BE%E8%AE%A1%EF%BC%9F%E5%AE%9E%E6%97%B6%E6%B6%88%E6%81%AF%E7%B3%BB%E7%BB%9F%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84%EF%BC%9FWorktile%E7%9A%84%E6%95%B4%E4%B8%AA%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84%E6%98%AF%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%EF%BC%8C%E9%83%BD%E7%94%A8%E5%88%B0%E4%BA%86%E5%93%AA%E4%BA%9B%E6%8A%80%E6%9C%AF%EF%BC%9F%E6%9C%AC%E6%96%87%E6%98%AFWorktile%E8%81%94%E5%90%88%E5%88%9B%E5%A7%8B%E4%BA%BA%E5%85%BCCTO%E6%9D%8E%E4%BC%9A%E5%86%9B%E5%9C%A8CTO%E8%AE%B2%E5%A0%82%E7%9A%84%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB%E6%95%B4%E7%90%86%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1449924473396" frameborder="0" scrolling="no" allowtransparency="true">摘要:如何做到基于Web的跨平臺(tái)設(shè)計(jì)?實(shí)時(shí)消息系統(tǒng)的設(shè)計(jì)是怎樣的?Worktile的整個(gè)技術(shù)架構(gòu)是什么樣的,都用到了哪些技術(shù)?本文是Worktile聯(lián)合創(chuàng)始人兼CTO李會(huì)軍在CTO講堂的干貨分享整理。為了幫助IT從業(yè)者職業(yè)之路擁有更多收獲,在諸多C粉的殷切期待下,由?CTO俱樂部打造的CTO線上講堂自登場(chǎng)以來(lái)獲得大家好評(píng)。本期邀請(qǐng)Worktile聯(lián)合創(chuàng)始人兼CTO李會(huì)軍帶來(lái)“揭秘高效協(xié)作工具背后的技術(shù)架構(gòu)?”的主題分享。
歡迎加入CTO講堂微信群與業(yè)界大咖零距離溝通,12月10日本期講堂報(bào)名方式拖至文末查看。
分享嘉賓:Worktile聯(lián)合創(chuàng)始人兼CTO ?李會(huì)軍
嘉賓簡(jiǎn)介:李會(huì)軍,易成時(shí)代聯(lián)合創(chuàng)始人兼CTO。負(fù)責(zé)公司旗下Worktile和紛云兩款產(chǎn)品的產(chǎn)品設(shè)計(jì)和研發(fā)。
2005年,李會(huì)軍畢業(yè)于中國(guó)民航大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,畢業(yè)后先后就職于仙特軟件和宇思信德科技有限公司,從事系統(tǒng)架構(gòu)相關(guān)工作;其后受邀加入鮮果移動(dòng)擔(dān)任技術(shù)總監(jiān);連續(xù)4屆“微軟MVP",著有技術(shù)暢銷書《Silverlight 2 完美征程》。
公司簡(jiǎn)介:Worktile是一款專注于解決中小團(tuán)隊(duì)協(xié)作的SaaS軟件,包括任務(wù)進(jìn)度管理,團(tuán)隊(duì)成員之間共享文件,在線編寫文檔以及安排團(tuán)隊(duì)的日程等。清晰的看板管理和樂高積木式的模塊化功能是其最大的特點(diǎn)。用戶可以在看板上按照自己的工作習(xí)慣和流程打造貼合自身的工作流;通過(guò)充足的自定義權(quán)限可以定義團(tuán)隊(duì)、項(xiàng)目、任務(wù)的多種屬性,還可以隨心開啟關(guān)閉功能模塊,就像玩轉(zhuǎn)樂高積木一樣簡(jiǎn)單靈活。目前Worktile已經(jīng)推出了Web版、iPhone版和Android版,可以滿足不同平臺(tái)的需求。
以下是12月4日CTO講堂現(xiàn)場(chǎng)完整速記:
主持人:講堂開始~歡迎今天嘉賓Worktile聯(lián)合創(chuàng)始人兼CTO李會(huì)軍,李總給大家做自我介紹~
李會(huì)軍:大家好,我是Worktile的李會(huì)軍,目前負(fù)責(zé)Worktile產(chǎn)品和研發(fā)方面的工作。
在2011年的時(shí)候我離開了當(dāng)時(shí)的飛信團(tuán)隊(duì),開始人生第一次創(chuàng)業(yè),可惜那一次只堅(jiān)持了8個(gè)月的時(shí)間就面臨著產(chǎn)品失敗,人員解散。在2013年初,又開始了第二次創(chuàng)業(yè),所做的產(chǎn)品就是現(xiàn)在的Worktile。
主持人:您決定開始Worktile的創(chuàng)業(yè)是看到了什么發(fā)展機(jī)遇么?最初的想法是怎樣的?
李會(huì)軍:第一次創(chuàng)業(yè)時(shí)我們做一款個(gè)性化資訊閱讀方面的產(chǎn)品,當(dāng)時(shí)我們團(tuán)隊(duì)只有10個(gè)人左右,但是我們也需要團(tuán)隊(duì)成員之間互相協(xié)作的工具,于是我們自己利用開源項(xiàng)目自己搭建了團(tuán)隊(duì)內(nèi)部的Wiki,買了臺(tái)服務(wù)作為公司的文件共享服務(wù)器等等,但是維護(hù)這些開源項(xiàng)目和服務(wù)器,也花去了我們團(tuán)隊(duì)不少的時(shí)間。
第二次創(chuàng)業(yè)時(shí),我們自然而然的就想解決中小團(tuán)隊(duì)成員之間協(xié)作的問題,于是選了Worktile作為方向,簡(jiǎn)單的說(shuō),Worktile想解決的是中小團(tuán)隊(duì)成員之間的溝通、效率問題,我們希望把Worktile打造成成郵件一樣簡(jiǎn)單,讓大家在日常工作中能夠隨時(shí)使用的產(chǎn)品,這就是我們當(dāng)時(shí)做Worktile的初衷。
主持人:目前Worktile的情況以及技術(shù)團(tuán)隊(duì)構(gòu)成是怎樣的呢?
李會(huì)軍:目前已經(jīng)有超過(guò)15萬(wàn)家中小團(tuán)隊(duì)在Worktile上進(jìn)行協(xié)作,主要的行業(yè)有互聯(lián)網(wǎng)行業(yè)、律師咨詢團(tuán)隊(duì)、電商團(tuán)隊(duì)、廣告行業(yè)以及制造行業(yè)等等?,F(xiàn)在的版本為免費(fèi)版,并且會(huì)保持永久免費(fèi),我們會(huì)在今年年底的時(shí)候推出企業(yè)版本,走出商業(yè)化嘗試的第一步。
現(xiàn)在Worktile團(tuán)隊(duì)的構(gòu)成主要是研發(fā)人員,占到公司總?cè)藬?shù)的70%左右,只有很少市場(chǎng)運(yùn)營(yíng)方面的人員,其中研發(fā)人員中前端和服務(wù)端的比例基本為1:1。
主持人:簡(jiǎn)單介紹下Worktile目前提供的產(chǎn)品和服務(wù)吧。
李會(huì)軍:現(xiàn)在Worktile提供的是全免費(fèi)版本,主要包括任務(wù)管理、日程安排、文件共享以及在線文檔協(xié)作,同時(shí)在這些基礎(chǔ)功能上,根據(jù)用戶的使用數(shù)據(jù),自動(dòng)生成項(xiàng)目級(jí)別和團(tuán)隊(duì)級(jí)別的統(tǒng)計(jì)報(bào)表,我們稱之為簡(jiǎn)報(bào)。
而另一款產(chǎn)品紛云主要解決團(tuán)隊(duì)成員之間的溝通以及和外部第三方服務(wù)的整合,你可以把微信公眾號(hào)中用戶的發(fā)言、或者微博等等,各種外部服務(wù)中的消息都匯總到紛云,目前已經(jīng)支持120多家服務(wù)。
在年底推出的Worktile企業(yè)版中,我們會(huì)在免費(fèi)版的基礎(chǔ)功能上進(jìn)一步整合協(xié)作、溝通這兩大塊功能。
主持人:可否從具體產(chǎn)品適用場(chǎng)景或者客戶案例方面來(lái)闡述一下使用Worktile的便捷流程。
李會(huì)軍:Worktile目前提供的功能都是非常通用的,跟電子郵件一樣,并沒有針對(duì)某個(gè)特定垂直行業(yè)的工作場(chǎng)景。如律師團(tuán)隊(duì)可以在Worktile上跟進(jìn)某一個(gè)訴訟案件的流程,研發(fā)團(tuán)隊(duì)可以使用Worktile進(jìn)行產(chǎn)品的研發(fā)流程管理,電商團(tuán)隊(duì)可以使用Worktile進(jìn)行團(tuán)隊(duì)內(nèi)部各個(gè)小組之間的協(xié)作。
同時(shí)我們也針對(duì)不同的行業(yè)提供了相應(yīng)的案例解決方案,關(guān)于電商團(tuán)隊(duì)具體使用場(chǎng)景可以參考我們整理的:https://worktile.com/can/ecommerce。
主持人:Worktile的產(chǎn)品有什么獨(dú)特之處?國(guó)內(nèi)外市面上是否有同類型的服務(wù)公司?
李會(huì)軍:Worktile之所以得到用戶認(rèn)可,很大程度上取決于產(chǎn)品的品質(zhì),第一,以前的企業(yè)級(jí)產(chǎn)品首先關(guān)注的是老板的使用體驗(yàn),而Worktile首先關(guān)注的是員工的使用體驗(yàn),因?yàn)楫a(chǎn)品的使用主體是員工,如果員工不愿意使用,在團(tuán)隊(duì)內(nèi)部很難推廣。
第二,很多企業(yè)級(jí)產(chǎn)品重銷售和推廣而輕產(chǎn)品,Worktile把重心放在了產(chǎn)品體驗(yàn)上,如任務(wù)的看板式視圖,拖拽操作,頁(yè)面實(shí)時(shí)更新等,只有當(dāng)產(chǎn)品的體驗(yàn)非常好的時(shí)候,才有可能在用戶之間形成口碑傳播,事實(shí)上目前Worktile很少做廣告,絕大部分用戶都來(lái)自于老用戶的推薦。
在國(guó)內(nèi)外與Worktile一樣的公司有好多家,如Basecamp算是項(xiàng)目管理領(lǐng)域的鼻祖,Trello專注于看板式任務(wù)管理,Asana專注于任務(wù)管理,推崇取代電子郵件的工作方式,國(guó)內(nèi)也有幾家同類型的公司,總之大家各有優(yōu)勢(shì)。
主持人:Worktile的整個(gè)技術(shù)架構(gòu)是怎樣的?
李會(huì)軍:Worktile的整個(gè)技術(shù)架構(gòu)上首先是SPA,單頁(yè)應(yīng)用程序,這對(duì)于Worktile這樣的產(chǎn)品來(lái)說(shuō)是最重要的一點(diǎn),避免用戶在不同頁(yè)面間的跳轉(zhuǎn),最終我們選用了Google 出品的AngularJs作為SPA的實(shí)現(xiàn)技術(shù)。
另一個(gè)重點(diǎn)在于消息推送,當(dāng)頁(yè)面顯示的數(shù)據(jù)有變化時(shí),實(shí)時(shí)更新頁(yè)面的顯示,如團(tuán)隊(duì)中一個(gè)成員完成了某個(gè)任務(wù),需要在其他成員那邊也實(shí)時(shí)顯示為任務(wù)已完成,為了達(dá)到這種效果,需要在Web客戶端和服務(wù)器之間維持一個(gè)長(zhǎng)連接,當(dāng)有任何改變發(fā)生時(shí),給客戶端發(fā)送不同的消息,告知客戶端哪些數(shù)據(jù)發(fā)生了變化。
我用一幅圖給大家解釋一下Worktile的整體架構(gòu):
這幾部分我分別解釋一下:
- 1)? API服務(wù),包括Web API、Mobile API、Open API,這些都運(yùn)行于NodeJS之上,選用NodeJS的原因主要是它的異步事件驅(qū)動(dòng),對(duì)于高并發(fā)的支持比較好,另外一個(gè)原因是使用簡(jiǎn)單,對(duì)于前后端可以使用同一門語(yǔ)言去開發(fā)。
- 2)? 緩存和隊(duì)列服務(wù),Worktile中的緩存和隊(duì)列服務(wù)都是基于Redis來(lái)實(shí)現(xiàn),Redis是一款非常優(yōu)秀的開源緩存服務(wù),并且可以選擇基于內(nèi)存還是進(jìn)行數(shù)據(jù)持久化,它提供的pub/sub模型對(duì)于Worktile來(lái)說(shuō)非常重要,對(duì)于一些實(shí)時(shí)性要求不高的處理,我們都是在Redis中pub一條消息,告知其他服務(wù)有數(shù)據(jù)發(fā)生了變化,那些服務(wù)在接收到Redis中的消息后,根據(jù)消息的類型決定應(yīng)該如何做出處理。
- 3)? 數(shù)據(jù)庫(kù)服務(wù),Worktile產(chǎn)品本身的特點(diǎn)決定了它是一個(gè)對(duì)實(shí)時(shí)性和性能的要求,遠(yuǎn)超過(guò)對(duì)事務(wù)性要求的產(chǎn)品,所以在選擇數(shù)據(jù)庫(kù)時(shí),我們選用了MongoDB數(shù)據(jù)庫(kù),性能高,集群方便,數(shù)據(jù)以BSON結(jié)構(gòu)存儲(chǔ),和Node.js天生完美結(jié)合。
- 4)? 文件預(yù)覽服務(wù),使用Worktile的同學(xué)肯定知道在Worktile中所有的文件都可以做到無(wú)需下載到本地,而直接在線查看,這一切都是預(yù)覽服務(wù)的功勞,因?yàn)槲募愋偷母鞣N各樣,在實(shí)現(xiàn)文件預(yù)覽時(shí)也要根據(jù)文件的類型做出不同的處理,針對(duì)txt、pdf、代碼片段等文本型的文件,我們只需要讀取文件中的內(nèi)容,然后在前端用相應(yīng)的視圖展現(xiàn)出來(lái)即可,相對(duì)比較簡(jiǎn)單。但是對(duì)于Office類型的文件,如ppt、doc、xls等文件,就不能這么簡(jiǎn)單的處理,我們希望文件在Worktile中查看的效果和用戶在本地使用Word、Excel、PowerPoint查看的效果差不多,經(jīng)過(guò)我們的調(diào)研,最終選用了微軟官方提供的Office Web App服務(wù)。
主持人:可否分享一下在技術(shù)方面Worktile都做了哪些探索,用到了什么技術(shù)?
李會(huì)軍:從一開始我們就確定了幾個(gè)原則,作為團(tuán)隊(duì)協(xié)作工具,從技術(shù)上分析首先要解決如下幾個(gè)問題:
- 1) 基于Web的跨平臺(tái)設(shè)計(jì),讓用戶在任何地方都可以隨時(shí)通過(guò)瀏覽器訪問
- 2) Web形態(tài)的產(chǎn)品要具有原生客戶端的體驗(yàn),如任務(wù)的拖拽等
- 3) 具有高效的實(shí)時(shí)消息系統(tǒng),每個(gè)團(tuán)隊(duì)成員在Worktile中所做的任何操作,都要實(shí)時(shí)在其他成員的客戶端中自動(dòng)刷新
- 4) 服務(wù)要穩(wěn)定,穩(wěn)定壓倒一切
在選擇使用AngularJS之前,我們首先考慮使用大名鼎鼎的Backbone.js,但是很快又拋棄了,因?yàn)樵趯?shí)際使用中Backbone.js太復(fù)雜,另一方面開發(fā)效率太低。而最終選擇AngularJS主要基于如下幾點(diǎn):
- 1)? 自動(dòng)化雙向數(shù)據(jù)綁定功能,這一點(diǎn)在Worktile中非常重要,如任務(wù)的狀態(tài)變化都要實(shí)時(shí)變更到其他成員,如果具有自動(dòng)化雙向數(shù)據(jù)綁定功能,只需要綁定到UI的數(shù)據(jù)源發(fā)生變化,UI會(huì)自動(dòng)發(fā)生改變,不需要工程師再通過(guò)代碼去修改UI元素的改變。
- 2)? 模塊化設(shè)計(jì),AngularJS堪稱模塊化設(shè)計(jì)方面的典范,通過(guò)模塊化設(shè)計(jì)我們可以非常好的實(shí)現(xiàn)Worktile的工程化,在Worktile中涉及的元素非常多,如有項(xiàng)目、任務(wù)、日程、文件、話題、文檔等等,而這每一個(gè)元素都可以設(shè)計(jì)為一個(gè)模塊。
- 3)? 語(yǔ)義化標(biāo)簽,AngularJS在設(shè)計(jì)之初信奉的理念就是:當(dāng)編寫UI的同時(shí)又需要編寫業(yè)務(wù)邏輯時(shí),聲明式的代碼遠(yuǎn)比命令式代碼要好,命令式的代碼更適合寫業(yè)務(wù)邏輯,AngularJS在設(shè)計(jì)上就通過(guò)語(yǔ)義化的標(biāo)簽把對(duì)DOM元素的操作和邏輯代碼分離。
- 4)? 引入依賴注入,依賴注入是面向?qū)ο笾斜容^成熟的設(shè)計(jì)模式之一,為了解決面向?qū)ο笾幸蕾噯栴},得到了廣泛的應(yīng)用,AngularJS中大膽使用了依賴注入,極大的減少了各個(gè)模塊之間的耦合問題。
主持人:請(qǐng)介紹下實(shí)時(shí)消息系統(tǒng)的設(shè)計(jì)。
李會(huì)軍:前面已經(jīng)說(shuō)過(guò),實(shí)時(shí)消息系統(tǒng)是Worktile整個(gè)架構(gòu)中最重要的兩個(gè)體系之一,我們想解決的問題很簡(jiǎn)單就是讓頁(yè)面數(shù)據(jù)能夠?qū)崟r(shí)更新,基于這個(gè)需求有如下幾個(gè)選擇:
- 1) 短輪詢,頁(yè)面端通過(guò)js定時(shí)異步刷新,這種方式優(yōu)點(diǎn)在于實(shí)現(xiàn)簡(jiǎn)單,但實(shí)時(shí)效果較差。
- 2) 長(zhǎng)輪詢。頁(yè)面端通過(guò)js異步請(qǐng)求服務(wù)端,服務(wù)端在接收到請(qǐng)求后,如果該次請(qǐng)求沒有數(shù)據(jù),則掛起這次請(qǐng)求,直到有數(shù)據(jù)到達(dá)或時(shí)間片(服務(wù)端設(shè)定)到,則返回本次請(qǐng)求,客戶端接著下一次請(qǐng)求,這種方式對(duì)于服務(wù)的要求較高,尤其在并發(fā)量很大的情況下,對(duì)服務(wù)端的壓力很大。
- 3) Websocket。瀏覽器通過(guò)websocket協(xié)議連接服務(wù)端,實(shí)現(xiàn)了瀏覽器和服務(wù)器端的全雙工通信。需要服務(wù)端和瀏覽器都支持websocket協(xié)議。
在Worktile一開始我們選用了Socket.IO作為消息服務(wù),但是隨著訪問量的增大,需要做集群化的時(shí)候感覺到力不從心,尤其對(duì)于Socket.IO狀態(tài)數(shù)據(jù)的存儲(chǔ),由于并沒有官方的解決方案,當(dāng)時(shí)我們采用了一個(gè)第三方的開源項(xiàng)目,使用Redis來(lái)存儲(chǔ),引起了一些性能上的問題,在后來(lái)重構(gòu)時(shí)選用了基于Erlang語(yǔ)言的開源XMPP服務(wù)ejabberd作為我們的實(shí)時(shí)消息服務(wù)。
簡(jiǎn)單介紹一下ejabberd,ejabberd是xmpp協(xié)議的一種實(shí)現(xiàn), xmpp廣泛應(yīng)用于即時(shí)通信領(lǐng)域。Xmpp協(xié)議的實(shí)現(xiàn)有很多種,比如java的openfire,但相較其他實(shí)現(xiàn),ejabberd的并發(fā)性能無(wú)疑使最優(yōu)秀的。Xmpp協(xié)議的前身是jabber協(xié)議,早期的jabber協(xié)議主要包括在線狀態(tài)(presence)、好友花名冊(cè)(roster)、IQ(Info/Query)幾個(gè)部分?,F(xiàn)在jabber已經(jīng)成為rfc的官方標(biāo)準(zhǔn),如rfc2799, rfc4622, rfc6121,以及xmpp的擴(kuò)展協(xié)議(xep)。Worktile就是基于XEP-0124、XEP-0206定義的BOSH擴(kuò)展協(xié)議。
由于自身業(yè)務(wù)的需要,我們對(duì)ejabberd的用戶認(rèn)證和好友列表模塊的源碼進(jìn)行修改,通過(guò)redis保存用戶的在線狀態(tài),而不是mnesia和mysql。另外好友這塊我們是從已有的數(shù)據(jù)庫(kù)中(mongodb)中獲取Worktile中項(xiàng)目或團(tuán)隊(duì)的成員。Web端通過(guò)strophe.js來(lái)連接(http-bind),strophe.js可以以長(zhǎng)輪詢和websocket兩種方式來(lái)連接,由于ejabberd還沒有好的websocket的實(shí)現(xiàn),就采用了BOSH的方式模擬長(zhǎng)連接。
主持人:怎么使得Web形態(tài)的產(chǎn)品要具有原生客戶端的體驗(yàn)?可否舉例詳細(xì)談?wù)劇?/span>
李會(huì)軍:Web形態(tài)的產(chǎn)品具有原生客戶端的體驗(yàn),在前面講技術(shù)架構(gòu)的時(shí)候已經(jīng)聊過(guò),要做好這點(diǎn)需要解決兩個(gè)問題:第一是實(shí)時(shí)消息推送,任何數(shù)據(jù)的變化都需要及時(shí)變更到團(tuán)隊(duì)所有成員當(dāng)前所在的視圖,如一個(gè)典型的任務(wù)看板,團(tuán)隊(duì)所有成員可能同時(shí)在操作當(dāng)前項(xiàng)目中的任務(wù),每個(gè)操作引起看板的變化都會(huì)實(shí)時(shí)更新,不需要用戶做任何刷新操作,下面這幅圖就是一個(gè)典型的任務(wù)看板:
第二是操作體驗(yàn),比如拖拽在以前只有原生客戶端才能實(shí)現(xiàn)的體驗(yàn),現(xiàn)在在Web產(chǎn)品上也可以實(shí)現(xiàn)的非常好,Worktile中有大量的使用拖拽的場(chǎng)景,如給任務(wù)分配成員、任務(wù)從一個(gè)階段進(jìn)入到另一個(gè)階段等等。
主持人:您怎么看國(guó)內(nèi)外團(tuán)隊(duì)協(xié)作產(chǎn)品的發(fā)展? 如何才能讓團(tuán)隊(duì)運(yùn)作更有效率?
李會(huì)軍:團(tuán)隊(duì)協(xié)作產(chǎn)品在Worktile開始做的時(shí)候,這個(gè)市場(chǎng)國(guó)內(nèi)相對(duì)還比較冷門,到了今年的時(shí)候已經(jīng)到了火爆的程度,尤其是Slack的出現(xiàn),進(jìn)一步把這個(gè)市場(chǎng)推向了高潮,所以大家都把2015年稱之為企業(yè)服務(wù)元年。
總體來(lái)說(shuō),團(tuán)隊(duì)協(xié)作產(chǎn)品目前在國(guó)內(nèi)還是一個(gè)百花齊放的態(tài)勢(shì),沒有一家獨(dú)大,產(chǎn)品之間的差異化不是特別明顯,隨著這個(gè)市場(chǎng)進(jìn)一步的成熟,誰(shuí)能最好的解決協(xié)作中的:效率、溝通、存儲(chǔ)、共享等幾個(gè)要素,就能夠首先破局。
而國(guó)外的市場(chǎng)相對(duì)比較成熟一些,Slack偏重在團(tuán)隊(duì)溝通和信息聚合方面,Basecamp、Asana、Trello都偏重于項(xiàng)目管理方面。
主持人:看到您曾經(jīng)連續(xù)4屆是“微軟MVP”,還著有技術(shù)暢銷書《Silverlight 2 完美征程》,請(qǐng)結(jié)合這些年您自己在技術(shù)之路上的積累,談?wù)劶夹g(shù)人該如何做到高效學(xué)習(xí)和提升技能?
李會(huì)軍:首先我認(rèn)為是打好基礎(chǔ),練好內(nèi)功,在技術(shù)這個(gè)行業(yè)中基礎(chǔ)決定了將來(lái)的高度。編程語(yǔ)言只是一種工具,在具體工作中使用哪種語(yǔ)言或者框架只是個(gè)選擇問題,也許跟公司的技術(shù)負(fù)責(zé)人的背景有關(guān),也許跟某個(gè)語(yǔ)言的特點(diǎn)有關(guān),總之這個(gè)是在變化的,比如我自己在很多年前還是微軟的MVP,而現(xiàn)在已經(jīng)徹底擁抱開源世界。但是不管選擇什么,不變的是數(shù)據(jù)結(jié)構(gòu)、算法、底層的一些機(jī)制等等,打好扎實(shí)的基礎(chǔ)能夠讓你事半功倍。
其次,互相借鑒,互相學(xué)習(xí),多跟圈子里的大牛們學(xué)習(xí),研究學(xué)習(xí)優(yōu)秀的開源項(xiàng)目,在幾年前我研究過(guò)幾個(gè)優(yōu)秀開源項(xiàng)目的源代碼,這段經(jīng)歷對(duì)我影響很大。
第三,讀書,讀經(jīng)典的書,現(xiàn)在市場(chǎng)上技術(shù)類的書籍魚龍混雜,各種速成類書籍層出不群,如二十一天精通某某某等,這類書應(yīng)該敬而遠(yuǎn)之,多讀一些經(jīng)典的書籍,后面我會(huì)推薦一些書籍給大家。
主持人:請(qǐng)結(jié)合您的切身體會(huì)談?wù)勔幻细竦腃TO或技術(shù)團(tuán)隊(duì)管理者應(yīng)該是怎樣的?
李會(huì)軍:在我看來(lái),作為一名合格的技術(shù)CTO,要做好如下幾件事情:第一,對(duì)研發(fā)團(tuán)隊(duì)負(fù)責(zé),CTO更多的是管理和規(guī)劃工作,具體的架構(gòu)設(shè)計(jì)也許有首席架構(gòu)師等人負(fù)責(zé),但是把架構(gòu)師、前端工程師、服務(wù)端工程師以及產(chǎn)品經(jīng)理、設(shè)計(jì)師等不同角色的成員管理好,讓不同角色之間互相協(xié)調(diào)配合,達(dá)到效率最大化是第一要?jiǎng)?wù);
第二,對(duì)公司負(fù)責(zé),從公司長(zhǎng)遠(yuǎn)的發(fā)展規(guī)劃團(tuán)隊(duì)的技術(shù)選型,以及人員組成,產(chǎn)品上線時(shí)間越久,團(tuán)隊(duì)越大,后期再改變技術(shù)方案的成本就會(huì)越高。同時(shí)CTO還要從公司角度考慮研發(fā)團(tuán)隊(duì)的人員組成,人才階梯計(jì)劃,關(guān)注團(tuán)隊(duì)成員的成長(zhǎng)。
第三,對(duì)產(chǎn)品管理負(fù)責(zé),在我們團(tuán)隊(duì)中CTO同時(shí)還要負(fù)責(zé)產(chǎn)品管理,所以規(guī)劃產(chǎn)品的版本,迭代的頻率,產(chǎn)品上線質(zhì)量等事情都需要CTO去負(fù)責(zé)。
主持人:對(duì)想在技術(shù)路線上走得更遠(yuǎn)的人,您都有什么建議和忠告?推薦一些您覺得非常不錯(cuò)的資料或者書籍吧。
李會(huì)軍:建議其實(shí)在談技術(shù)人該如何做到高效學(xué)習(xí)和提升技能的問題時(shí)已經(jīng)說(shuō)過(guò)了,我還是給大家推薦幾本對(duì)我影響比較大的經(jīng)典技術(shù)書籍吧:
- 《UNIX網(wǎng)絡(luò)編程》
- 《UNIX環(huán)境高級(jí)編程》
- 《UNIX編程藝術(shù)》
- 《程序設(shè)計(jì)語(yǔ)言 : 實(shí)踐之路》
- 《深入理解計(jì)算機(jī)系統(tǒng)》
- 《用TCP/IP進(jìn)行網(wǎng)際互聯(lián)》
- 《深度探索C++對(duì)象模型》
李會(huì)軍:這個(gè)流程用戶是可以自定義的,你可以根據(jù)自己團(tuán)隊(duì)的實(shí)際情況,自行定義。Worktile現(xiàn)在已經(jīng)提供OpenAPI,可以與外部服務(wù)進(jìn)行集成。具體可以參考:http://open.worktile.com。 互動(dòng)環(huán)節(jié):其實(shí)我最好奇的是,worktile公司會(huì)招聘剛畢業(yè)的大學(xué)生嗎?如果招的話,輸出方向是怎么樣的呢?
李會(huì)軍:其實(shí)我們團(tuán)隊(duì)有很多都是剛畢業(yè)的大學(xué)生,研發(fā)、運(yùn)營(yíng)方面都有,如果對(duì)在Worktile工作感興趣的話,可以加我微信,我們進(jìn)一步聯(lián)系。 互動(dòng)環(huán)節(jié):請(qǐng)問一下用戶隱私方面是怎么處理的,譬如數(shù)據(jù)加密。
李會(huì)軍:關(guān)于用戶隱私和數(shù)據(jù)安全其實(shí)一直是SAAS類產(chǎn)品推廣最大的難點(diǎn),目前免費(fèi)版中只對(duì)一些關(guān)鍵敏感數(shù)據(jù)進(jìn)行了加密,而在企業(yè)版中,我們會(huì)進(jìn)一步加強(qiáng)數(shù)據(jù)安全和用戶隱私方面的考慮。對(duì)用戶上傳的文件等所有數(shù)據(jù)都進(jìn)行加密處理。 互動(dòng)環(huán)節(jié):worklite有多個(gè)端的產(chǎn)品,不知道是怎么保證多端的開發(fā)的?有沒有哪些需要特別注意的地方?
李會(huì)軍:多端開發(fā)其實(shí)也沒有什么特別的地方,我們團(tuán)隊(duì)采取的策略是,對(duì)于一個(gè)新的功能點(diǎn)首先在Web端推出,進(jìn)行用戶測(cè)試,如果測(cè)試通過(guò),其它端再跟進(jìn)。如果測(cè)試不通過(guò),最終砍掉了這個(gè)功能,其他端根本不需要做什么。
問:可能沒問清楚,多端開發(fā)成本是比較高的,現(xiàn)在是統(tǒng)一嵌h5還是分平臺(tái)開發(fā)?基于什么考慮?感謝。
李會(huì)軍:我們目前是各平臺(tái)開發(fā)的,沒有采用嵌入H5的技術(shù)方案,主要還是基于用戶體驗(yàn)的考慮,用H5實(shí)現(xiàn)的話有一些體驗(yàn)還是不能達(dá)到最好。 互動(dòng)環(huán)節(jié):請(qǐng)問下worktile 和 tower 這樣的產(chǎn)品有什么 相同和不同點(diǎn)呢?
李會(huì)軍:tower和worktile算是同類型的產(chǎn)品,在功能上彼此差不多,Worktile免費(fèi)版的優(yōu)勢(shì)在于任務(wù)看板視圖,而tower則主要是todo-list的方式管理任務(wù)。至于Worktile企業(yè)版,因?yàn)楝F(xiàn)在還在內(nèi)測(cè),沒有推出,所以暫時(shí)不方面透露太多和tower的相同和不同:) 互動(dòng)環(huán)節(jié):您說(shuō)您研究開源代碼, 我也在做同樣的事。 但是想請(qǐng)教一下 您有一個(gè)比較好的項(xiàng)目列表;還有是怎么研究的, 代碼光看也不行啊。
李會(huì)軍:比如Redis的源代碼,我認(rèn)為寫的非常優(yōu)秀,其實(shí)不僅僅是看源代碼,通過(guò)源代碼理解他們?cè)趯戇@些開源項(xiàng)目時(shí)所做的思考,里面蘊(yùn)含的思想等等。 互動(dòng)環(huán)節(jié):老師我之前用過(guò)websocket做他人登錄自己賬號(hào)提示的推送 可是當(dāng)頁(yè)面刷新或者后退前進(jìn)的話鏈接就會(huì)斷掉再重新連? 咱們這個(gè)系統(tǒng)是怎么控制多人用同一賬號(hào)同時(shí)登錄的。
李會(huì)軍:多人用同一個(gè)帳號(hào),在Worktile中并不需要做特別的控制,基于ejabberd每個(gè)客戶端跟服務(wù)的連接都是一個(gè)唯一的標(biāo)識(shí),不太明白你想解決什么問題。
問:就是想問當(dāng)我在線的時(shí)候突然別人用我的賬號(hào)登陸了 會(huì)有什么提示?
李會(huì)軍:目前Worktile是允許一個(gè)通過(guò)帳戶同時(shí)在多個(gè)地方登錄的,并沒有限制,只是提供了每一次的登錄時(shí)間、登錄地點(diǎn)和IP供用戶查詢。 互動(dòng)環(huán)節(jié):Worktile等同類的這些SaaS服務(wù),盈利模式是怎樣的呢?不太好理解 :-)目前國(guó)內(nèi)SaaS領(lǐng)域一片紅海,有很多的資本跟進(jìn),未來(lái)會(huì)怎樣的發(fā)展趨勢(shì)?
李會(huì)軍:企業(yè)SaaS類服務(wù),在國(guó)外已經(jīng)相當(dāng)成熟,如salesforce、slack等,盈利模式無(wú)非就幾種:免費(fèi)功能+增值服務(wù),或者是完全收費(fèi),免費(fèi)體驗(yàn)一段時(shí)間。相比較而言,ToB類服務(wù)反而比ToC類的更好實(shí)現(xiàn)商業(yè)一些,我們?cè)谀甑准磳⑼瞥龅钠髽I(yè)版也是走出商業(yè)化的考慮。 互動(dòng)環(huán)節(jié):tob的推廣會(huì)是一個(gè)大問題,你們?cè)谕茝V方面有哪些挑戰(zhàn)?采取了哪些方案呢?
李會(huì)軍:在推廣方面,主要還是要解決用戶的啟動(dòng)問題,因?yàn)門oB類服務(wù)不像Toc,企業(yè)用戶選擇相對(duì)比較理性,會(huì)有一個(gè)決策的過(guò)程,所以ToB類產(chǎn)品只看用戶絕對(duì)數(shù)增長(zhǎng)是毫無(wú)意義的,用戶是否真正在使用這個(gè)產(chǎn)品更加重要,我們?cè)谕茝V上目前更多的是維護(hù)好老用戶,保證產(chǎn)品品質(zhì),通過(guò)老用戶的口碑傳播。 互動(dòng)環(huán)節(jié):企業(yè)版主要是一些哪方面的改變?
李會(huì)軍:關(guān)于Worktile企業(yè)版目前還在內(nèi)測(cè)中,只能說(shuō)體驗(yàn)比免費(fèi)版的棒,功能比免費(fèi)版強(qiáng)大,更多細(xì)節(jié)現(xiàn)在不方面透露,如果感興趣的話,在開始測(cè)試時(shí),邀請(qǐng)你來(lái)參與測(cè)試。
問:好的,多謝。我們使用worktile已經(jīng)挺長(zhǎng)時(shí)間了,但是隨著團(tuán)隊(duì)擴(kuò)大,內(nèi)部的系統(tǒng)也越來(lái)越多,如果互相之間不能整合就非常麻煩,所以在選型方面更傾向于開放的系統(tǒng),期望worktile在這方面能夠加強(qiáng)。
李會(huì)軍:不管是免費(fèi)版還是企業(yè)版,在和外部系統(tǒng)整合上,我們會(huì)保持一如既往的開放。 互動(dòng)環(huán)節(jié):李總您好,面向企業(yè)的版本會(huì)在哪些方面加強(qiáng)?使用什么策略吸引企業(yè)付費(fèi)呢?會(huì)是從現(xiàn)有用戶中轉(zhuǎn)換一批嗎?
李會(huì)軍:企業(yè)版目前還在內(nèi)測(cè)中,只能說(shuō)體驗(yàn)比免費(fèi)版的棒,功能比免費(fèi)版強(qiáng)大,在協(xié)作和溝通兩個(gè)方面都有很大提升,如果現(xiàn)在免費(fèi)版用戶想使用企業(yè)版,可以無(wú)縫的遷移到企業(yè)版中。
問:會(huì)強(qiáng)制升級(jí)嗎?
李會(huì)軍:不會(huì),免費(fèi)版和企業(yè)版會(huì)同時(shí)存在。 互動(dòng)環(huán)節(jié):國(guó)內(nèi)的公司(有錢的公司 )普遍存在的是管理水平較為低下,管理團(tuán)隊(duì)成員素質(zhì)不高的問題。而新興的互聯(lián)網(wǎng)公司畢竟有錢的不太多,多數(shù)互聯(lián)網(wǎng)公司雖然多,但是沒錢:)。您覺得toB方向是不是還存在一個(gè)適應(yīng)期的問題呢?
李會(huì)軍:這個(gè)適應(yīng)期確實(shí)是存在的,只不過(guò)這種情況在逐漸好轉(zhuǎn),尤其到了2015年的時(shí)候,在幾年前,大家沒法想象公司內(nèi)部會(huì)使用第三方的辦公平臺(tái),而現(xiàn)在越來(lái)越多的團(tuán)隊(duì)已經(jīng)選擇SaaS這種更方面簡(jiǎn)單的服務(wù)。所以這個(gè)適應(yīng)期存在,但不會(huì)太長(zhǎng)。 互動(dòng)環(huán)節(jié):tower我用過(guò),里面有個(gè)跟微信綁定,在任務(wù)到期未完成的時(shí)候進(jìn)行微信提醒的功能還不錯(cuò),不知道貴公司目前做沒做,沒做的話到是可以考慮。
李會(huì)軍:這個(gè)Worktile里面也是支持的,當(dāng)任務(wù)快過(guò)期或者日程開始時(shí),如果綁定了微信,可以在微信上收到消息。 互動(dòng)環(huán)節(jié):看到你們后端采用的node技術(shù),該技術(shù)目前是不是還不夠成熟。因?yàn)闆]聽到哪家大公司在用。
李會(huì)軍:其實(shí)也不會(huì),近幾年來(lái)發(fā)展最快的技術(shù)我認(rèn)為就是node了,現(xiàn)在也有很多大公司在使用,但由于很多公司產(chǎn)品歷史上遺留下來(lái)的問題,要做技術(shù)轉(zhuǎn)型是一件很痛苦的事情。國(guó)外的Trello用的就是nodeJS。
總結(jié)
以上是生活随笔為你收集整理的揭秘高效协作工具背后的技术架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015年科技巨头的十个开源产品,不只是
- 下一篇: 简说创业公司的技术选型,从BearyCh