如何從0-1重構(gòu)建消息系統(tǒng):服務(wù)端

4 評論 8518 瀏覽 105 收藏 15 分鐘

編輯導(dǎo)語:當(dāng)你需要對消息系統(tǒng)進(jìn)行重構(gòu)時,如何做好服務(wù)端的搭建設(shè)計?首先,你需要明確有哪些模塊,區(qū)別于客戶端,服務(wù)端的面向?qū)ο蟆⒐δ茉O(shè)計等層面也有所不同。本篇文章里,作者梳理了從0到1重構(gòu)消息系統(tǒng)服務(wù)端的流程,一起來看一下。

在龐大的后臺系統(tǒng)中,怎么搭建消息系統(tǒng)的服務(wù)端,本文將結(jié)合上一篇《如何從0-1重構(gòu)建消息系統(tǒng):客戶端》簡單整理此次重建的流程及功能設(shè)計,希望對大家有所幫助。

在設(shè)計和搭建服務(wù)端產(chǎn)品時,與客戶端產(chǎn)品來說是具有一定的差異性,首先產(chǎn)品在目標(biāo)用戶上有明確的區(qū)分,客戶端主要是面對普通用戶,而服務(wù)端主要是公司內(nèi)部人員使用;產(chǎn)品的功能設(shè)計上,客戶端的交互設(shè)計和視覺體驗相對于要求比較高,必須滿足品牌傳播等很多要求,而客戶端要求功能流程清晰,交互簡單明確,保障前端業(yè)務(wù)正常開展,數(shù)據(jù)流程閉環(huán)等要求。

一、重構(gòu)背景

此次主要消息后臺的重構(gòu),主要需要對APP的應(yīng)用級的消息渠道:push推送、站內(nèi)信的重構(gòu)進(jìn)行業(yè)務(wù)支撐,明確優(yōu)化方向后,我們通業(yè)務(wù)側(cè)的調(diào)研得出我們要重構(gòu)的目標(biāo):

  1. 消息管理-相關(guān)權(quán)限人可在消息系統(tǒng)后臺創(chuàng)建系統(tǒng)自動觸發(fā)消息和手動推送消息,并且這些消息可以推送給APP客戶端、公眾號的渠道用戶;
  2. 整合現(xiàn)有公司業(yè)務(wù)的推送消息類型、系統(tǒng)消息推送機(jī)制、消息模版(系統(tǒng)消息模版和手推消息模版)、消息推送,并且消息管理相關(guān)權(quán)限人可以進(jìn)行管理操作;
  3. 可以滿足各種場景下的消息推送需求。

二、消息系統(tǒng)規(guī)劃

消息系統(tǒng)的重構(gòu)后,服務(wù)端主要由四大模塊構(gòu)成:

  1. 消息類型管理;
  2. 消息模版管理;
  3. 系統(tǒng)觸發(fā)管理;
  4. 手動推送管理。

設(shè)計具體方案前,我們先來分析一下消息系統(tǒng)服務(wù)端的各模塊的功能。

1. 消息類型管理

客戶端進(jìn)行重構(gòu)的重要原因之一,由于業(yè)務(wù)的增加,造成消息類型不明確,消息等級錯亂,所以我們首先對于消息中心進(jìn)行了消息類型的劃分,并采用了消息分類合并方式;所以在設(shè)計后臺功能的時候,我們設(shè)計了消息類型管理模塊了,主要作用:

  • 為客戶端的消息類型字段提供數(shù)據(jù)支撐;
  • 隨著業(yè)務(wù)的擴(kuò)展和合并,運(yùn)營可以在后臺擴(kuò)充消息類型,并且可以實現(xiàn)前后端類型的分離,方便管理;
  • 可以很好地解決業(yè)務(wù)的擴(kuò)展和合并的情況,導(dǎo)致前端技術(shù)需要重新對前端消息類型代碼再次編寫。

如策略部同事需要新增一個新業(yè)務(wù),給用戶提供市場上宏觀經(jīng)濟(jì)信息,則需要添加二級消息「市場解讀」,如果后臺沒有可配置的后臺,則需要前端或者客戶端技術(shù)在前端編寫代碼,進(jìn)行發(fā)版解決。

2. 消息模版管理

大家可以理解為一個預(yù)編的消息池,里面保存了系統(tǒng)觸發(fā)消息模版和手動推送消息模版,主要作用:

  • 完整地記錄了系統(tǒng)觸發(fā)的消息的類型、內(nèi)容等,業(yè)務(wù)同學(xué)可以在此模塊中找到在系統(tǒng)中運(yùn)行的任何一條系統(tǒng)觸發(fā)消息,不需要技術(shù)同學(xué)再去扒代碼找一條系統(tǒng)消息;
  • 方便運(yùn)營的同學(xué)在編寫手推或者自動觸發(fā)消息時,省去尋找相似類似業(yè)務(wù)的消息模版,大大節(jié)省了業(yè)務(wù)方同學(xué)在編寫消息時的效率。

需要注意系統(tǒng)觸發(fā)消息模版如果已經(jīng)在使用,則不可以隨意編輯,以免造成消息發(fā)送事故。

3. 系統(tǒng)觸發(fā)管理

先解釋一下此系統(tǒng)中什么叫做系統(tǒng)觸發(fā)消息功能,將消息發(fā)送的邏輯寫在業(yè)務(wù)流程邏輯代碼中,當(dāng)滿足條件時,觸發(fā)消息發(fā)送功能。

此模塊主要進(jìn)行系統(tǒng)觸發(fā)的關(guān)鍵機(jī)制的查看,及時地記錄每個部門或業(yè)務(wù)消息觸發(fā)機(jī)制,可以避免隨著部門和人員的業(yè)務(wù)更迭,造成觸發(fā)機(jī)制的信息無法自知的想象,方便每個部門對系統(tǒng)觸發(fā)消息及消息渠道的查看、記錄。

如運(yùn)營部門新增了直播業(yè)務(wù),我們需要對整個業(yè)務(wù)流程進(jìn)行分析,需要系統(tǒng)自動觸發(fā)的消息機(jī)制有哪些,并且推動哪種渠道,及推動的消息類型有哪些。

1)當(dāng)用戶點(diǎn)擊已預(yù)約以后,則系統(tǒng)會自動發(fā)送給用戶一條預(yù)約成功的「站內(nèi)信」,則后臺記錄觸發(fā)機(jī)制為「用戶點(diǎn)擊預(yù)約直播按鈕后」,發(fā)送的消息類型「站內(nèi)信」,消息名稱為「預(yù)約成功」提醒。

2)當(dāng)開播前15分鐘,系統(tǒng)會自動給成功預(yù)約本場直播的用戶發(fā)送直播開始的「站內(nèi)信」、「Push消息」,則后臺記錄的觸發(fā)機(jī)制為「直播開始前15分鐘,給所有預(yù)約成功用戶發(fā)送觀看開播提醒」,消息名稱為「開播提醒」。

這就是一個完整的觸發(fā)消息機(jī)制的記錄。

需要注意的是,因為系統(tǒng)觸發(fā)機(jī)制都是由技術(shù)編寫在后臺代碼中,所以我們新的業(yè)務(wù)需要增加系統(tǒng)自動觸發(fā)機(jī)制的時候,需要同步后臺技術(shù),需要技術(shù)進(jìn)行代碼實現(xiàn),才可以運(yùn)行觸發(fā)條件。

4. 手動推送管理

此模塊為手動推送消息的主要功能模塊,運(yùn)營和各業(yè)務(wù)部門的同學(xué)可以在此模塊完成消息內(nèi)容的編寫或選取,消息類型的選擇、發(fā)送渠道的配置、發(fā)送時間的選擇、消息接受人的選擇等主要推送機(jī)制的設(shè)置。

三、原型規(guī)劃

通過結(jié)合對客戶端、服務(wù)端功能的分析,我們開始對消息系統(tǒng)服務(wù)端主要模塊的功能進(jìn)行產(chǎn)品方案設(shè)計,以下筆者會一一講解主要的功能構(gòu)成。

功能結(jié)構(gòu)圖

1. 消息類型管理設(shè)計

消息類型列表

字段及功能說明

消息類型:主要對系統(tǒng)中所有消息進(jìn)行分類整理,如果業(yè)務(wù)類型層級比較復(fù)雜,則可以在某一個業(yè)務(wù)類型一級消息下,再設(shè)計二級分類;并且可以對消息類型進(jìn)行編輯,如更改消息類型名稱、增加或刪除消息類型。

需要注意的是我們在更改消息類型名稱后,需要對以往原消息類型的歷史消息進(jìn)行繼承,對已經(jīng)有歷史消息的消息類型不能進(jìn)行刪除。

2. 消息模版管理設(shè)計

手動推送消息模版列表

字段及功能說明

此模塊分為系統(tǒng)觸發(fā)消息模版管理和手動推送消息模版管理,系統(tǒng)觸發(fā)模版中含有代碼中包含的參數(shù),這個是系統(tǒng)觸發(fā)模版和手動推送模版需要做成兩個管理版塊的原因。

以手動推送消息模版列表為主要列舉對象:

  • 消息標(biāo)題:顯示消息的主標(biāo)題。
  • 消息摘要:對于消息內(nèi)容的概括,根據(jù)客戶端和渠道內(nèi)容的要求,后臺做字符、樣式、位置等限制。
  • 消息內(nèi)容:根據(jù)客戶端的要求,后臺做字符、樣式、位置等限制,如果渠道內(nèi)容類型比較多,則可以不顯示。
  • 消息類型:消息在客戶端顯示歸屬的消息類型。
  • 渠道內(nèi)容推送:顯示此條消息包含的消息渠道內(nèi)容。
  • 編輯時間:顯示最后編輯消息時間。
  • 消息編輯人:顯示最后編輯人姓名。

需要注意在操作系統(tǒng)觸發(fā)消息模版的時候,如果此條系統(tǒng)觸發(fā)模版消息已經(jīng)和系統(tǒng)觸發(fā)機(jī)制關(guān)聯(lián),則無法進(jìn)行刪除和編輯。

3. 系統(tǒng)觸發(fā)管理設(shè)計

系統(tǒng)觸發(fā)機(jī)制列表

字段及功能說明

  • 系統(tǒng)觸發(fā)機(jī)制:將消息發(fā)送的邏輯寫在業(yè)務(wù)流程邏輯代碼中,當(dāng)滿足條件時,觸發(fā)消息發(fā)送,此時的消息發(fā)送邏輯我們稱其為系統(tǒng)觸發(fā)機(jī)制,此處把代碼中的觸發(fā)機(jī)制反顯出來;
  • 系統(tǒng)觸發(fā)消息模版:系統(tǒng)消息觸發(fā)機(jī)制對應(yīng)的消息模版,消息機(jī)制可以更換消息模版。

在禁用消息機(jī)制的時候,需要提醒業(yè)務(wù)方是否取消關(guān)聯(lián)的系統(tǒng)消息模版。

4. 手動推送管理

手動推送消息列表

字段及功能說明

  • 消息標(biāo)題、消息摘要、消息內(nèi)容、消息類型、渠道內(nèi)容類型和消息模版管理一致,此處省略;
  • 推送用戶群體:此消息推送的用戶類型;
  • 用戶數(shù):推送用戶的數(shù)量;
  • 推送渠道:消息推送的具體端口及渠道;
  • 推送人:記錄最后發(fā)送此消息的人員;
  • 推送時間:消息發(fā)送的時間記錄;
  • 推送狀態(tài):分為未發(fā)送、已測試發(fā)送、已發(fā)送三種狀態(tài);當(dāng)消息未發(fā)送時,需要對消息進(jìn)行測試發(fā)送后,發(fā)送按鈕才可以被激活進(jìn)行正式發(fā)送;當(dāng)消息測試發(fā)送后,則可以進(jìn)行正式發(fā)送;當(dāng)消息發(fā)送后,可以對消息進(jìn)行引用,再次使用此條消息進(jìn)行發(fā)送。

推送機(jī)制

在消息模版管理的時候,我們已經(jīng)簡述了消息的主體部分編輯關(guān)鍵信息,在手動推送消息時,我們還需要對主體消息配置推送機(jī)制:

  • 推送渠道:設(shè)計時需要考慮業(yè)務(wù)所覆蓋的所有渠道,在此系統(tǒng)中則是需要針對此條消息的所屬渠道內(nèi)容進(jìn)行配置;
  • 推送方式:實時推送,點(diǎn)擊推送按鈕則可以發(fā)送;定時推送,可以選擇具體的日期和時間發(fā)送消息;
  • 推送用戶:全體用戶;自定義,主要針對業(yè)務(wù)方做定制化開發(fā)或手動上傳用戶信息;
  • 消息發(fā)送參數(shù):針對系統(tǒng)發(fā)送能力進(jìn)行合理優(yōu)化分配發(fā)送的機(jī)制;
  • 測試用戶:業(yè)務(wù)方對于新消息的線上測試檢查是不可缺少的環(huán)節(jié),需要配置的測試用戶可以在此設(shè)置。

四、寫在最后的話

本文作為「如何從0-1重構(gòu)建消息系統(tǒng):客戶端」的姊妹篇,簡單記錄筆者在規(guī)劃消息系統(tǒng)服務(wù)端時的一個思路。

服務(wù)端除了需要支持現(xiàn)在運(yùn)行的客戶端功能數(shù)據(jù)展示和數(shù)據(jù)流轉(zhuǎn),還需要對未來客戶端業(yè)務(wù)功能擴(kuò)容做研判,這樣才能更好地支持客戶端的用戶體驗和數(shù)據(jù)流轉(zhuǎn),提高開發(fā)效率。

以上就是筆者0-1重構(gòu)消息系統(tǒng)的全部記錄,希望對觀看此文的諸位有所幫助和借鑒,如有不同意見,歡迎下方留言交流!

 

本文由@大大大大大浪 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 私聊,求原型

    來自河南 回復(fù)
  2. 你好,想請問下系統(tǒng)觸發(fā)消息機(jī)制如何設(shè)置,就是系統(tǒng)觸發(fā)機(jī)制的詳情

    來自湖南 回復(fù)
  3. 學(xué)校

    回復(fù)
    1. 同學(xué)你好!多多交流

      來自北京 回復(fù)