前言
經過了幾個月的努力,初步建立了營銷平台,也承載了幾個營銷活動。但是也存在規劃工作不充分,
代碼層面要求未規範,導緻後續的營銷活動策劃,設計,管理,開發出現了一系列的問題,包括不能快速疊代接入
新的營銷活動,不能及時響應營運和市場的節奏
一期應用搭建完成接入第一個活動之後,對于規範這塊要求松懈,同時由于多個項目時間排期周期趕,
多人撸代碼風格不一緻,導緻了一系列的技術債。所謂就是先污染後治理,經過這樣的經驗教訓之後,也總結
了幾點避免類似的情況再度發生:
1.承擔應用OWNER職責,制定應用開發規範,對于包規範和通用概念先行制定好規則
2.架構評審和代碼REVIEW要抓牢
目标
營銷活動業務的難點
(一) 活動開發的複雜性
- 開發一個活動本身需要一定的工作量。尤其是大型的推廣活動,這類型的活動對功能和性能的要求比較高
- 活動功能衆多,包括新人注冊,邀請分享,紅包,砍價,支付等,這些不同的參與和表現形式,也會涉及更多的後端接口通信和聯調
- 還有一個非常重要的問題,就是活動營運的安全和可靠性。因為,我們的活動,大多涉及金額,對安全風控要求很高。
(2)開發成本
- 傳統手工開發模式,普通活動也需要1周的開發周期,而典型大型活動更是需要3-4周開發周期,開發和測試工作量繁重
- 後續如果針對節假日某些爆點營銷,時間要求更緊張
希望解決的問題
- 元件化,産品子產品解耦
- 擴充性不夠強,對于不同形式的營銷活動相容性不夠
- 建設高效活動開發模式,建構一套開發規範
- 保證營銷活動的安全
- 代碼規範,類屬性命名統一化,包命名規範化,異常管理,日志規範化列印
準備做
- 規範營銷體系架構,清晰每個産品再營銷體系中的定位與關系
- 在設計新的營銷活動運作和管理平台時,充分考慮各種營銷活動的共性,在同一活動流程,明确活動要素的前提性,盡可能實作營銷活動的配置化開發和管理。減少營銷活動的開發成本,快速響應市場營運的各種活動需求
活動平台架構介紹
建構高效活動營運開發模式
1.元件化
分層、複用、簡化,做到活動功能元件配置組合使用
- 統一路由元件:請求路由分發,全局異常捕獲,日志列印
- 配置活動解析引擎:不同類型的活動配置組裝,關聯規則集合和動作集合
- 安全中心:風險控制,黑白名單
- 規則引擎:規則執行檢驗器
- 背景管理:營運活動設定
- Rule條件集合:管道狀态規則,活動時間規則,活動狀态規則,活動人群規則,參與次數規則等等
- Action動作集合:發放紅包,記錄參與記錄,通知使用者等等
- 獎勵元件:紅包發放
- 通知元件:PUSH通知,短信提醒等等觸達方式
- 統計元件:資料埋點,活動效果
- util:工具
2.核心UML圖
核心類介紹
- ActivityRequest:活動請求對象,所有的活動請求類都需要實作該接口
- ActivityResponse:活動響應對象,所有活動響應對象都需要實作該接口
- ActivityDTO:活動資料傳輸對象,包括活動配置,以及一些中間處理傳輸資料,每個活動都需要定義各自的DTO,實作該接口
- CommonFactory:bean工廠,内部類Container作為Bean容器,存放活動相關的處理類。
- ActivityDispatch:活動路由分發,統一的路由服務,請求主入口
- IActivityDTOParser:ActivityDTO的解析器,主要完成DTO的組裝
- IActivityHandler:活動處理器,根據不同的FunctionCode自行定義内部方法,對應不同的FunctionCode可以派生多個子類,子類内部可以抽象定義一套模闆方法,具體交由各個活動自行實作
- IActivityResponseParser:活動響應對象解析器,主要完成Response的組裝
FunctionCode 抽象流程
ACTIVITY_PARTICIPATE
對于後續可能擴充的功能,定義好一個FunctionCode,分析功能抽象出對應的模闆方法,交由子類具體實作
3.服務治理
3.1 dubbo
- sentines接入:不被别人搞死
- 叢集容錯
- 設定調用逾時時間
3.2 解耦,減少系統依賴的服務
- 減少跟其它分布式應用的依賴
3.3 業務降級
- 核心業務鍊路調用非核心服務,try catch降級,設定逾時傳回,轉化為異步處理
3.4 監控告警
- kibana
- 日志監控(郵件、短信)
- 分布式鍊路追蹤
- falcon
- zabbix
後期規劃
1、設計一套日志埋點元件,專門用于活動埋點統計
2、産品層面上活動營運配置化,管理背景設計,支援組合搭配,快速響應營運需求
3、安全中心建設,支援多種風控規則
有興趣的同學可以直接去github上面下載下傳源碼哦,https://github.com/caisl/activity-platform.git