工作的一點點總結(jié)

回顧一年半之前,我還在作為一個項目的推進(jìn)者,為整個項目的進(jìn)度和完善而頭疼。當(dāng)時遇到的問題非常棘手。如今我又面臨和完成了一個完整大功能的開發(fā),完成度和問題解決上都有了一些進(jìn)步。

一、一個完整的功能開發(fā)都有哪些階段

1.1 需求評審

需求評審是整個流程的源頭,是由產(chǎn)品同學(xué)將需求以文檔的形式產(chǎn)出,然后拉著RD同學(xué)一起進(jìn)行對需求進(jìn)行評審。
在評審過程中,可以了解到需求的背景和作用,換句話說就是要做這個功能的意義。
當(dāng)然還有很多問題需要搞明白:
1、這個功能在整個大的業(yè)務(wù)鏈路中有什么樣的作用
2、它涉及到的交互上下游都有哪些,交互方式是同步還是異步
3、產(chǎn)品方案或交互方案是否合理
4、上游要求調(diào)用的耗時大約是多少,并發(fā)可能會是多少
5、文檔中的規(guī)則或者描述是否清晰
6、異常的兜底方案是什么

我的一個習(xí)慣是:

要用大腦盡可能的在數(shù)據(jù)流的維度上,串一遍完整的業(yè)務(wù)流程??纯葱枨笪臋n中是否缺失了哪些必要字段,可能會遇到哪些大卡點和小卡點。

1.2 技術(shù)評審

在進(jìn)行完需求評審之后,就需要對功能進(jìn)行技術(shù)方案的擬定。
其中就包含:
1、交互方式?jīng)Q定了通信方式
2、接口文檔的產(chǎn)出,包括參數(shù)和返回值的數(shù)據(jù)結(jié)構(gòu)等
3、數(shù)據(jù)庫表的設(shè)計
4、類圖設(shè)計
5、是否需要緩存
6、是否使用多線程的方式提高處理效率
7、是否使用分布式鎖
8、特殊情況是否考慮清楚
9、是否需要兜底定時任務(wù)
10、是否需要分布式配置
11、是否需要限流和熔斷
12、是否要加一個最外層開關(guān)

拉著qa進(jìn)行技術(shù)評審,評審需要考慮的問題:
1、數(shù)據(jù)庫設(shè)計是否合理,索引是否合理
2、類的設(shè)計是否合理
3、是否會發(fā)生死鎖
不同公司的QA具備的能力不同,有的是會開發(fā),能讀代碼;有的是只會黑盒測試,不關(guān)心內(nèi)部實現(xiàn),更側(cè)重業(yè)務(wù)流程的驗證和交互是否通順。

1.3 開發(fā)

開發(fā)過程就是按照技術(shù)方案進(jìn)行代碼實現(xiàn),當(dāng)然,我們有單測覆蓋率的要求,所以單測也可以算到開發(fā)過程中。
開發(fā)過程中也會遇到一些方案的考量:
1、是否需要用事務(wù)
2、分布式鎖超時時間
3、是否存在主從庫延遲,延遲的話是否加事務(wù),或者強(qiáng)制走主庫

1.4 自測

1、交互自測
2、各種邏輯分支測試,包括正向流程,異常流程,邊界情況等
3、并發(fā)邏輯測試,主要是測試是否能安全上鎖,上了鎖以后是否能安全讀寫庫等
4、壓測

我的習(xí)慣:

盡量在每一個讀寫操作節(jié)點出摸你程序中斷的情況,然后觀察表中數(shù)據(jù)是否符合預(yù)期,比如:事務(wù)是否能正常回滾,兜底的定時任務(wù)是否能撈起異常流程等。

1.5 CR

一般在提交分支合并申請時,如果需求內(nèi)容不多的話,tl 會自己 code review。如果是個比較大的功能,一般都是單獨拉會,組內(nèi)全員進(jìn)行 CR。
1、類的設(shè)計是否合理
2、代碼是否整潔,注釋是否適中,是否存在潛在的NPE
3、其他可能未考慮到的問題等

1.6 聯(lián)調(diào)

為了可以并行開發(fā),服務(wù)提供方是需要給調(diào)用方提供mock調(diào)用的,無論是實時接口還是異步消息,都提供一個mock響應(yīng)。先把兩方的通信打通,這樣聯(lián)調(diào)就只剩下邏輯聯(lián)調(diào)了。
當(dāng)然,除了要在測試環(huán)境正常跑起來之外,最好還是記錄一下在測試環(huán)境需要配置的內(nèi)容和步驟,比如:
1、域名的配置
2、服務(wù)鑒權(quán)的添加
3、分布式配置的添加
4、數(shù)據(jù)庫表的創(chuàng)建
5、公司內(nèi)部的中間件平臺上資源的申請,如:redis、topic和消費者的創(chuàng)建、分布式鎖資源的申請等
講這些一步步的都記錄之后,上線前在準(zhǔn)備上線單就不會漏掉了,因為在 tes 環(huán)境要完成的這些步驟,在 prod 同樣也是要做的。

1.7 提測

一般能自測出來的問題都解決了,之后讓QA完整的測一下。

1.8 預(yù)生產(chǎn)環(huán)境上線

等test 環(huán)境測試通過后,QA 會通過合并到 master 分支的申請,代碼將會合并到 master 上。
在預(yù)生產(chǎn)環(huán)境上,公司之間會存在差別,我們公司是預(yù)生產(chǎn)環(huán)境與生產(chǎn)環(huán)境共用一套資源,如:數(shù)據(jù)庫,topic和消費者,redis等。
在預(yù)生產(chǎn)進(jìn)行構(gòu)建和部署,一是要確保項目能在生產(chǎn)環(huán)境上正常啟動;而是在生產(chǎn)環(huán)境上正常執(zhí)行。

1.9 生產(chǎn)環(huán)境上線

完善上線單,一步一步在檢查一下是否有漏掉的地方。
確認(rèn)之后,進(jìn)行上線操作。同時觀察日志和監(jiān)控。

二、可能遇到的問題

在整個功能開發(fā)過程中,會在不同的階段遇到不同的問題。有可能代碼寫著寫著,就會發(fā)現(xiàn)一個漏想的點,這個點可小可大,往小了說是少一兩個字段,往大了說可能會成為整個需求的卡點。無論是大問題還是小問題,肯定越早暴露出來越好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容