2014Q4 工作心得 (3)

評估和導入前端應用的新技術和工具,今年初我們開始導入 Node.js 和 AngularJS 進行 Single Page Application 開發,就能解決大部份公司所面臨的問題,可是當專案越來越大,此時 AngularJS 效能和維護就會是大問題,因此我開始嘗試找解決的方案,React.js 單向資料流相較於 AngularJS 雙向資料綁定,資料處理架構更加明暸簡單,此外 React.js 的 Virtual DOM 更讓效能相關於 AngularJS 有明顯的差別,此外 React.js 搭配 jQuery 套件從無到有實際開發出呈現資料表格的網站,意外的非常簡單易懂,所以目前已經有部份專案的部份元件已經開始採用 React.js 進行開發。

調整和升級後端伺服器的應用,今年中我們開始導入 Sails.js 和 MongoDB 進行資料即時儲存的管理,像是推播通知系統如何儲存使用者的 Device Token 和 Register ID ,可是當資料量越來越大時,存取效能和穩定運作就會開始產生問題,因此我開始嘗試找解決的方案,Google BigQuery 提供的串流資料和 SQL 查詢就能解決資料即時儲存的管理,但是並非所有需求皆能解決,像是推播排程需要 CRUD 的功能,此時 MongoDB 就比 Google BigQuery 更適合,可是當需求為直接即時新增使用者資料,接著透過 Google BigQuery 在適當的時機透過 SQL 查詢篩選出符合條件的使用者資料,此時 Google BigQuery 就比 MongoDB 更適合,所以目前已經有部份專案依據需求的適切性開始轉移 Google BigQuery 進行管理。

最後資料呈現的方式,目前主要是透過 Google Docs 排程取得 Amazon RDS 、 MongoDB 、 Google BigQuery 和 Google Analytics 的資料進行整合產生業務專用的數據表格,下一步針對圖表的需求,要能讓業務根據樣本資料拉出需要的圖表,同時又能讓工程師直接實作出被需要的圖表,因此我開始嘗試找解決的方案,Plotly 是個圖表呈現的線上服務,除了能讓業務根據樣本資料拉出需要的圖表,又能讓工程師直接實作出被需要的圖表,並且搭配 Node.js 就能與 Google BigQuery 進行自動化的整合,此外業務要如何存取 Google BigQuery 的資料呢? IPython Notebook 是個筆記本的網站服務,能夠以筆記本的方式描述資料如何存取,以及透過 Python 指令直接直接執行程式碼存取 Google BigQuery 的資料,以及進行基本的資料分析與統計應用,所以目前已經開始在規劃 Plotly 和 IPython Notebook 詳細的整合應用標準操作流程 (Standard Operating Procedure, SOP)。