「BearyChat」能夠爲用戶作什麼?前端
「BearyChat」是由一熊科技目前重點爲團隊打造的一款溝通工具,經過「各類第三方服務集成」、「全格式的文件共享」、「自由定製的機器人」等方式將你所關心的信息快速匯聚到平臺上,再經過信息的「永久保存」、「一鍵收藏」、「全局搜索」、「實時預覽」幫你將信息流快速梳理,從而提升工做效率。 編程
「BearyChat」項目如何開展的?後端
目前一熊團隊會以兩個月爲一個週期進行衝刺,首先有一個基本原則:活躍和留存。全部的事情都須要和這兩個數據掛鉤,越直接優先級越高。每一個週期大概分三個階段:網絡
首先是功能需求肯定階段,這個大約有一週時間,最後都會體如今 Trello 裏面,主要是:架構
1.肯定 2 到 3 個大功能;框架
2.對於收集到的反饋問題按優先級肯定哪些要在這個週期處理,進行細節迭代;異步
3.最後和每一位同事確認需求,保證你們達成共識,知道這個週期的共同目標以及最終指望結果;分佈式
4.計劃排期階段,這個大約 1 到 2 天時間,主要是和每位同事溝通,肯定工做量,最後以周爲單位,劃分這個週期的任務。模塊化
開發階段,包括:函數式編程
* 產品和設計師再次明確需求
* 設計師出設計
* 產品和相關開發驗收設計
* 開發
* 產品和設計師驗收開發
* 黑盒測試
* 上線
回顧階段,主要是作總結,看這個週期完成度如何,差的比較多的話,會留一些時間作收尾或者將一些內容留到下個週期。
總體項目的推動是採用簡化的 Scrum 敏捷開發,天天會 15 分鐘左右的站會,讓你們清楚每一個昨天已經作的事情和今天要作的事情。另外除了 Trello 以後,辦公室還有一個現實白板,你們能夠清晰的看到每一個計劃所處的階段,目前主要分:Doing, Stage, Prod。而後每週五都會有一個 demo day,讓你們來展現一下各自作的東西,保證一週的進度 。
「BearyChat」的內部開發流程以及上線流程是怎樣的呢?
目前團隊的整個開發流程基本是和上面提到的開發階段差很少,這裏說說開發這個環節的內容。先介紹一下團隊的開發主要依賴的工具:GitHub 和 Jenkins。GitHub 開發過程當中要是是用來作 Code Review 和 issue 跟蹤;Jenkins 主要是用來保證測試和部署。
* 工程師從 Trello 拿任務放到 GitHub issue 中
* 開分支,完成後提 PR,同時要 at 至少一名 Reviewer
* 由於咱們將 GitHub 和 Jenkins 作了集成,代碼的每一個提交都會觸發 Jenkins 的測試,當 PR 處於測試經過而且能夠自動合併的狀態下,Reviewer 開始 Review
* Reviewer 經過 Review 最後負責合併分支,issue 會隨着 PR 合併自動關閉
* 將代碼部署到測試環境,進行功能驗收
* 將 Trello 裏面的 card 放到 DONE 裏面
開發上,團隊堅持 Code Review, 因此每一個端的工程師基本是保證由兩個以上的人員組成,能夠互相 review 而且有 backup。
上線流程不一樣的端有不一樣的上線時間點,原則上:
* 前端/後端:每週二週四上線
* iOS:每兩週,提交一次審覈(目前咱們遇到的審覈基本是兩週能夠經過的節奏)
* Android:每兩週提交一個新版,由於安卓審覈過程可控,因此節奏比較把握
* 桌面端:累積到必定新功能就發
「BearyChat」在產品開發過程當中,對於架構的把控和設計是怎樣的?
先分享一下產品總體架構
團隊對於架構和設計的一個想法:簡單。在技術架構上不作過分設計,可是會保持基本原則:可擴展。
可擴展包括兩個方面:
* 橫向擴展:監控得當,當發現流量增加的時候,能夠及時用**加節點的方式**解決壓力問題
* 縱向擴展:對產品發展有預見,設計的協議,結構能夠應對將來產品功能的擴展需求
另外就是要儘量作到模塊化,解耦合。隊列系統是必需要有的,全部能夠異步化的模塊都要異步化。
「BearyChat」的主力開發語言用了哪些?爲何要如此選擇?
前端是用了 AngularJS 和 LESS,後端是 Clojure 和 Erlang。
* AngularJS: 從語言角度講,Angular 有必定程度的組件化,容易複用,上手也相對容易;從和項目契合度來說,AngularJS 搭建實時系統很是方便,雙向綁定雖然性能差些,可是 MVC 很清晰;從社區角度講,Library 很是豐富;不過 JS 框架一般每隔一段時間就出來一個,好比如今的 React, 選擇一個當下最合適的就行。惟一一個坑就是 AngularJS 2.0 對下不兼容。
* LESS: 不用說了,模塊化,語法糖,節省時間;
Clojure: 基於 JVM 的 Lisp 方言。很是適合作數據處理的事情,尤爲適合作 API Server;從語言角度講,函數式編程,比較純粹,數據就是代碼,代碼就是數據,操做起來很方便;社區角度講,雖然不是很火,可是畢竟有 JVM 的優點,全部 JAVA 的庫都能引入;
* Erlang: 古老的語言,可是設計的目的就是解決通訊問題,他的語言特性就是用來解決高容錯,分佈式。Erlang 採用了 Actor 模型,而且有 OTP Library,搭建分佈式門檻就低了不少。另外做爲一門古老的語言,在消息通訊方面有不少代碼積累,好比 Ejabberd,應該算是 XMPP 協議下用的比較多的一套開源方案了。網絡庫方面,有 cow_boy, ranch 等;集羣方面,有 riak_core 等;通訊協議方面,有國人實現的 MQTT 協議;消息隊列方面,有 RabbitMQ;
目前工做上,團隊重度依賴工具:
BearyChat:內部溝通,聚合第三方通知信息
GitHub:代碼託管,Code Review,issue 跟蹤
Jenkins:集成測試,部署
Sentry:異常收集
Grafana+StatsD:數據收集
Trello:項目管理
Skype:遠程溝通
FIR.im:App 內測
感謝你們看完了這篇這麼長的文章瞭解咱們和咱們的產品,有任何問題,都歡迎隨時和咱們聯繫哦