
看到周圍朋友陸續(xù)寫文章,難免有些手癢,但是這段時間看的東西有點雜,就隨意發(fā)表點自己的看法吧。
前端埋點和后端埋點
個人覺得前后端埋點主要有這樣幾個差異:
1.前端埋點,收集數(shù)據(jù)在客戶端進(jìn)行,意味著可以收集更多view端的數(shù)據(jù),如用戶事件行為,界面變化等。后端埋點,收集數(shù)據(jù)在服務(wù)器端進(jìn)行,意味著收集的是http request發(fā)生時的數(shù)據(jù),獲取到更多的是數(shù)據(jù)層,業(yè)務(wù)邏輯層,比如數(shù)據(jù)交互等。當(dāng)然也取決于架構(gòu),前端mv*+后端RESTful API;與前端html模板 + 后端MVC,兩種架構(gòu)在前后端能夠獲得的數(shù)據(jù)差異也很大
2.反作弊,兩種數(shù)據(jù)收集方式都有可能發(fā)生spam,但是后端埋點產(chǎn)生spam,則需要實實在在發(fā)生請求到服務(wù)器;而前端所有界面上的數(shù)據(jù)都可以更改,并且,可以直接調(diào)用數(shù)據(jù)傳輸接口來產(chǎn)生假數(shù)據(jù)
3.爬蟲數(shù)據(jù),web的前端埋點基本使用JS,目前爬蟲雖然可以能模擬用戶真實請求,執(zhí)行JS,但大部分爬蟲并不執(zhí)行JS,因此前端埋點不一定包含爬蟲產(chǎn)生數(shù)據(jù),但后端埋點,一定會包含爬蟲產(chǎn)生數(shù)據(jù)。
4.數(shù)據(jù)暫存與性能開銷,通常,數(shù)據(jù)收集之后并非立即發(fā)送到數(shù)據(jù)服務(wù)器,而是會暫存起來,并在請求頁面/view,或者一段時間后,或者網(wǎng)絡(luò)狀態(tài)良好時一起發(fā)送到數(shù)據(jù)服務(wù)器。前端埋點,數(shù)據(jù)發(fā)送到數(shù)據(jù)服務(wù)器之前都是存在用戶的設(shè)備端,比如cookie,localStorage里,而后端埋點,大部分情況都是存在服務(wù)器的內(nèi)存中。同樣,運行數(shù)據(jù)收集程序的性能開銷,前端埋點由用戶設(shè)備承擔(dān),后端則由服務(wù)器承擔(dān)(注意,相比前端,后端更需要注重性能)
5.用戶/訪問識別,前端埋點,web主要使用cookie/localstorage里存放的用戶信息,APP使用設(shè)備標(biāo)識符來識別是否同一個用戶,但是cookie和設(shè)備標(biāo)識符可被清空/修改/重置。如果沒有儲存用戶ID,則使用多個設(shè)備的同一個用戶無法被關(guān)聯(lián)。并且在web前端,跨域尤其是跨頂級域共享cookie非常麻煩,識別同一用戶準(zhǔn)確度較低。后端埋點,識別跨服務(wù)器的同次訪問可共享session,識別同一個用戶可以使用IP地址+UA拼成的fingerprint(這種方法不能跨設(shè)備),用戶登陸后使用用戶ID進(jìn)行關(guān)聯(lián)(此方法可跨設(shè)備,且準(zhǔn)確度較高)
埋點與無埋點
通過看到知乎里幾個WA工具的CEO的文章和問答,以及iCDO/WAW/CWA的founder 宋星的文章『無埋點實現(xiàn)監(jiān)測的真相——革新還是噱頭?』我對埋點與無埋點認(rèn)識是這樣:
1.我們常說的埋點或無埋點,基本兩者都是指前端添加代碼
2.埋點和無埋點,都需要添加基礎(chǔ)代碼/SDK,只不過,以埋點方式的基礎(chǔ)代碼/SDK主要用來采集訪問數(shù)據(jù),把采集好的數(shù)據(jù)做預(yù)處理,按照一定格式發(fā)送到數(shù)據(jù)服務(wù)器,對于一些特定事件追蹤接口調(diào)用則不在基礎(chǔ)代碼范圍之內(nèi);而無埋點,則從事件監(jiān)聽,到事件數(shù)據(jù),訪問數(shù)據(jù)采集,到預(yù)處理,再到發(fā)送,全部都由基礎(chǔ)代碼完成。
3.埋點方式,在數(shù)據(jù)收集前,選擇需要采集的數(shù)據(jù),除了基礎(chǔ)代碼/SDK,還需要在特定位置添加特定代碼,以獲取所需額外數(shù)據(jù),以追蹤更多用戶行為,訪問事件等;無埋點在數(shù)據(jù)收集之后,再圈選需要的數(shù)據(jù),除了基礎(chǔ)代碼/SDK,不需要添加額外代碼(APP端最多還需要再代碼里創(chuàng)建一個數(shù)據(jù)追蹤對象實例,可以理解為初始化),因此用無埋點的方式,如果發(fā)現(xiàn)數(shù)據(jù)圈選的不合適,不需要再動代碼,不必走產(chǎn)品發(fā)布流程,修改較方便
4.埋點方式能夠獲取到的數(shù)據(jù),比無埋點方式獲取到的數(shù)據(jù)多:以web端為例,無論是dom上的事件(如點擊,拖拽,鍵盤事件等),還是bom上的事件(如搖一搖,橫豎屏切換等重力感應(yīng)事件),數(shù)據(jù)交互,dom變化,都可以以埋點的方式追蹤到;而無埋點,主要獲取1)綁定了事件的dom對象,2)事件發(fā)生時傳遞的event對象(以及其所有屬性),也就是僅在dom上綁定的事件,所以無埋點獲取的數(shù)據(jù)范圍要小一些
綜上
無論前端埋點還是后端埋點,無論是埋點還是無埋點,并無優(yōu)劣,只是特性不同,因此使用場景也會不一樣。具體還需要綜合企業(yè)資源,技術(shù)架構(gòu),產(chǎn)品特性等多方面考慮。