最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

團(tuán)隊技術(shù)專家回老家了,留下的技術(shù)設(shè)計模板真好用!

2023-06-26 23:47 作者:沒有名字如何行走江湖  | 我要投稿

大家好,我是老三,轉(zhuǎn)眼間,團(tuán)隊的技術(shù)專家B哥,已經(jīng)離職一年了,我還時不時會想起他,因為他留下的j技術(shù)設(shè)計模版,我覺得真的很好用,基本上涵蓋了設(shè)計需要考慮的方方面面。接下來,以一個CRM項目的用戶觸達(dá)模塊為例,給大家分享一下。

一、CRM_技術(shù)設(shè)計文檔_消息觸達(dá)模塊

項目名稱CRM系統(tǒng)項目負(fù)責(zé)人三分惡模塊名稱用戶觸達(dá)模塊模塊負(fù)責(zé)人三分惡

老三說:第一部分主要說明項目或者模塊的概況,這一部分雖然不太重要,但是是必須的。

二、修訂記錄

版本修訂人修訂內(nèi)容修訂日期V1.0三分惡創(chuàng)建2022-12-23

老三說:技術(shù)設(shè)計不是一成不變的,經(jīng)常會隨著業(yè)務(wù)的變化,或者根據(jù)遇到的一些問題,進(jìn)行完善和優(yōu)化,但是每一個版本,都應(yīng)該留下記錄和備份。

三、需求/背景

產(chǎn)品文檔:xxxx

為了實現(xiàn)用戶的精細(xì)化運(yùn)營,通過多種途徑,向用戶發(fā)送消息通知……

老三說:這一部分就是結(jié)合產(chǎn)品文檔,把需求/背景簡單提煉一下,必須,但不是重點。

四、設(shè)計目標(biāo)

老三說:設(shè)計目標(biāo)一般分為兩部分:

  • 實現(xiàn)功能:這一部分就是就是分析需求,把產(chǎn)品文檔里的東西,拆解成一個個的功能,也就是CRUD。

  • 設(shè)計指標(biāo):CRUD也有區(qū)別,一把梭,隨便寫也能實現(xiàn)功能,但是我們CRUD也得有點追求,而且面向C端用戶的系統(tǒng),也基本上會有一些性能、可用性之類的要求,比如接口響應(yīng)平均多少多少毫秒以下、單機(jī)QPS1000、系統(tǒng)幾個9可用……

4.1.實現(xiàn)功能

  1. 多種渠道給用戶推送消息,主要包含站內(nèi)和站外兩大部分:

  • 站內(nèi):

    • 站內(nèi)信

    • 彈屏

  • 站外:

    • 郵件

    • 短信

    • push

    • 微信

    • ……

  1. 觸達(dá)任務(wù)管理

  • 支持定時/延時消息發(fā)送

  • 支持觸發(fā)型消息發(fā)送

  • 支持用戶分群發(fā)送

……

老三說:功能點比較多的話,這一部分還可以用思維導(dǎo)圖的形式來整理。

老三說:這一部分評審的時候一定要拉上產(chǎn)品經(jīng)理或者相關(guān)的業(yè)務(wù)方,確定功能點沒有錯漏。

4.2.設(shè)計指標(biāo)

  1. 性能要求

  • 百萬級消息分鐘級發(fā)送完成

  • xx接口,性能指標(biāo):單機(jī)1000并發(fā),95%響應(yīng)<=200ms

……

老三說:一般C端的服務(wù)都是有比較嚴(yán)格的性能要求的,畢竟如果系統(tǒng)響應(yīng)慢的話,用戶的流失率就會變高。當(dāng)然,用戶觸達(dá),其實主要在于推,用戶主動查會少一些,消息的推送通常也會要求速度,比如,有個網(wǎng)紅,九點鐘要在app上直播,直播開始的時候,要做一個推送,那就要求盡可能快地把消息推送給每個用戶,不能說等到十二點直播完了,有的用戶才收到消息。

  1. 可用性

  • 觸達(dá)模塊99.9%可用

  • 消息推送成功率80%以上

……

老三說:C端系統(tǒng)的可用性比較重要,畢竟掛一會,影響的用戶可能都是以萬計,所以,設(shè)計的時候,也要考慮可用性,分析系統(tǒng)的瓶頸在哪里,流量突然上來,哪里可能頂不住,是要擴(kuò)容,還是要限流、熔斷降級……

  1. 擴(kuò)展性

  • 采用策略模式+配置,新增消息渠道,只需少量代碼+代碼即可實現(xiàn)

  • 引入規(guī)則引擎,同一消息類型的不同渠道,可以通過規(guī)則調(diào)整,無需發(fā)版

……

老三說:這一部分也是設(shè)計中應(yīng)當(dāng)考慮的,不能一味求快,否則很容易堆屎山。

  1. 兼容性

  • 接口xxx向前兼容app 1.9.0版本,低版本需強(qiáng)制更新

……

老三說:C端系統(tǒng)的開發(fā),有時候比較麻的是低版本app的兼容,盡可能早期設(shè)計的時候,就考慮可能的擴(kuò)展,如果實在沒法兼容,那就只能app強(qiáng)制更新,當(dāng)然這種用戶體驗就非常不好了。

  1. 可觀測性

  • 接入Prometheus和Grafana,對服務(wù)和業(yè)務(wù)進(jìn)行監(jiān)控

    • 服務(wù)監(jiān)控:通過控制面板觀察服務(wù)的內(nèi)存、CPU、JVM、接口QPS、接口RT……

    • 業(yè)務(wù)監(jiān)控:通過埋點上報,收集用戶觸達(dá)數(shù)據(jù),通過面板可以分設(shè)備、渠道查看用戶觸達(dá)成功率……

老三說:這一部分也很重要,我們一般上班的第一件事,就是看監(jiān)控面板,分析有沒有什么異常的地方。服務(wù)的可觀測性,一般公司都是用一些開源的或者付費(fèi)的監(jiān)控平臺,大廠一般都會自研監(jiān)控平臺。服務(wù)的監(jiān)控很多是通過插樁來實現(xiàn),業(yè)務(wù)的監(jiān)控一般都需要打埋點。

  1. 告警

  • 通過PrometheusAlert實現(xiàn)服務(wù)的告警,告警信息分級別,進(jìn)行飛書通知、電話通知,告警類型分為服務(wù)告警和業(yè)務(wù)告警

    • 服務(wù)告警:內(nèi)存、CPU占用過高,接口QPS過多,接口RT過長,觸發(fā)告警

    • 業(yè)務(wù)告警:用戶觸達(dá)成功率過低告警

老三說:告警通常也是和監(jiān)控在一起的,畢竟開發(fā)人員也不可能二十四小時盯著告警,一般開源的、付費(fèi)的、自建的監(jiān)控系統(tǒng),都支持配置告警規(guī)則,并通過不同的方式,郵件、短信、電話之類的渠道進(jìn)行通知。

五、概要設(shè)計

老三說:概要設(shè)計,就是做個大概的系統(tǒng)整體設(shè)計。

5.1.設(shè)計思路

  • 數(shù)百萬消息段時間發(fā)送完成,流量較大,對數(shù)據(jù)存儲性能要求較高,需要選用高性能DB,對存儲壓力也比較大,同時需要一定削峰處理

  • 定時/延時消息發(fā)送采用消息隊列實現(xiàn),對MQ的消費(fèi)要求較高,并發(fā)度要高,批量消費(fèi)

  • ……

老三說:這一部分主要是梳理一下整體的開發(fā)設(shè)計思路,把一些零散的想法梳理成點或者面,前期大家的討論可以整理在這里。

5.2.技術(shù)選型

  • 存儲:TiDB

  • 緩存:Redis

  • 消息隊列:業(yè)務(wù)RocketMQ,埋點Kafka

  • 注冊中心:Nacos

  • 配置中心:Nacos

  • RPC:Dubbo

  • 網(wǎng)關(guān):Gateway

  • Push通道:自建

……

老三說:這一部分就是大概定一下技術(shù)選型,其實要是整個項目做好了選型,這一部分也可以不做,一般需要高級技術(shù)人員或者架構(gòu)師,來整體地進(jìn)行把握,當(dāng)然,很多時候選型也沒好選的,基本就是主流的那些,而且一般一個團(tuán)隊,都是統(tǒng)一的技術(shù)選型,方便維護(hù)。

5.3.業(yè)務(wù)架構(gòu)

老三說:這一部分就是大概對功能分分層,分分塊,把大概的功能切一切。

5.4.技術(shù)架構(gòu)

老三說:技術(shù)選型+業(yè)務(wù)架構(gòu),其實一個大概的技術(shù)架構(gòu)就出來了。

老三說:技術(shù)架構(gòu)圖類型,其實也沒有特別固定的形式,主要是圖能達(dá)意,我這個圖是通過draw.io畫的,還有一些其它的還用的工具,比如大家應(yīng)該都聽過“PPT架構(gòu)師”,用PPT畫也是可以的。當(dāng)然這個圖是我隨手畫的。

5.5.系統(tǒng)環(huán)境

  • JDK版本:11

  • 部署環(huán)境:k8s+Containerd,單pod8核CPU+4G內(nèi)存,服務(wù)集群32個pod

  • 數(shù)據(jù)庫:

    • 業(yè)務(wù)數(shù)據(jù):TiDB 64核CPU+128G內(nèi)存

    • 離線數(shù)據(jù):Hbase……

  • ……

老三說:如果是項目初建,一般還需要對系統(tǒng)的環(huán)境進(jìn)行評估,根據(jù)技術(shù)選型、數(shù)據(jù)容量、系統(tǒng)QPS等等,來選擇系統(tǒng)的環(huán)境,這一部分一般評審的時候會拉上運(yùn)維同學(xué),提前確定好系統(tǒng)環(huán)境,和運(yùn)維同學(xué)對齊需求和排期。

六、詳細(xì)設(shè)計

老三說:詳細(xì)設(shè)計,就是具體指導(dǎo)開發(fā)的設(shè)計部分了,包括流程啊、數(shù)據(jù)模型啊、具體用到的算法、和客戶端的接口,等等,這一部分很重要,如果沒做好,沒對齊,那么搞不好就要返工,耽誤進(jìn)度。

6.1.流程設(shè)計

  • push流程

老三說:用戶觸達(dá),業(yè)務(wù)流程基本比較簡單,對于一些交易類的,比如支付,或者B端的系統(tǒng),比如ERP,在開始開發(fā)之前,流程一定要梳理清楚,一般通過流程圖、時序圖來描述業(yè)務(wù)流程。給大家看一下我之前對接alipay畫的簡單的時序圖:

6.2.算法設(shè)計

  • 渠道分流:同一消息類型,多種渠道,支持按比例分流,采用加權(quán)隨機(jī)算法實現(xiàn)

  • ……

老三說:算法設(shè)置不一定數(shù)據(jù)結(jié)構(gòu)相關(guān)的算法,代碼里的一些涉及到一些需要進(jìn)行邏輯計算的,都可以稱之為算法,這一部分也可以先梳理一下。

6.3.數(shù)據(jù)模型設(shè)計

  • crm_user_toutch_tash:用戶觸達(dá)任務(wù)表

字段描述數(shù)據(jù)類型id主鍵biginttask_no任務(wù)編號bigintcomment描述varchar……

老三說:數(shù)據(jù)模型設(shè)計非常重要,可以說是系統(tǒng)設(shè)計的根基,如果沒有設(shè)計好,開發(fā)和維護(hù)起來真的很痛苦,每個公司應(yīng)該都有一定的數(shù)據(jù)庫設(shè)計規(guī)范,基本就是結(jié)合業(yè)務(wù)和規(guī)范來設(shè)計了。

具體用什么工具設(shè)計呢?業(yè)務(wù)比較簡單的C端系統(tǒng),其實直接拿表格也行,之前也試過PdMan,還行吧。

6.4.接口設(shè)計

接口名稱添加支付任務(wù)接口文檔地址yapi.com/xxx入?yún)⑷雲(yún)⒚枋鯿omment:任務(wù)描述出參出參描

老三說:這一部分也是重量級,但凡涉及到客戶端,或者其它服務(wù)的,這一部分都少不了,一般可以通過YApai之類的接口工具,但是建議大家還是在文檔里做個重復(fù)工作,把入?yún)⒊鰠⒅惖拿枋鲆幌拢行┑胤綐?biāo)標(biāo)重點,因為有些人真的不怎么會看文檔。

接口設(shè)計的時候一定要和相關(guān)的同學(xué)對齊,不要怕花時間,后期改接口,是一件很痛苦的事情。

6.5.異常處理

  • 系統(tǒng)中的不確定異常,進(jìn)行統(tǒng)一處理,響應(yīng)“Network Error”

  • 埋點異步發(fā)送,不影響主要功能

  • ……

老三說:異常處理也是需要考慮的地方,哪些異??梢酝痰艚导墸男]法處理,怎么給客戶端展示,怎么打日志,都需要考慮。

七、風(fēng)險評估

老三說:其實每一次上線都伴隨著風(fēng)險,從設(shè)計,一直到上線之前,都要對存在的風(fēng)險進(jìn)行評估,上線了要重點觀察風(fēng)險點,也要提前設(shè)計好回滾或者處理方案,一旦發(fā)現(xiàn)不對勁,及時回滾和處理。

7.1.已知風(fēng)險

  • 對數(shù)據(jù)相關(guān)服務(wù)壓力較大,用戶分群、用戶畫像等數(shù)據(jù)服務(wù)崩潰風(fēng)險

  • MQ存在堆積風(fēng)險,導(dǎo)致用戶收到消息延遲

  • QPS較高,數(shù)據(jù)庫CPU飆升風(fēng)險

  • ……

7.2.可能風(fēng)險

  • 場景類消息延遲,可能會影響交易相關(guān)流程,拉低轉(zhuǎn)化率和成交率

……

八、測試建議

老三說:需求評審階段、設(shè)計評審階段,最好都拉上測試同學(xué),測試同學(xué)要對整體的功能,還有性能,都有比較清楚的了解。但是啊,如果只看功能的話,可能就是表面的點點點,具體實現(xiàn)邏輯,還是開發(fā)比較清楚,所以說給測試同學(xué)提一些測試建議,給測試的測試用例提供參考。

同時,我個人覺得,從測試的角度進(jìn)行思考,也能有效減少寫代碼的bug。

8.1.功能測試

功能測試步驟預(yù)期結(jié)果定時消息發(fā)送創(chuàng)建定時消息消息定時發(fā)送……

老三說:這一部分基本就是結(jié)合設(shè)計目標(biāo)的實現(xiàn)功能,列一下測試步驟和預(yù)期結(jié)果

8.2.性能測試

  • xxx接口壓測,預(yù)估單機(jī)QPS1000

這一部分基本就是壓測了,很多時候,系統(tǒng)的壓測沒那么簡單,尤其是鏈路長的時候,壓一次都得興師動眾。

九、上線準(zhǔn)備

  • 運(yùn)維搭建環(huán)境

  • 數(shù)據(jù)初始化

  • 添加配置

  • 消息隊列創(chuàng)建

  • 依賴服務(wù)上線

  • 服務(wù)上線

老三說:這一部分算是上線的備忘吧,有些wiki類的工具,支持在文檔里建任務(wù),把上線前需要做的事情列出來,有不知道你經(jīng)歷過“測試環(huán)境猛如虎,上線一看原地杵”沒?可能就是上線準(zhǔn)備沒做好,缺了什么,少了什么。

十、評審及意見

評審意見提出人提出日期解決意見解決人解決日期xxx接口需要考慮一下兼容性,建議xx字段,從object改為list老六2023年1月1日修改字段類型老三2023年1月1日……

老三說:設(shè)計文檔不是寫完,啪,丟出去就完事了,還要上設(shè)計評審會,評審的時候,通常相關(guān)同學(xué)會提出一些評審意見,這些都應(yīng)該記錄下來,解決完了之后,再次評審,直到評審?fù)ㄟ^,然后就可以開始CRUD了。


好了,看完這個模板,想必你對技術(shù)設(shè)計也有一定的認(rèn)識了,老三實際上沒怎么接觸過用戶運(yùn)營相關(guān)的東西,所以內(nèi)容大家隨便看看,主要看模板。

當(dāng)然模板是相對固定的,但是設(shè)計是靈活的,做技術(shù)設(shè)計的時候,也不用拘泥于固定的形式,根據(jù)具體的需求,考慮到需要考慮的點,能做到設(shè)計指導(dǎo)開發(fā)就夠了。

那么,假如你已經(jīng)能做好技術(shù)設(shè)計……

但是——

老板:三某,這個需求,三天能不能搞定?

老三:可能不太……

老板:這個需求很急,而且我不能不急,你懂我的意思吧?

老三:沒問題,三天夠了!

而且——

老板:呦,三某的文檔寫的很清晰,代碼也很優(yōu)雅,今年公司績效不好,找個實習(xí)生把他替了吧。

……

團(tuán)隊技術(shù)專家回老家了,留下的技術(shù)設(shè)計模板真好用!的評論 (共 條)

分享到微博請遵守國家法律
双鸭山市| 洛扎县| 岗巴县| 赤水市| 苏尼特左旗| 民县| 万盛区| 河池市| 年辖:市辖区| 彭山县| 揭阳市| 汝阳县| 甘南县| 漾濞| 富顺县| 白山市| 湘西| 偃师市| 兰州市| 商水县| 方山县| 瓮安县| 将乐县| 棋牌| 衡阳县| 稷山县| 红原县| 玛纳斯县| 武冈市| 尼勒克县| 菏泽市| 神农架林区| 蛟河市| 潞西市| 介休市| 十堰市| 酒泉市| 濮阳县| 贵定县| 海南省| 神木县|