如何快速搭建一個類似於神策數據或諸葛IO的數據分析平台?

如何快速搭建一個類似於神策數據或諸葛IO的數據分析平台?

Growth Hacking這個詞在過去一兩年開始迅速從矽谷傳播到國內,也誕生了一系列專注於企業數據分析業務的明星初創公司,如GrowingIO,神策數據,諸葛IO等。 Growth Hacking簡單的來說就是用數據驅動的方式來指導產品的迭代改進,以實現用戶的快速增長,可以看看上面幾家數據分析公司披露的客戶就知道它有多流行了:

  • GrowingIO客戶:有贊,豆瓣,36Kr等
  • 神策數據客戶:秒拍,AcFun,愛鮮蜂,pp租車等
  • 諸葛IO客戶:Enjoy,羅輯思維等

我司的一個主要產品是面向中小診所的運營SaaS軟件,就是診所可以通過登錄網站的方式完成診所的日常工作,如完成病歷,開藥以及日常的盤點等。同時產品的推廣渠道比較多元化,包括地面銷售團隊,合作夥伴推廣以及常規的搜索引擎推廣。作為一個資源相對有限的創業公司,重點關注的就是不同渠道的用戶轉化以及產品使用情況。

因為自己之前一直在數據算法團隊,對於數據收集、處理與應用的流程比較熟悉,加上公司本身規模不大,業務也相對簡單,所以在和神策數據溝通後還是覺得自己可以嘗試基於阿里雲平台快速搭建一個公司自有的數據分析平台。

以阿里雲產品體係為例,一個典型的網站架構如下:

圖1 基於阿里雲的網站典型架構

除了雲服務之外,我們還購買了負載均衡SLB,雲數據庫RDS,雲數據庫Redis,雲監控等服務,主要是考慮是初期沒有專業的運維,而這些產品很好的解決了運維需求。

言歸正傳,主要還是介紹一下數據分析平台的搭建,下面是一個簡單的數據流程架構圖。

圖2 基於阿里雲的數據分析平台

我們以常規的七日留存率為例,來說明數據分析流程構建。

七日留存率的一個簡單計算公式如下:

七日留存率= 七天前註冊的當日活躍用戶數/ 七天前註冊的用戶數

根據不同公司業務的運營策略,有時也直接將登錄系統的用戶等價為活躍用戶,這個例子中允許定義活躍用戶的關鍵行為(以診所軟件為例,活躍用戶需要開處方、售藥等)。

一、數據收集

通常來說數據包括前端日誌和後端結構化數據兩部分。

以計算常規的七日留存率為例,活躍用戶數(必須滿足指定的使用軌跡)來自於前端服務器(Apache或者Nginx)日誌的解析。

步驟一:採用埋點的技術來記錄用戶的訪問行為:

1. URL埋點

最簡單的方法就是投放到不同推廣渠道的註冊頁在url上使用特殊的參數來標記渠道,如channel=xxx,這樣解析前端訪問日誌時就可以通過refer字段來區分渠道。

2. 點擊埋點

點擊埋點是被廣泛使用的技術,簡單的做法是在前端頁面在發送需要記錄的行為時額外發送一個後端請求,如請求一個非常小的圖片文件1.gif,文件本身沒有任何內容,主要是用於在前端日誌中產生一個記錄,同樣的,在這個請求會帶上特殊的參數,如spm=xx.xx.xx.xx,而且參數本身可以採用類似於ip的段位來構建埋點體系,如第一段表示業務,第二段表示產品,第三段表示功能,第四段表示位置等等。如圖3的淘寶網埋點示例:

圖3 淘寶網前端埋點示例

最終前端產生的日誌(以apache為例)如圖4所示:

圖4 apache日誌示例

通過URL參數和點擊埋點,我們可以就可以監控用戶在網站上的使用軌跡,以七日留存率指標為例,我們可以定義活躍用戶的行為必須包括哪些關鍵路徑,即spm埋點必須符合哪些規則。

步驟二:自動解析並同步集群機器日誌到日誌數據庫

1. 在所有ECS上安裝阿里雲logtail工具,ECS上幾個命令行搞定,如圖5所示:

圖5 logtail命令行安裝

Logtail會自動根據設定的時間間隔提交數據。

2. 創建日誌數據庫

開通日誌服務後,在日誌服務控制台創建Project(支持多個LogStore),Project下面創建LogStore(支持多個解析配置),創建配置(即解析規則),如圖6所示。

圖6 LogStore中的解析配置

這樣就完成日誌數據的結構化存儲,而計算七日留存所需的用戶註冊數據則已經以結構化的形式存儲在RDS Mysql中,下一步需要做的是定時提取LogStore和Mysql中的數據進行運算。

二、數據處理

雲端的數據處理就好像Evernote和有道云筆記一樣,可以非常方便的實現在線多人協作。阿里大數據計算平台好像也是今年9月份左右開始對外公測,之前的名稱叫做ODPS,後來改名叫做大數據計算服務(MaxCompute),雖然對於我來說都一樣拗口難懂(後面我就用ODPS來統一代指這個服務)……

現在數據處理這塊,阿里云其實是單獨開個了產品線,命名為”數加”平台,對應的服務入口並沒有集成到缺省的阿里雲控制台目錄菜單,在控制台形形色色的產品命名中並不容易定位,所以,真正用起來只能收藏夾管理入口了……

吐槽結束,數據處理包括數據同步、數據運算和運維兩個核心部分, 數據同步將LogStore和RDS Mysql數據同步到ODPS, 數據運算和運維則基於ODPS實現多人協作開發數據處理任務並進行上線管理。

進入數加控制台後,進入數據開發目錄,然後創建Project,創建後通過右邊的Project數據開發鏈接進入了一個在線的IDE(有點像雲筆記),就可以開始乾活了。

步驟一:同步LogStore和RDS Mysql數據到ODPS數據庫表

1. LogStore的數據同步

基本做法就是在IDE的數據管理模塊中創建和LogStore相同結構的ODPS表,然後回到日誌服務控制台相應的LogStore配置管理中配置一個投遞任務,這樣就可以自動同步啦。 (非常有用的是,在ODPS表中可配置一個時間分區,按天同步日誌,這樣方便的實現後面的按天調度和計算任務,也可以提升查詢效率)。

2. RDS Mysql的數據同步

這個也需要在ODPS中創建一個對應的表(字段可以比原始表少,即可以只同步部分數據),然後再IDE中配置一個同步任務就好了,如圖7所示:

圖7 數據同步任務開發

步驟二:基於ODPS數據庫表的定時任務開發

步驟一基本上完成了數據在ODPS平台上的準備,如每日的用戶行為數據和註冊數據,下面所需的就是開發定時計算任務了(如計算每天的七日留存指標),圖7上可以看出,可以使用SQL或Shell腳本開發簡單的任務,也可以開發複雜的MapReduce任務,甚至是機器學習任務,也可以用拖拽的方式配置任務的執行順序。

我們使用SQL任務就可以計算出每日的活躍用戶、註冊用戶以及留存。圖8是開發SQL任務的界面,右邊可以配置任務的執行週期和依賴,同時也支持多人編輯同一個任務。

圖8 ODPS IDE中的SQL任務編輯界面

步驟三:數據計算任務的運維

在完成開發和測試後,可以通過IDE將任務發佈到線上,如圖9所示,比較方便的是,運維工具支持補數據,譬如在搭建這個數據流程之前,我們的日誌和數據已經積累了數月,我可以補運行任務,從而得到之前數月的統計指標。

圖9 數據計算任務運維界面

個人覺得數據計算平台是阿里雲較為獨特的產品,可以實現穩定的數據計算和管理。

三、數據應用

理論上經過自行設計的數據計算和運維後,企業可根據自己的業務搭建出高度個性化的應用。這裡仍然以初創企業廣泛使用的BI報表為例,看如何實現七日留存的數據報表應用。圖10 是數加平台控制台中的BI報表製作示意圖。

圖10 阿里雲Quick BI流程示意圖

我們主要使用MaxCompute也就是ODPS計算任務產生的七日留存率數據表作為報表數據源,使用圖形化的操作工具即可實現七日流程率的展示,這種樂高積木式的操作比較簡單,就不多囉嗦了,下面是一個完成後的報表圖表,官網說可以支持以接口方式將製作的報表嵌入到第三方軟件(挺酷的,不過沒試過)。

圖11 阿里雲QuickBI 七日留存率效果圖

基本上,通過基於日誌服務的數據採集、基於ODPS的數據計算和運維、基於Quick BI的報表製作,小規模的初創工具可以在2天左右快速的搭建完一個適合業務的、可以擴展的數據分析平台(你也可以基於這個平台搭建出一個商用的推薦系統),當然,這一切的前提是你的BOSS能知道數據分析的價值。

此外,類似於神策數據的專業服務公司其實每年的年費也不貴,對於願意享受專業服務或相關技術人員比較缺乏的公司直接購買他們的服務也不失為一種較好的選擇。

What do you think?

Written by Growth Hacking

矽谷第一本增長黑客書《Growth Hacker Marketing》翻譯成中文版引入了

從矽谷小白到市場總監,我是怎樣成為一名增長黑客的