項(xiàng)目背景
來到我司的時(shí)候,雖然是一家在線教育行業(yè),但基本沒有互聯(lián)網(wǎng)的基因遭贸,剛剛開始做數(shù)據(jù)埋點(diǎn)的工作。而且只是聚焦在上課教室內(nèi)的核心指標(biāo)埋點(diǎn)心软。當(dāng)時(shí)對(duì)埋點(diǎn)這件事壕吹,有了一個(gè)基礎(chǔ)的技術(shù)框架,也有了一個(gè)比較簡(jiǎn)陋的流程删铃。但存在以下問題:
1需求環(huán)節(jié):寫prd的時(shí)候也比較繁瑣耳贬,一個(gè)事件有時(shí)候上報(bào)字段多大20個(gè)。內(nèi)容多了很容易出錯(cuò)猎唁。經(jīng)常會(huì)范的錯(cuò)誤:漏埋點(diǎn)效拭,埋點(diǎn)關(guān)鍵字錯(cuò)誤,上報(bào)字段值不明確等胖秒;
2.開發(fā)環(huán)節(jié):僅定義了數(shù)據(jù)上報(bào)的API接口格式缎患,但各端SDK規(guī)范沒有統(tǒng)一(比如上報(bào)操作系統(tǒng)是;有些端上報(bào)IOS,有些上報(bào)ios阎肝;有些端開發(fā)者打錯(cuò)上報(bào)關(guān)鍵字挤渔,如device打錯(cuò)成devcie,上報(bào)值使用全角輸入法风题,時(shí)間戳未按照規(guī)范上報(bào)成毫秒判导。);
3.測(cè)試環(huán)節(jié):測(cè)試環(huán)節(jié)比較耗時(shí)耗力沛硅,除了要測(cè)試觸發(fā)場(chǎng)景是否有投遞數(shù)據(jù)眼刃,也需要檢查數(shù)據(jù)質(zhì)量,數(shù)據(jù)是否符合要求摇肌;而數(shù)據(jù)質(zhì)量測(cè)試未得到重視擂红,很多錯(cuò)誤在測(cè)試環(huán)節(jié)都沒有測(cè)試出來(比如有些字段數(shù)據(jù)為空)。
解決方案
為了優(yōu)化埋點(diǎn)工作围小,圍繞著前面提到的痛點(diǎn)昵骤,我們了一套解決方案-三駕馬車:1埋點(diǎn)模型(SDK);2埋點(diǎn)管理平臺(tái)肯适;3埋點(diǎn)流程变秦。一切都是為了減低埋點(diǎn)的門檻,提高埋點(diǎn)的效率
1.埋點(diǎn)模型
埋點(diǎn)模型采用Protobuf數(shù)據(jù)格式上報(bào)框舔,并封裝成統(tǒng)一埋點(diǎn)SDK蹦玫,一方面:定義枚舉值赎婚,解決上報(bào)值和關(guān)鍵字不規(guī)范的問題。另一方面:上報(bào)的信息進(jìn)行歸類樱溉,簡(jiǎn)潔明了挣输。 我們定義了三種數(shù)據(jù)結(jié)構(gòu)。
具體每個(gè)類的數(shù)據(jù)結(jié)構(gòu)如下:
message BaseInfo {
//系統(tǒng)上報(bào)時(shí)間戳-毫秒(由銀河服務(wù)端生成)
int64 sysTime = 1;
//客戶端上報(bào)時(shí)間戳-毫秒
int64 time = 2;
//會(huì)話Id饺窿,一段會(huì)話的唯一標(biāo)識(shí)(客戶端每次啟動(dòng)APP到下一次啟動(dòng)APP之間生成一個(gè)會(huì)話id)
//生成規(guī)則:16位隨機(jī)數(shù)+13位時(shí)間戳+3位(端表示pc:001 android:002 ios:003 web:004 server:005)
string sessionId = 3;
//設(shè)備唯一標(biāo)識(shí)
string uuid = 4;
//公司標(biāo)識(shí)
Company company = 5;
//sdk版本
SDKVersion sdkVersion = 6;
//用戶ID
string userId = 7;
//用戶類型
UserType userType = 8;
//日志類型
LogType type = 9;
string eventId = 10;//事件ID (產(chǎn)品經(jīng)理提供)
NetType netType = 11;//網(wǎng)絡(luò)類型
OperatorType operatorType = 12;//網(wǎng)絡(luò)運(yùn)營(yíng)商類型
int32 requestCnt = 13;//接口請(qǐng)求次數(shù)歧焦,默認(rèn)為1
string business = 14;//業(yè)務(wù)類型 (產(chǎn)品經(jīng)理提供)
//來源:安卓移斩、iOS肚医、pc、web向瓷、server
Os os = 15;
string channel = 16; // 渠道來源(針對(duì)前端的落地頁url編碼肠套,H5商城的來源渠道)
//APP版本號(hào)
string appVersion = 17;
//APP類型:yimi/bubugao/yuxuepai
string appType = 18;
//設(shè)備型號(hào),標(biāo)示手機(jī)品牌+型號(hào)
string deviceInfo = 19;
//設(shè)備操作系統(tǒng)版本號(hào)
string osVersion = 20;
AppAction appAction = 21;
//信息,崩潰信息
string info = 22;
int64 stayTime = 23; //頁面停留時(shí)間
}
教室內(nèi)信息
message LiveInfo {
//課程id
string lessonId = 1;
//課程類型
LessonType lessonType = 2;
//服務(wù)器IP
string serverIp = 3;
//用戶ip
string userIp = 4;
}
其他信息
message ExtraInfo {
//額外字段key
string key = 1;
//額外字段value
string value = 2;
}
2.埋點(diǎn)管理平臺(tái)
管理工具的目的有
1).是為了解決產(chǎn)品經(jīng)理產(chǎn)出需求時(shí)容易犯的問題(漏埋點(diǎn)猖任,埋點(diǎn)關(guān)鍵字錯(cuò)誤你稚,上報(bào)字段值不明確);
2).作為埋點(diǎn)元數(shù)據(jù)朱躺,用于管理已有埋點(diǎn)刁赖,同時(shí)后期基于埋點(diǎn)元數(shù)據(jù)的擴(kuò)展應(yīng)用包括埋點(diǎn)自動(dòng)測(cè)試、事件分析模型长搀。
3).同時(shí)作為產(chǎn)品的PRD文檔宇弛,給到開發(fā)/測(cè)試使用。
圍繞這兩個(gè)目的源请,我們?cè)O(shè)計(jì)的埋點(diǎn)管理由兩個(gè)模塊構(gòu)成:事件屬性管理+元事件管理枪芒。
A.事件屬性管理:建立前面的埋點(diǎn)模型的基礎(chǔ)上的。我們可以增/刪/改/查事件屬性谁尸,事件屬性的字段維度除了常規(guī)信息舅踪,關(guān)鍵還有一個(gè)埋點(diǎn)類型(base/live/extra)。事件屬性的新增由數(shù)據(jù)產(chǎn)品管理良蛮,這樣能對(duì)公司所有的埋點(diǎn)字段規(guī)范從源頭上有所控制(包括字段的數(shù)據(jù)類型抽碌,字段的取值范圍)
B.元事件管理:實(shí)現(xiàn)事件的增/改/查。產(chǎn)品經(jīng)理只需要對(duì)一個(gè)事件的屬性做勾選决瞳,包括(業(yè)務(wù)線咬展,上報(bào)端,事件類型瞒斩,事件名稱破婆,任務(wù)編號(hào)),就可以自動(dòng)生成必須要上報(bào)的預(yù)置字段屬性(基于【上報(bào)端】+【事件類型】匹配事件屬性)胸囱。而另外如果有其他要上報(bào)的字段祷舀,再單獨(dú)勾選。這樣非常快捷傻瓜裳扯,且基本不會(huì)出現(xiàn)操作失誤抛丽。
3.埋點(diǎn)流程
最開始的數(shù)據(jù)埋點(diǎn),基本就是數(shù)據(jù)產(chǎn)品經(jīng)理作為公司唯一個(gè)出口饰豺,設(shè)計(jì)并發(fā)起所有的數(shù)據(jù)埋點(diǎn)需求亿鲜;這樣做的好處是有一個(gè)人統(tǒng)籌埋點(diǎn)的發(fā)起和應(yīng)用。但是缺點(diǎn)非常明顯冤吨,業(yè)務(wù)線那么多蒿柳,一個(gè)人根本不可能管得過來。而且也只有業(yè)務(wù)產(chǎn)品經(jīng)理漩蟆,知道哪些要做埋點(diǎn)垒探,怎么埋點(diǎn)。所以新流程中埋點(diǎn)由業(yè)務(wù)產(chǎn)品經(jīng)理自己發(fā)起怠李,數(shù)據(jù)產(chǎn)品只是設(shè)計(jì)工具和做技術(shù)指導(dǎo)圾叼。
1:埋點(diǎn)由業(yè)務(wù)線產(chǎn)品經(jīng)理發(fā)起,在埋點(diǎn)管理平臺(tái)上完成埋點(diǎn)錄入捺癞;
2:為了保證字段的規(guī)范統(tǒng)一夷蚊,需要新增的字段統(tǒng)一由數(shù)據(jù)產(chǎn)品添加;
3:通過埋點(diǎn)事件的任務(wù)編號(hào)髓介,產(chǎn)品惕鼓,開發(fā),測(cè)試串聯(lián)起來版保;
可優(yōu)化點(diǎn)
后續(xù)埋點(diǎn)元數(shù)據(jù)基礎(chǔ)上急需擴(kuò)展出一個(gè)埋點(diǎn)自動(dòng)測(cè)試平臺(tái)呜笑,這樣才能進(jìn)一步提到埋點(diǎn)質(zhì)量;