互聯(lián)網(wǎng)產(chǎn)品研發(fā)流程概論

19 評論 101645 瀏覽 402 收藏 58 分鐘

互聯(lián)網(wǎng)業(yè)務(wù)不盡相同,因此各個公司采用的研發(fā)模型自然也各有千秋。但是大致的研發(fā)流程和各個角色的執(zhí)行方法論,卻是大同小異。

一、研究背景

1、提高研發(fā)計劃性

產(chǎn)品開發(fā)流程每個環(huán)節(jié)都涉及時間排期,這些時間管理要素可以有效控制項目時間表。

2、提高研發(fā)效率

通過明確開發(fā)團(tuán)隊每個角色的職責(zé)和協(xié)作方式,讓每個成員只需嚴(yán)格按照規(guī)范做好自己的工作即可高效協(xié)作,降低溝通成本。

3、保證產(chǎn)品質(zhì)量

通過確保每個環(huán)節(jié)的輸入輸出結(jié)果,讓最終產(chǎn)出的產(chǎn)品得到有效保證。

4、及時發(fā)現(xiàn)問題

通過各環(huán)節(jié)過程數(shù)據(jù),方便管理人員深入了解問題。

二、研發(fā)流程要點(diǎn)

1、明確團(tuán)隊角色責(zé)權(quán)利

每個角色都有明確分工和職責(zé),以及業(yè)績和晉升規(guī)則,從根本上保障團(tuán)隊執(zhí)行力。

2、明確項目管理工具

通過項目管理工具將分解每個角色的工作任務(wù),并形成高效信息流轉(zhuǎn)。除了產(chǎn)品經(jīng)理和項目經(jīng)理需要通觀全局外,其他每個角色只需及時關(guān)注自己負(fù)責(zé)的部分即可。

3、明確研發(fā)流程

最重要的是針對每個環(huán)節(jié)明確該環(huán)節(jié)的上下游關(guān)系,以及該環(huán)節(jié)作業(yè)的輸入和輸出內(nèi)容。

三、產(chǎn)品研發(fā)團(tuán)隊

研發(fā)團(tuán)隊是產(chǎn)品研發(fā)管理的核心,建立強(qiáng)有力的產(chǎn)品研發(fā)核心團(tuán)隊是成功的關(guān)鍵步驟。

1、組建團(tuán)隊

產(chǎn)品研發(fā)核心團(tuán)隊通常由產(chǎn)品經(jīng)理(1名)、研發(fā)經(jīng)理(1名)、研發(fā)人員(5-10名)組成。產(chǎn)品開發(fā)涉及的職責(zé)分配到各位成員身上。

2、角色與分工

(1)產(chǎn)品經(jīng)理

產(chǎn)品經(jīng)理是產(chǎn)品管理職位,負(fù)責(zé)市場調(diào)查并根據(jù)用戶的需求,確定開發(fā)何種產(chǎn)品,選擇何種技術(shù)、商業(yè)模式等。并推動相應(yīng)產(chǎn)品的開發(fā)組織,他還要根據(jù)產(chǎn)品的生命周期,協(xié)調(diào)研發(fā)、營銷、運(yùn)營等,確定和組織實施相應(yīng)的產(chǎn)品策略,以及其他一系列相關(guān)的產(chǎn)品管理活動。

(2)研發(fā)經(jīng)理

研發(fā)經(jīng)理是技術(shù)研發(fā)管理職位,負(fù)責(zé)了解項目的需求,系統(tǒng)分析,做相關(guān)的技術(shù)選型,制定開發(fā)計劃與開發(fā)規(guī)范。

(3)產(chǎn)品設(shè)計師

產(chǎn)品設(shè)計師是產(chǎn)品策劃職位,負(fù)責(zé)將客戶需求轉(zhuǎn)換為具體的產(chǎn)品形態(tài)。

(4)架構(gòu)師

架構(gòu)師是軟件系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)的設(shè)計師,負(fù)責(zé)確認(rèn)和評估產(chǎn)品需求、搭建軟件研發(fā)和網(wǎng)絡(luò)系統(tǒng)的核心構(gòu)架、并掃清主要難點(diǎn)。架構(gòu)師著眼于“技術(shù)實現(xiàn)”,能對常見場景快速給出最恰當(dāng)?shù)募夹g(shù)解決方案,并能評估團(tuán)隊實現(xiàn)功能需求的代價。

架構(gòu)師分為軟件架構(gòu)師和系統(tǒng)架構(gòu)師兩類,分別專注于軟件開發(fā)和系統(tǒng)運(yùn)維兩個階段的系統(tǒng)設(shè)計。

(5)交互設(shè)計師

交互設(shè)計師是功能設(shè)計職位,負(fù)責(zé)根據(jù)需求文檔設(shè)計交互原型。

(6)視覺設(shè)計師

視覺設(shè)計師是界面設(shè)計職位,負(fù)責(zé)根據(jù)需求文檔和交互設(shè)計文檔設(shè)計出產(chǎn)品視覺界面。

(7)Web前端工程師

Web前端工程師是界面研發(fā)職位,負(fù)責(zé)根據(jù)架構(gòu)設(shè)計文檔和界面設(shè)計稿,使用Web技術(shù)(HTML/CSS/JavaScript等)進(jìn)行Web產(chǎn)品界面開發(fā),并調(diào)用Server端接口實現(xiàn)Web應(yīng)用。

(8)APP開發(fā)工程師

APP開發(fā)工程師是APP界面研發(fā)職位,負(fù)責(zé)根據(jù)需求文檔和界面設(shè)計稿開發(fā)出APP客戶端界面,并調(diào)用Server端接口實現(xiàn)APP應(yīng)用。

(9)測試工程師

測試工程師是軟件質(zhì)量的把關(guān)者,負(fù)責(zé)根據(jù)需求文檔編寫測試用例、執(zhí)行測試任務(wù)、提交測試Bug、跟進(jìn)Bug修正等。

(10)運(yùn)維工程師

運(yùn)維工程師是產(chǎn)品發(fā)布職位,負(fù)責(zé)維護(hù)并確保整個服務(wù)的高可用性,同時不斷優(yōu)化系統(tǒng)架構(gòu)、提升部署效率、優(yōu)化資源利用率提高整體ROI。

四、項目管理工具

推薦騰訊敏捷開發(fā)平臺TAPD,這是騰訊內(nèi)部正在使用的敏捷產(chǎn)品研發(fā)平臺,微信、QQ、騰訊視頻等產(chǎn)品,都是通過TAPD進(jìn)行產(chǎn)品技術(shù)項目研發(fā)管理。

1.打開TAPD平臺首頁

2.注冊系統(tǒng)帳號

3.借助企業(yè)微信配置權(quán)限

4.支持需求研發(fā)全流程管理

貫穿敏捷研發(fā)生命周期,幫助團(tuán)隊敏捷迭代,小步快跑。

通過迭代進(jìn)行目標(biāo)制定與計劃評審,完成工作分配,使用故事墻與燃盡圖進(jìn)行研發(fā)過程跟蹤。迭代全程目標(biāo)清晰,進(jìn)度可控,研發(fā)過程敏捷迭代,小步快跑。

支持Web版本、PAD版、手機(jī)版。

五、主要流程環(huán)節(jié)

產(chǎn)品研發(fā)流程分為以下階段:立項階段、設(shè)計階段、開發(fā)階段、測試階段、上線階段、磨合階段、運(yùn)營階段、總結(jié)階段。

1、立項階段

立項階段從公司戰(zhàn)略分解開始,然后通過市場調(diào)研獲取客戶需求,然后梳理產(chǎn)品方向形成產(chǎn)品提案給產(chǎn)品委員會審批,審批通過后正式進(jìn)入產(chǎn)品研發(fā)階段。

(1)市場調(diào)研

需求調(diào)研就是通過調(diào)研篩選典型客戶,并對這些客戶的需求細(xì)節(jié)進(jìn)行匯總和梳理。

典型客戶一般都通過用戶畫像的形式進(jìn)行描述。對已有產(chǎn)品,可以直接通過數(shù)據(jù)統(tǒng)計部門拿到用戶畫像數(shù)據(jù)。用戶畫像一般都是通過抽樣方法,隨機(jī)抽取一批客戶(例如1%或者1萬個以下)進(jìn)行問卷調(diào)查。

QQ早期用戶畫像數(shù)據(jù)

對新產(chǎn)品則需要先約定大致客戶群特征,然后針對這個群體做抽樣問卷調(diào)查。問卷設(shè)計一般都需要產(chǎn)品經(jīng)理完成,然后可以找專業(yè)調(diào)研公司去實施。

新華信協(xié)助QQ音樂產(chǎn)品團(tuán)隊進(jìn)行用戶調(diào)研

(2)客戶需求分析

客戶需求分析就是將調(diào)研過程中涉及的需求信息,根據(jù)需求重要程度分級,優(yōu)先滿足客戶基礎(chǔ)需求,也就是我們常說的客戶痛點(diǎn)。

騰訊視頻的需求層次分析V1.0

(3)編寫產(chǎn)品提案

立項階段主要是要輸出產(chǎn)品提案,提交給公司產(chǎn)品委員會決策。產(chǎn)品提案也就是“商業(yè)需求文檔”,簡稱BRD(Business Requirement Document),是基于商業(yè)目標(biāo)或價值所描述的商業(yè)需求。其核心用途是用于在投入研發(fā)之前,為企業(yè)高管層提供決策評估依據(jù)。其內(nèi)容涉及產(chǎn)品概述、市場需求、競爭環(huán)境、重要性、成功要素、營銷策略、盈利預(yù)測等內(nèi)容,一般比較短小精煉,不包含產(chǎn)品細(xì)節(jié)。

支付寶用戶事業(yè)部產(chǎn)品提案模板

(4)提交產(chǎn)品決策委員會評審

提案評審主要是判斷以下要點(diǎn):與戰(zhàn)略關(guān)聯(lián)關(guān)系是否緊密?產(chǎn)品價值有多大?資源投入有多大?

公司產(chǎn)品決策委員會根據(jù)提交的產(chǎn)品提案進(jìn)行評估,評估流程如下圖所示:

產(chǎn)品決策委員會決策流程

2、產(chǎn)品設(shè)計

產(chǎn)品設(shè)計分為輸出概念設(shè)計、輸出功能清單、輸出需求概要文檔、輸出需求詳情文檔等步驟。

(1)產(chǎn)品概念設(shè)計

概念設(shè)計是非常關(guān)鍵的產(chǎn)品環(huán)節(jié),簡單明確的概念不僅讓客戶更容易理解,也讓產(chǎn)品研發(fā)過程思路清晰、少走彎路。而且,概念設(shè)計也是軟件架構(gòu)師將產(chǎn)品概念轉(zhuǎn)化為技術(shù)對象化模型的關(guān)鍵環(huán)節(jié)。

以支付寶產(chǎn)品為例,就是采用了“錢包”概念模型。錢包里有現(xiàn)金、銀行卡,也可以放身份證、名片、照片、小票、發(fā)票等。區(qū)分好需求層級,產(chǎn)品交互體驗的層次和用力程度自然就出來了。

支付寶錢包用戶產(chǎn)品模型

(2)確定產(chǎn)品功能組合

根據(jù)產(chǎn)品概念模型和需求優(yōu)先級,確認(rèn)關(guān)鍵性的功能要點(diǎn)。

QQ音樂關(guān)鍵功能要點(diǎn)

(3)確定功能清單

然后對功能進(jìn)行樹狀化梳理,把所有功能點(diǎn)都整理到一個列表里。

QQ影音產(chǎn)品功能清單V1.0

這些功能點(diǎn)后續(xù)都作為需求點(diǎn)加入項目管理系統(tǒng)TAP中,方便團(tuán)隊所有成員溝通和完善這個功能清單。形成功能清單初稿后,產(chǎn)品經(jīng)理需要先在產(chǎn)品團(tuán)隊中組織討論完善,然后再找運(yùn)營團(tuán)隊溝通完善,然后是找交互視覺團(tuán)隊補(bǔ)充完善,最后再找研發(fā)項目經(jīng)理、研發(fā)、測試、運(yùn)維等角色溝通完善。

這個過程既是幫產(chǎn)品經(jīng)理完善的過程,也是形成團(tuán)隊共識、激發(fā)團(tuán)隊熱情的過程。

(4)輸出需求概要文檔

概要文檔明確某個功能模塊下的功能介紹,一般是多個功能點(diǎn)的描述。需求概要一般由產(chǎn)品經(jīng)理負(fù)責(zé)撰寫,不包含功能細(xì)節(jié)描述。為了方便與產(chǎn)品設(shè)計師們溝通需求,可以將主要功能界面草稿加入該文檔中,用原型草圖能更好地描述主要功能。

騰訊視頻PC版播放模塊的需求概要文檔

有了某個模塊的需求概要文檔后,研發(fā)項目經(jīng)理組織團(tuán)隊溝通需求概要。產(chǎn)品經(jīng)理首先介紹需求概要然后由其他團(tuán)隊成員提出自己關(guān)心的專業(yè)問題。會前產(chǎn)品經(jīng)理提前分享文檔,并收集準(zhǔn)備大家的問題點(diǎn)。

會后主架構(gòu)師根據(jù)需求概要做架構(gòu)設(shè)計框架,研發(fā)工程師也可以針對自己負(fù)責(zé)的模塊做技術(shù)預(yù)研。有經(jīng)驗的工程師,往往在這個階段就開始試著做個Demo,把主體功能流程跑通,這樣在正式進(jìn)入研發(fā)時就會比較輕松,專注于細(xì)節(jié)完善和產(chǎn)品質(zhì)量。

(5)輸出需求詳情文檔

需求詳情文檔由產(chǎn)品設(shè)計師負(fù)責(zé)編寫。需求概要中的需求點(diǎn),每個都需要單獨(dú)編寫需求詳情文檔,而不是把所有的需求詳情都寫在一個文檔里。這樣會導(dǎo)致需求詳情文檔非常長,內(nèi)容龐雜,這個會導(dǎo)致后續(xù)很多問題。需求點(diǎn)最好都能拆分到1周內(nèi)能完成研發(fā)測試比較好,這樣才能有效實現(xiàn)敏捷開發(fā)。

騰訊視頻PC版自動登錄需求文檔

需求文檔并不是產(chǎn)品設(shè)計師一個人閉門造車就能寫出來的。產(chǎn)品設(shè)計師需要頻繁與交互、運(yùn)營、視覺、用戶研究(UER)、架構(gòu)師、測試經(jīng)理、開發(fā)、運(yùn)維等人員溝通。溝通的過程更多是產(chǎn)品設(shè)計師學(xué)習(xí)和融合各個角色思考的過程,同時也讓各個角色的工作更加明確。

一般需求文檔的編寫分成以下步驟:

  • 第1步:根據(jù)需求概要設(shè)計用戶操作流程圖。
  • 第2步:根據(jù)用戶操作流程拆分各個界面,繪制主界面草圖加入文檔,再分別描述每個界面的主要元素和功能點(diǎn),再描述界面之間交互的邏輯,最后加上交互背后涉及的業(yè)務(wù)邏輯。
  • 第3步:找運(yùn)營溝通需求,根據(jù)運(yùn)營人員的建議補(bǔ)充營銷位、運(yùn)營后臺工具等內(nèi)容。
  • 第4步:找交互設(shè)計師溝通交互細(xì)節(jié),根據(jù)交互設(shè)計師的疑問補(bǔ)充界面中的交互邏輯。交互設(shè)計師完成交互設(shè)計稿后,將交互稿截圖并加入文檔,并完善交互邏輯說明。
  • 第5步:找視覺設(shè)計師溝通視覺細(xì)節(jié),提醒視覺設(shè)計師突出重點(diǎn)。視覺設(shè)計師完成設(shè)計稿后,將設(shè)計稿截圖并加入文檔,并完善視覺界面說明。
  • 第6步:找架構(gòu)師溝通算法和技術(shù)邏輯,根據(jù)架構(gòu)師提出的疑問完善業(yè)務(wù)邏輯。
  • 第7步:找測試經(jīng)理溝通測試用例,根據(jù)測試經(jīng)理提出的疑問完善功能細(xì)節(jié)。因為測試經(jīng)理需要寫測試用例,測試用例是以需求文檔為藍(lán)本,如果需求文檔不清楚必然會導(dǎo)致測試用例不完善,因此測試經(jīng)理往往對產(chǎn)品設(shè)計師的幫助很大,甚至?xí)犬a(chǎn)品設(shè)計師更了解產(chǎn)品細(xì)節(jié)。
  • 第8步:找UER做功能調(diào)研。UER將需求文檔轉(zhuǎn)化為調(diào)研文檔,然后通過產(chǎn)品體驗群、邀請客戶當(dāng)面體驗等方式找出產(chǎn)品設(shè)計中的問題。然后UER反饋給產(chǎn)品經(jīng)理,產(chǎn)品設(shè)計師合并優(yōu)化成產(chǎn)品需求詳情文檔。有的公司UER調(diào)研也是由產(chǎn)品設(shè)計師承擔(dān),但是專業(yè)性上有可能難以保障。
  • 第9步:找產(chǎn)品經(jīng)理、研發(fā)項目經(jīng)理、運(yùn)維確認(rèn)需求文檔,并初步確定排期。

(6)需求評審

如果之前編寫過程與每個角色都有了充分的溝通,需求評審就會變得很輕松愉快。否則,產(chǎn)品經(jīng)理和產(chǎn)品設(shè)計師將會陷入無止境的辯論中,往往動輒就讓整個團(tuán)隊消耗了幾個小時還無法形成結(jié)論。

因此,需求評審的關(guān)鍵就是產(chǎn)品設(shè)計師事先做好評審會的一切準(zhǔn)備。提前準(zhǔn)備好所有資料并提前發(fā)給團(tuán)隊所有成員,并事先與所有角色都逐一確認(rèn)過關(guān)鍵問題,而且得到了產(chǎn)品經(jīng)理和研發(fā)項目經(jīng)理的確認(rèn)。在評審會上,先講總體,再講重要細(xì)節(jié),再講次重要細(xì)節(jié),并層層確認(rèn)。

對于會議上爭議較大的問題點(diǎn),5分鐘后還沒結(jié)論的馬上記錄下來,會后再單獨(dú)討論。如果問題點(diǎn)太多,就說明產(chǎn)品設(shè)計師還沒考慮清楚,那就盡早結(jié)束會議,重新修改后再召開評審。這種情況會嚴(yán)重影響產(chǎn)品團(tuán)隊的聲譽(yù),因為耽誤的是所有人的時間。為了減少這種風(fēng)險,需求評審一定要提前1-2周召開,而不要等到開發(fā)前夕才進(jìn)行評審。

3、交互設(shè)計

交互設(shè)計主要是將產(chǎn)品經(jīng)理的功能設(shè)計,用原型圖和交互流程的形式展現(xiàn)出來,方便與用戶及團(tuán)隊進(jìn)行溝通。交互設(shè)計原型將產(chǎn)品經(jīng)理提供的產(chǎn)品原型草圖具象化,減少了需求不確定性,保證產(chǎn)品功能可用性。

騰訊設(shè)計完整流程圖

(1)交互設(shè)計需求分析

交互設(shè)計需求分析主要是要回答以下問題:

A)重點(diǎn)是給哪些角色看?

涉及交互稿的角色很多,幾乎每個角色都需要,但是只要有專業(yè)細(xì)致的交互稿,也就能滿足所有角色的需求了,無需針對每個人提供不同的交互稿版本。

  • 產(chǎn)品經(jīng)理:產(chǎn)品經(jīng)理需要將交互稿截圖合并到需求文檔,提供給各個角色作為需求源。
  • 視覺設(shè)計師:需要以交互設(shè)計稿為基礎(chǔ),設(shè)計出每個界面的PSD文檔。
  • 研發(fā)經(jīng)理:需要通過交互設(shè)計稿,判斷需要調(diào)配哪些角色參與,大概需要多少時間。
  • 架構(gòu)師:需要通過交互設(shè)計稿,梳理出軟件架構(gòu)設(shè)計,特別是功能流程設(shè)計與軟件架構(gòu)和網(wǎng)絡(luò)架構(gòu)設(shè)計緊密相關(guān)。
  • Web前端開發(fā):需要通過交互設(shè)計稿,確認(rèn)網(wǎng)頁界面是如何串聯(lián)起來的。這里不僅涉及功能流程設(shè)計,也包括交互細(xì)節(jié)。
  • APP客戶端開發(fā):需要通過交互設(shè)計稿,確認(rèn)APP軟件界面是如何串聯(lián)起來的。這里不僅涉及功能流程設(shè)計,也包括交互細(xì)節(jié)。
  • 后臺開發(fā):需要通過交互設(shè)計稿,確認(rèn)采用哪種后臺調(diào)用方式,以及如何通過交互設(shè)計讓用戶在面對網(wǎng)絡(luò)延遲等情況時體驗更佳。
  • 測試:需要通過交互設(shè)計稿,編寫功能測試用例,以及每個交互體驗細(xì)節(jié)的測試用例。
  • 用戶研究:需要通過交互設(shè)計稿,訪談客戶,讓客戶更容易理解產(chǎn)品功能,從而獲得更有效的反饋。

B)用戶場景是什么?

確定是要做什么場景下的交互設(shè)計。具體包括用戶畫像、主要功能流程等。

C)采用什么樣的形式?

交互文檔大多都采用Axure進(jìn)行設(shè)計,一般都采用線框稿的形式。

使用Axure創(chuàng)建交互設(shè)計文檔

D)要達(dá)到什么標(biāo)準(zhǔn)?

一般衡量交互水平的指標(biāo),是整個功能操作流程的流量轉(zhuǎn)化率。

以注冊登錄為例,可以通過抽樣監(jiān)測從進(jìn)入注冊到登錄完成每個步驟進(jìn)行數(shù)據(jù)跟蹤,然后得出轉(zhuǎn)化率數(shù)據(jù)值,然后再跟競品或類似產(chǎn)品進(jìn)行對比,不斷提升這個轉(zhuǎn)化率。

(2)功能交互設(shè)計

功能交互設(shè)計主要是將軟件界面之間的跳轉(zhuǎn)關(guān)聯(lián)關(guān)系表達(dá)清楚。

(3)交互細(xì)節(jié)設(shè)計

交互細(xì)節(jié)涉及點(diǎn)非常多,不同公司、不同類型的產(chǎn)品都會有自己不同的交互設(shè)計風(fēng)格和細(xì)節(jié)處理方式。為了保證產(chǎn)品交互細(xì)節(jié)上的統(tǒng)一和規(guī)范,互聯(lián)網(wǎng)公司一般都會制定自己的交互設(shè)計規(guī)范,以便指導(dǎo)設(shè)計師完成交互設(shè)計。

騰訊網(wǎng)站產(chǎn)品交互設(shè)計規(guī)范V1.0

交互細(xì)節(jié)設(shè)計,一般涉及交互控件元素、交互文案、裝飾圖形等內(nèi)容。

每個看似很小的功能細(xì)節(jié),都往往需要花費(fèi)大量精力去做細(xì)。為了節(jié)省成本,在這樣的功能開發(fā)出來后,都最好對象化模塊化,其他場景只需調(diào)用這個模塊即可快速創(chuàng)建類似的功能。

網(wǎng)頁翻頁功能細(xì)節(jié)交互設(shè)計

4、視覺設(shè)計

(1)視覺設(shè)計需求分析

視覺設(shè)計需求分析主要是明確視覺設(shè)計需要達(dá)到的目的。

以Logo設(shè)計為例,最常見的需求要點(diǎn)是兩個:明確表義、吸引視線。因此在設(shè)計過程中,通過把競品和不同設(shè)計方案可以放到一起,從而找到最優(yōu)的設(shè)計方案。

百度輸入法Logo設(shè)計需求調(diào)研

(2)視覺概念設(shè)計

視覺概念設(shè)計建立在視覺風(fēng)格推導(dǎo)基礎(chǔ)上,用以描繪出產(chǎn)品視覺風(fēng)格的基本方向。

該步驟需要確定產(chǎn)品風(fēng)格,為后續(xù)確

定設(shè)計元素、明度、色調(diào)、質(zhì)感等設(shè)計細(xì)節(jié)奠定基礎(chǔ)。

(3)主界面設(shè)計

主視覺設(shè)計師拿到交互稿后,針對主要功能界面設(shè)計風(fēng)格定位稿。

百度影音播放器主界面

(4)視覺細(xì)節(jié)設(shè)計

然后針對界面中的每個控件,都按照像素級標(biāo)準(zhǔn)進(jìn)行繪制。

每個空間的分層素材都需要通過PSD文檔進(jìn)行保留,色塊區(qū)域的顏色值需要標(biāo)注,按鈕的每個狀態(tài)都需要單獨(dú)設(shè)計,每個控件的尺寸也需要明確標(biāo)注。交互設(shè)計中的每個細(xì)節(jié)設(shè)計狀態(tài),也都應(yīng)該有對應(yīng)的設(shè)計稿。

騰訊視頻播放器內(nèi)容庫視覺細(xì)節(jié)設(shè)計

(5)視覺設(shè)計規(guī)范

與交互設(shè)計類似,視覺設(shè)計涉及點(diǎn)也非常多。為了保證產(chǎn)品視覺細(xì)節(jié)上的統(tǒng)一和規(guī)范,互聯(lián)網(wǎng)公司一般都會制定自己的產(chǎn)品視覺設(shè)計規(guī)范,以便指導(dǎo)設(shè)計師完成視覺設(shè)計。

QQ音樂視覺設(shè)計規(guī)范

5、架構(gòu)設(shè)計

架構(gòu)設(shè)計是架構(gòu)師對各個子系統(tǒng)關(guān)系的抽象模型,用于指導(dǎo)大型系統(tǒng)的開發(fā)和運(yùn)維。

架構(gòu)設(shè)計主要包括三項工作:系統(tǒng)架構(gòu)設(shè)計、軟件架構(gòu)設(shè)計、網(wǎng)絡(luò)架構(gòu)設(shè)計三個部分。

系統(tǒng)架構(gòu)設(shè)計一般都會采用MVC(Model-View-Controller)模型,將業(yè)務(wù)邏輯模型、軟件界面、控制器邏輯層進(jìn)行分層處理,然后通過控制器邏輯層確保業(yè)務(wù)邏輯層和軟件界面層的同步。MVC模型的好處是在優(yōu)化界面及用戶交互的同時,無需重新編寫業(yè)務(wù)邏輯。同時也有助于管理復(fù)雜的應(yīng)用程序,可以在不依賴業(yè)務(wù)邏輯的情況下專注于視圖設(shè)計,不同開發(fā)人員可以同時開發(fā)界面、控制器邏輯和業(yè)務(wù)邏輯,同時也讓測試變得更加容易。

(1)系統(tǒng)架構(gòu)設(shè)計

如果整個系統(tǒng)研發(fā)是從零開始的,架構(gòu)設(shè)計則需要從概況圖開始梳理,然后再補(bǔ)充各個模塊的架構(gòu)圖。這部分一般由首席架構(gòu)師牽頭,屬于整個產(chǎn)品技術(shù)架構(gòu)的總綱。

支付寶平臺系統(tǒng)架構(gòu)概況圖

一般而言,子系統(tǒng)名稱都會與產(chǎn)品概念保持一致。子系統(tǒng)不論是應(yīng)用前臺還是后臺,通過公共服務(wù)層、業(yè)務(wù)邏輯層、基礎(chǔ)業(yè)務(wù)邏輯層關(guān)聯(lián)到一起。這種對象化的架構(gòu)設(shè)計方法,會讓整個團(tuán)隊使用同一種語言在溝通, 相互理解起來更容易,有利于提高協(xié)作效率 。

支付寶財會系統(tǒng)架構(gòu)圖

(2)軟件架構(gòu)設(shè)計

軟件架構(gòu)設(shè)計一般采用分層架構(gòu)設(shè)計模型。

軟件首先分為兩個大層次:前端和后臺。前端應(yīng)用負(fù)責(zé)提供與用戶交互的軟件,分成Web應(yīng)用,PC客戶端應(yīng)用、移動APP應(yīng)用等場景;后臺負(fù)責(zé)實現(xiàn)所有業(yè)務(wù)相關(guān)的操作和服務(wù),分成接口層、業(yè)務(wù)邏輯層、基礎(chǔ)邏輯層。

軟件架構(gòu)設(shè)計時,需要主要做到以下幾點(diǎn):支持模塊化、高內(nèi)聚、低耦合、可伸縮性,同時也要防止過度設(shè)計。已上線軟件如果要新增某個功能,則需要針對該功能進(jìn)行軟件架構(gòu)設(shè)計,并最終形成軟件架構(gòu)設(shè)計圖。

騰訊視頻郵件推薦功能軟件架構(gòu)設(shè)計圖

然后針對這個軟件架構(gòu)圖進(jìn)行細(xì)化,先明確系統(tǒng)涉及的所有基礎(chǔ)邏輯層模塊(對象),以及該模塊的輸入和輸出項,并明確模塊內(nèi)部的基本處理邏輯。這些模塊有的有可能已經(jīng)存在,則無需再開發(fā),單獨(dú)標(biāo)注出來即可;還沒有開發(fā)的模塊,則可以交給軟件項目經(jīng)理指派給工程師開發(fā)。

然后明確界面上可以直接調(diào)用的各個業(yè)務(wù)邏輯層模塊(對象)名稱,以及對應(yīng)接口、屬性、方法。

對于還未開發(fā)的接口,如果涉及到數(shù)據(jù)調(diào)用,則需要梳理相關(guān)的數(shù)據(jù)結(jié)構(gòu),并確定算法。

上面介紹的只是最基礎(chǔ)的軟件架構(gòu)設(shè)計流程,為了保證軟件的柔性可用,經(jīng)常還會RPC服務(wù)組件(讓網(wǎng)絡(luò)分布式應(yīng)用開發(fā)變得更容易)、消息中間件(將模塊之間的交互異步化)等方案。

(3)網(wǎng)絡(luò)架構(gòu)設(shè)計

A)運(yùn)維架構(gòu)

架構(gòu)設(shè)計需要保證每個環(huán)節(jié)都能快速迭代配置,尤其是在服務(wù)器CPU、內(nèi)存、存儲、帶寬幾個方面需要做到高可用性。

以新零售個性化推薦動態(tài)Feed為例,我們梳理下整個網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計的流程。首先需要根據(jù)業(yè)務(wù)數(shù)據(jù)分析網(wǎng)絡(luò)系統(tǒng)需求。一般Feed信息流前3頁訪問量往往占了90%以上,因此在做緩存設(shè)計的時候,我們完全可以在緩存數(shù)據(jù)中只保存每個用戶最近的100條數(shù)據(jù),其他的需要用戶下拉再從數(shù)據(jù)庫中實時生成。

然后需要從技術(shù)上解決高并發(fā)和高性能的問題。因為Feed性能壓力主要集中在查詢請求量上,而且一條Feed數(shù)據(jù)經(jīng)常是數(shù)百甚至上百萬人訪問,因此Feed很適合采用緩存系統(tǒng)。當(dāng)訪問壓力不大時,采用單層緩存數(shù)據(jù)就可以了。如果日均訪問量達(dá)到了百萬人次而且峰值非常明顯,則最好采用雙層緩存機(jī)制以增加系統(tǒng)擴(kuò)容的靈活性。當(dāng)寫入Feed量很小但是訪問量暴增時,只需擴(kuò)容L1層服務(wù)即可;寫入量暴增,則對L2層服務(wù)快速擴(kuò)容。緩存擴(kuò)容主要是提升QPS、帶寬瓶頸以及緩存數(shù)據(jù)庫性能。

如果希望降低研發(fā)成本,也可以考慮購買騰訊云個性化推薦服務(wù),這些中間處理過程就全部交給云服務(wù)去處理,這樣可以集中力量解決業(yè)務(wù)層問題。

Feed中除了文本數(shù)據(jù)外,還會有大量圖片甚至視頻數(shù)據(jù),此時可以采用該CDN做文件緩存。Local Cache+ 分布式緩 存,這是常見CDN緩存策略。此時比較經(jīng)濟(jì)的選擇,是購買CDN云服務(wù),發(fā)布Feed時,把這些圖片和視頻數(shù)據(jù)先Post到服務(wù)器,然后再同步到CDN云服務(wù)中去。

然后是數(shù)據(jù)庫的分布式架構(gòu)。網(wǎng)絡(luò)架構(gòu)師拿到軟件架構(gòu)師的數(shù)據(jù)結(jié)構(gòu)后,首先對Feed數(shù)據(jù)區(qū)分冷熱數(shù)據(jù)。Feed數(shù)據(jù)冷熱一般都非常明顯,可以按時間維度拆分做分表(例如每天Feed數(shù)據(jù)是獨(dú)立一張分表)進(jìn)行冷熱數(shù)據(jù)分離,并對冷熱數(shù)據(jù)采用不同的存儲方案降低成本。Feed數(shù)據(jù)還有快速檢索的需求,因此需要通過建立索引提高檢索速度。

B)服務(wù)撥測系統(tǒng)

運(yùn)維發(fā)布系統(tǒng)后,運(yùn)維團(tuán)隊的壓力才真正開始。隨著用戶量的不斷增加,穩(wěn)定性、性能和監(jiān)控成了剛需。每個客戶請求過來,都需要在后臺不同機(jī)器之間不停地調(diào)用并返回。只要有1個接口出現(xiàn)問題,就會導(dǎo)致整個系統(tǒng)出現(xiàn)性能下降、服務(wù)延時甚至崩潰。

此時,就需要有效的服務(wù)追蹤系統(tǒng)。對新零售企業(yè)而言,最經(jīng)濟(jì)有效的辦法是采用騰訊云撥測系統(tǒng)。通過部署抽樣接口到云撥測系統(tǒng),特別是在高峰時段進(jìn)行監(jiān)測,即可通過手機(jī)短信或郵件監(jiān)控服務(wù)異常。

C)日志統(tǒng)計系統(tǒng)

日志統(tǒng)計系統(tǒng)建議直接采用騰訊云日志服務(wù)。

此外,還要考慮全鏈路壓測、服務(wù)器登錄安全性、運(yùn)維權(quán)限分配、流量峰后降級預(yù)案、共享Docker集群資源等問題,確保系統(tǒng)可用性、安全性、單位成本。

6、創(chuàng)建版本計劃

當(dāng)架構(gòu)設(shè)計完成并評審后,研發(fā)項目經(jīng)理開始對需求和架構(gòu)進(jìn)行切分,形成版本計劃。

版本主要作用是用來明確研發(fā)節(jié)奏,方便團(tuán)隊協(xié)作,特別是方便測試和產(chǎn)品發(fā)布。

一般產(chǎn)品研發(fā)節(jié)奏都是按每周1個小版本,以便安排和協(xié)作。但是因為APP有發(fā)布周期和推廣成本的考慮,因此會每隔幾周發(fā)布一個大版本。

每個版本都包括若干需求點(diǎn),因此自然就明確了測試范疇,這樣測試范圍就不會無限制蔓延,可以讓產(chǎn)品節(jié)奏非常明確,形成快速迭代和敏捷開發(fā)的研發(fā)風(fēng)格。

版本落地到代碼管理層面上,關(guān)鍵就是代碼管理系統(tǒng)(一般都選用Git)中的Trunk版本。首先項目經(jīng)理需要在Git中創(chuàng)建Trunk版本,并為每個研發(fā)人員創(chuàng)建分支版本。研發(fā)人員在分支版本中測試沒有問題的版本代碼,將由架構(gòu)師或項目經(jīng)理合并到Trunk版本中,這個版本經(jīng)過編譯后進(jìn)行功能和系統(tǒng)測試,沒問題后再同步到運(yùn)維發(fā)布系統(tǒng)中發(fā)布。

7、開發(fā)階段

(1)開發(fā)測試環(huán)境準(zhǔn)備

主要是部署Web、APP開發(fā)測試環(huán)境,以及部署需求管理系統(tǒng)、代碼管理系統(tǒng)Git等。

QQ游戲大廳研發(fā)環(huán)境搭建計劃

(2)開發(fā)設(shè)計文檔

開發(fā)工程師拿到架構(gòu)師設(shè)計文檔后,就可以將自己負(fù)責(zé)的部分拆分出來,然后提前對這部分的開發(fā)細(xì)節(jié)進(jìn)行補(bǔ)充和完善,形成開發(fā)設(shè)計文檔。開發(fā)設(shè)計文檔主要用來提高軟件開發(fā)效率,保證軟件質(zhì)量,并有利于后續(xù)產(chǎn)品客服文檔的編寫,也非常有利于后續(xù)的研發(fā)迭代和代碼維護(hù)工作。

前端開發(fā)、APP客戶端開發(fā)、后臺開發(fā)完善的內(nèi)容和細(xì)節(jié)各不相同,但是內(nèi)容主要集中在開發(fā)環(huán)境、開發(fā)語言、使用框架、對象屬性方法、接口封裝、數(shù)據(jù)結(jié)構(gòu)設(shè)計、界面開發(fā)、編譯發(fā)布等方面。

(3)前端開發(fā)

前端開發(fā)工程師通過使用JavaScript來編寫和封裝具有良好性能的前端交互組件,并通過CSS+XHTML輸出Web操作界面。前端工程師經(jīng)常不僅要考慮前端實現(xiàn),很多時候也需要了解后臺研發(fā),從而能不斷優(yōu)化前端代碼分層架構(gòu),讓W(xué)eb產(chǎn)品的穩(wěn)定性和可用性不斷提升。

(4)APP客戶端開發(fā)

App客戶端開發(fā)主要是指IOS、Android、微信小程序的開發(fā)。

IOS開發(fā)推薦使用Xcode,需要運(yùn)行在Mac OS上;Android開發(fā)推薦使用Eclipse;微信小程序開發(fā)需要使用微信開發(fā)者工具。

(5)后臺開發(fā)

后臺開發(fā)主要是指的服務(wù)器端的程序開發(fā),包括Web后臺開發(fā)、組件開發(fā)兩類。兩者之間其實本質(zhì)上一體的,web后臺可以看作是組件的前端。Web后臺解析了HTTP請求,然后通過層層轉(zhuǎn)發(fā)給了后面分布式系統(tǒng)的多個組件并調(diào)用服務(wù)。

因為互聯(lián)網(wǎng)公司的server一般都是Linux,因此還會涉及到Shell腳本編寫、Linux環(huán)境編程等內(nèi)容,需要熟悉Linux/Unix下各種環(huán)境編程的API。

(6)開發(fā)工程師自測

開發(fā)工程師可以一邊研發(fā)一邊自測,完成所負(fù)責(zé)功能模塊的開發(fā)后再進(jìn)行完整功能模塊的自測。

開發(fā)自測和測試的重點(diǎn)不一樣,是為了減少不必要成本,而不是要替代測試工程師的工作。因為代碼是開發(fā)自己寫的,自測可以發(fā)現(xiàn)的問題,就完全沒必要讓測試工程師去發(fā)現(xiàn)。而且發(fā)現(xiàn)問題馬上就可以自己修改自己驗證,減少了溝通和返工成本。

8、測試階段

從需求詳情文檔經(jīng)過評審,測試工作就開始了。

(1)測試用例

測試經(jīng)理組織測試工程師,根據(jù)需求詳情文檔撰寫測試用例。

測試用例是軟件測試質(zhì)量穩(wěn)定的保障,用于指導(dǎo)測試的實施、規(guī)劃測試數(shù)據(jù)、設(shè)計測試腳本、評估測試結(jié)果、分析缺陷標(biāo)準(zhǔn)等。測試用例一般都詳細(xì)記錄測試工程師應(yīng)該有的操作信息,這樣可以幫助測試工程師參與測試。

測試用例文檔一般包括修訂記錄、測試用例、測試數(shù)據(jù)等內(nèi)容。測試用例可以直接在項目管理系統(tǒng)TAPD中批量創(chuàng)建。TAPD可以快速編寫并管理測試用例,制定測試計劃并執(zhí)行,然后利用Bug跟蹤管理進(jìn)行問題跟蹤與解決。

TAPD平臺中的測試用例列表與詳情頁

有很多常見模塊可以歸納成測試用例庫,然后不斷優(yōu)化完善,這樣可以減少重復(fù)設(shè)計測試用例。相當(dāng)于把測試工作也組件化,減少低效溝通提高效率。例如注冊功能測試用例,每隔一段時間就更新一次,以后出現(xiàn)需要測試注冊功能的時候測試工程師即可按照此規(guī)范進(jìn)行測試,而無需針對這個功能重復(fù)編寫測試用例。

注冊功能的測試用例規(guī)范(部分)

(2)功能體驗測試

功能測試就是對產(chǎn)品功能進(jìn)行驗證,根據(jù)功能測試用例逐項測試,檢查產(chǎn)品功能是否達(dá)到用戶要求。功能測試主要采用黑盒測試方法,把測試對象看作黑盒子,主要測試功能而不考慮軟件內(nèi)部結(jié)構(gòu)及代碼。一般從軟件產(chǎn)品的界面、架構(gòu)出發(fā),按照需求編寫出來的測試用例,輸入數(shù)據(jù)在預(yù)期結(jié)果和實際結(jié)果之間進(jìn)行評測,進(jìn)而提出更加使產(chǎn)品達(dá)到用戶使用的要求。

黑盒測試試圖發(fā)現(xiàn)以下類型的錯誤:功能錯誤或遺漏、界面錯誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯誤、性能錯誤、初始化和終止錯誤等。

這部分測試除了測試工程師需要參與外,產(chǎn)品、交互、視覺設(shè)計師也需要深度參與,因為很多隱性信息都很難在需求文檔中寫得無一遺漏,但是產(chǎn)品設(shè)計師一看就能看出很多的問題,而這些問題測試工程師卻難以判斷,因為他們經(jīng)常不知道產(chǎn)品設(shè)計師怎么想的。

功能體驗測試最好是與研發(fā)同步。Web測試提供測試環(huán)境,產(chǎn)品設(shè)計團(tuán)隊通過配置host即可訪問測試環(huán)境,隨時能看到開發(fā)進(jìn)展情況。對客戶端的開發(fā),則每天定時合并代碼到trunk并提供daily build版本,產(chǎn)品設(shè)計團(tuán)隊及時下載體驗,并在下班前將體驗問題通過工作群告知研發(fā)人員,以便研發(fā)人員第2天及時改進(jìn)。這樣可以及時糾偏,減少研發(fā)憋大招。這個地方看似很小的工作習(xí)慣改變,但是會產(chǎn)生天壤之別的結(jié)果。所謂敏捷開發(fā),也體現(xiàn)在這些協(xié)作細(xì)節(jié)里。

(3)性能測試

性能測試關(guān)注軟件完成特定功能的響應(yīng)速度、穩(wěn)定性和運(yùn)維成本消耗。主要是為了優(yōu)化系統(tǒng)容量、可擴(kuò)展性、系統(tǒng)穩(wěn)定性、資源利用率等指標(biāo)。

性能測試一般采用壓力測試的方法,通過給系統(tǒng)加載一定負(fù)荷的業(yè)務(wù)壓力,讓系統(tǒng)持續(xù)運(yùn)行一段時間(一般為7×24小時),檢測系統(tǒng)是否能穩(wěn)定運(yùn)行。

性能測試方案模板(大綱部分)

性能測試主要步驟如下:

A)羅列主要用戶場景及相應(yīng)負(fù)載量

重點(diǎn)針對可能出現(xiàn)性能瓶頸的場景,逐項分解和預(yù)估負(fù)載量。

為了讓系統(tǒng)抗壓能力更大一些,一般都會多預(yù)估一定比例的負(fù)載量,以防出現(xiàn)意外情況。

B)識別穩(wěn)定性的主要性能指標(biāo)

然后根據(jù)每個場景的負(fù)載量,分解每個后臺服務(wù)、APP、web端所需關(guān)注的系統(tǒng)指標(biāo),比如響應(yīng)時間、CPU、內(nèi)存使用率等。

C)單元性能測試與改進(jìn)

在準(zhǔn)備好測試環(huán)境后,使用測試工具對每個接口按照合法輸入格式進(jìn)行壓力測試,確保在目標(biāo)負(fù)載量都不會導(dǎo)致出現(xiàn)問題。比較常用的壓力測試工具是Loadrunner。

如果系統(tǒng)出現(xiàn)響應(yīng)延遲或崩潰的情況,則需要運(yùn)維和研發(fā)快速迭代。然后再次測試,直到系統(tǒng)性能指標(biāo)達(dá)標(biāo)為止。

D)客戶端兼容性測試

Web界面的兼容性測試,可以直接用Chrome內(nèi)置開發(fā)工具即可完成。

APP兼容性測試,最好借用第三方工具(例如Testin云測),提交APP后,Testin云測將會部署APP到數(shù)百款手機(jī),然后自動輸出兼容性穩(wěn)定性報告。也可以根據(jù)測試工程師提供的測試用例,針對每款手機(jī)批量進(jìn)行功能和體驗測試。

E)整體系統(tǒng)測試與改進(jìn)

當(dāng)每個場景下的單元測試完成后,再針對整個系統(tǒng)進(jìn)行完整的壓力測試。

同樣,如果出現(xiàn)響應(yīng)延遲或崩潰的情況,則需要運(yùn)維和研發(fā)快速迭代,找到出問題的后臺接口或前臺模塊進(jìn)行優(yōu)化,直到系統(tǒng)性能指標(biāo)達(dá)標(biāo)為止。

(4)數(shù)據(jù)初始化運(yùn)營

數(shù)據(jù)初始化首先是數(shù)據(jù)庫工程師根據(jù)產(chǎn)品和運(yùn)營人員的需求,對基礎(chǔ)數(shù)據(jù)進(jìn)行完善和補(bǔ)充,以達(dá)到能用戶能正常使用的狀態(tài)。

比較麻煩的是以往舊系統(tǒng)的數(shù)據(jù)遷移,由于舊系統(tǒng)和現(xiàn)有系統(tǒng)的字段,類型,日期格式,數(shù)字格式等差異,需要抽絲剝繭一層層把數(shù)據(jù)注入到對應(yīng)的數(shù)據(jù)表里,特別是表間關(guān)系需要繼續(xù)保留下來。

然后是運(yùn)營人員通過運(yùn)營后臺,手動修改部分有問題的數(shù)據(jù)。

(5)產(chǎn)品內(nèi)部測試

測試工程師完成所有測試用例的測試工作,研發(fā)人員將所有必須完成的Bug修正修正完成,其他待修正bug完成轉(zhuǎn)需求后,就可以啟動產(chǎn)品內(nèi)部測試了。

內(nèi)部測試首先可以針對產(chǎn)品相關(guān)的所有員工,包括產(chǎn)品、研發(fā)、運(yùn)營、市場、運(yùn)維等各個角色。這個過程一方面是為了收集產(chǎn)品缺陷反饋,同時也是讓相關(guān)人員有參與產(chǎn)品改進(jìn)的機(jī)會,讓大家能榮辱與共。同事對于產(chǎn)品的容忍度比用戶要高得多,就算產(chǎn)品做得很爛,他們都會堅持著把產(chǎn)品所有功能都用一遍,而真實用戶很可能看到一個不好的體驗點(diǎn)轉(zhuǎn)身就走。因此產(chǎn)品經(jīng)理一定要高度重視同事反饋,同事發(fā)現(xiàn)每個的缺陷,都一定會導(dǎo)致大量用戶流失。

員工反饋的問題如果是之前沒有發(fā)現(xiàn)的缺陷,就需要盡快改進(jìn)修正。如果對當(dāng)前版本影響不大,就可以放到以后版本Bug轉(zhuǎn)需求,并記錄下反饋人信息和詳細(xì)溝通結(jié)論。

等員工完成內(nèi)測后,產(chǎn)品經(jīng)理可以將產(chǎn)品內(nèi)部測試版發(fā)到核心用戶群里,以有獎測試的形式刺激大家提交缺陷。如果線上反饋不夠深入,可以由UER調(diào)研小組邀請用戶當(dāng)面溝通交流,找到更深入的缺陷。這些問題匯總提交到Bug列表中,可以馬上修正的盡快修正,可以放下個版本的Bug轉(zhuǎn)需求。

9、發(fā)布上線階段

發(fā)布環(huán)境的搭建,包括預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境、灰度發(fā)布環(huán)境的準(zhǔn)備等工作。

而正式上線的工作,則包括數(shù)據(jù)庫上線、程序文件上線等工作。

推薦騰訊云毫秒服務(wù)引擎,這是一個開源框架,適用于在廉價機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺服務(wù)。毫秒服務(wù)引擎集RPC、名字發(fā)現(xiàn)服務(wù)、負(fù)載均衡、業(yè)務(wù)監(jiān)控、灰度發(fā)布、容量管理、日志管理、key-value存儲于一體,非常適合中小型互聯(lián)網(wǎng)公司部署發(fā)布分布式應(yīng)用。

(1)發(fā)布環(huán)境準(zhǔn)備

預(yù)發(fā)布環(huán)境準(zhǔn)備:預(yù)發(fā)布環(huán)境是跟生產(chǎn)環(huán)境配置一模一樣的系統(tǒng),只是往往只有一個測試節(jié)點(diǎn),但是它后面調(diào)用的是正式生產(chǎn)環(huán)境的資源(例如DB、Cache、隊列等)。

預(yù)發(fā)布環(huán)境主要是要在正式發(fā)布前,做一次完整回歸測試。測試人員可以通過地址參數(shù)、Cookie、請求頭參數(shù)、VPN等工具,接入預(yù)發(fā)布環(huán)境進(jìn)行系統(tǒng)整體回歸測試。預(yù)發(fā)布環(huán)境下,最常見的Bug如下:生產(chǎn)環(huán)境代碼已更新到最新版本了,但是數(shù)據(jù)庫變更卻忘了操作生產(chǎn)數(shù)據(jù)庫。這個情況下,測試環(huán)境很可能都是正常的,但是預(yù)發(fā)布環(huán)境就可以很好的發(fā)現(xiàn)bug。

跟開發(fā)環(huán)境不同,預(yù)發(fā)布環(huán)境不允許開發(fā)人員直接接觸,以防因為開發(fā)人員提交代碼的瑕疵影響預(yù)發(fā)布環(huán)境里的系統(tǒng)。因為這是運(yùn)維人員保障上線質(zhì)量的最后一道屏障,運(yùn)維標(biāo)準(zhǔn)也基本等同于生產(chǎn)環(huán)境。

正式生產(chǎn)環(huán)境準(zhǔn)備:生產(chǎn)環(huán)境包括發(fā)布產(chǎn)品所需要的所有服務(wù)器資源,包括Web服務(wù)器、數(shù)據(jù)服務(wù)器、CDN服務(wù)等。

灰度發(fā)布環(huán)境準(zhǔn)備:每個項目一般都會部署到多臺機(jī)器,所以一般會拿1-3臺服務(wù)器看看是否可用,如果失敗則只需要回滾這幾臺服務(wù)器,比較方便?;叶劝l(fā)布需要使用跳板機(jī)并進(jìn)行域名綁定,這樣才能保證用戶訪問到的只有最新代碼的服務(wù)器。

(2)數(shù)據(jù)庫上線

生成數(shù)據(jù)庫項目時,可以先從測試環(huán)境導(dǎo)出數(shù)據(jù)庫對象定義腳本,然后再將預(yù)先部署腳本、數(shù)據(jù)庫對象定義和后期部署腳本合并為一個生成腳本,再將該腳本拿到主數(shù)據(jù)庫服務(wù)器上生成數(shù)據(jù)庫。然后通過主數(shù)據(jù)庫備份到各臺從屬數(shù)據(jù)庫。

如果系統(tǒng)對讀取及時性要求非常高,則可在數(shù)據(jù)庫層之上架構(gòu)Redis這樣的分布式緩存,其性能肯定遠(yuǎn)高于從數(shù)據(jù)庫讀取數(shù)據(jù)。

(3)程序文件編譯上線

  • 組件部署:將C/C++或Java編寫的組件編譯,然后通過自動部署工具發(fā)布到所有Web服務(wù)器。
  • Web前端部署:一般先將靜態(tài)資源(例如圖片、JS代碼等)拆分出來,發(fā)布到CDN云服務(wù)。然后再通過GIT將合并測試通過的Trunk版本發(fā)布到正式生產(chǎn)環(huán)境,再通過灰度發(fā)布工具同步到所有Web服務(wù)器。
  • IOS APP發(fā)布:App Stores是iTunes Store的一部分,是iPhone、iPod Touch、iPad以及Mac唯一的正規(guī)下載渠道。企業(yè)用戶申請證書后,即可上傳并發(fā)布IOS應(yīng)用。
  • Android APP發(fā)布:推薦騰訊應(yīng)用寶發(fā)布安卓版本的手機(jī)應(yīng)用。應(yīng)用寶提供防盜版功能,可有效幫助用戶解決誤下載山寨應(yīng)用的問題。支持點(diǎn)擊微信、QQ分享鏈接,即可打開下載界面。因為沒有唯一的安卓發(fā)布市場,因此建議主流安卓市場都能上線安卓的版本。

(4)上線版本整體評估

上線評估階段需經(jīng)過市場、產(chǎn)品、運(yùn)營、開發(fā)、測試等對于上線做出整體評估后才能正式上線運(yùn)營。這個過程一般是由產(chǎn)品經(jīng)理先在全員群里提醒大家最后一次確認(rèn)還有什么問題。

如果有任何問題,則需要在群里和相關(guān)人員評估是否要在當(dāng)前版本解決,如果是則盡快解決以免影響版本發(fā)布計劃,如果不是則轉(zhuǎn)需求到后續(xù)版本。

如果每個人都沒有提出異議則發(fā)出上線版本發(fā)布告知郵件,進(jìn)入正式發(fā)布流程。

(5)灰度發(fā)布

Web前端灰度發(fā)布:對比較小的Web應(yīng)用,在頁面javascript或服務(wù)器端實現(xiàn)分流即可。但對于大規(guī)模用戶的Web應(yīng)用,采用分流發(fā)布引擎很有必要。

組件灰度發(fā)布:

IOS APP灰度發(fā)布:常見做法是制作一個帶數(shù)字簽名的測試版,然后提供給測試用戶使用。

Android APP灰度發(fā)布:由于Android沒有統(tǒng)一的發(fā)布渠道,因此只需逐個替換發(fā)布渠道的安裝包即可。

10、優(yōu)化階段

(1)研發(fā)工作總結(jié)

產(chǎn)品上線后需要對產(chǎn)品研發(fā)過程做總結(jié),不論是產(chǎn)品上的還是流程配合上的,為后續(xù)加強(qiáng)溝通協(xié)作、產(chǎn)品運(yùn)營打好基礎(chǔ)。

產(chǎn)品流程也并不是一成不變的,不同的產(chǎn)品有不同的要求。對一些中小互聯(lián)網(wǎng)公司而言,采用完整研發(fā)流程必然成本高昂,因此如何裁剪成自己需要的研發(fā)流程,是這類公司面臨的關(guān)鍵問題。

(2)上線后收集用戶反饋

對于產(chǎn)品做出優(yōu)化,對于用戶常見的問題及反饋做出調(diào)整,這階段更多是產(chǎn)品與用戶的磨合,做到更好的用戶體驗。

為了更好的收集用戶反饋,需要在所有產(chǎn)品上都增加反饋入口,以便用戶提交反饋內(nèi)容。用戶反饋的所有問題將出現(xiàn)在用戶反饋平臺中,以便產(chǎn)品和運(yùn)營團(tuán)隊跟進(jìn)。

支付寶用戶反饋平臺

一般每天的反饋量都數(shù)以萬計,因此產(chǎn)品設(shè)計師每天都需要花費(fèi)相當(dāng)比例的時間去瀏覽,并將反饋建議轉(zhuǎn)化產(chǎn)品需求點(diǎn)加入需求池。

(3)產(chǎn)品體驗可用性測試

可用性測試常見方法是邀請一批真實的典型客戶,針對典型場景使用產(chǎn)品,用戶研究員在一旁觀察、聆聽、記錄,從而發(fā)現(xiàn)產(chǎn)品中存在的可用性缺陷。

為什么需要可用性測試呢?這是因為產(chǎn)品運(yùn)營團(tuán)隊的員工往往潛意識里會認(rèn)為用戶一定會怎樣操作,但是事實上用戶很大概率上都不會按照他們希望的進(jìn)行操作,甚至?xí)萑朊H桓居貌幌氯?。而通過可用性測試,就可以找到問題點(diǎn),通過優(yōu)化體驗設(shè)計降低用戶使用門檻。

騰訊UER團(tuán)隊用戶參與體驗調(diào)研流程

(4)運(yùn)維系統(tǒng)優(yōu)化

產(chǎn)品上線后運(yùn)維工作才剛開始,具體包括升級版本上線工作、服務(wù)監(jiān)控、應(yīng)用狀態(tài)統(tǒng)計、日常服務(wù)狀態(tài)巡檢、突發(fā)故障處理、服務(wù)日常變更調(diào)整、集群管理、服務(wù)性能評估優(yōu)化、數(shù)據(jù)庫管理優(yōu)化、隨著應(yīng)用PV增減進(jìn)行應(yīng)用架構(gòu)的伸縮、安全、運(yùn)維開發(fā)等工作。

五、小結(jié)

因為互聯(lián)網(wǎng)業(yè)務(wù)不盡相同,因此各個公司采用的研發(fā)模型自然也各有千秋。但是大致的研發(fā)流程和各個角色的執(zhí)行方法論,卻是大同小異。特別是產(chǎn)品研發(fā)思路,大多都是遵循“快速迭代”、“敏捷開發(fā)”、”柔性擴(kuò)展”、“穩(wěn)定高效”的原則。

 

作者:吳濤

來源:微信公眾號:吳濤的好友圈

本文由 @吳濤 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

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

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

    來自四川 回復(fù)
  2. 干貨!

    回復(fù)
  3. 老師您好,我是騰訊TAPD社區(qū)的運(yùn)營minim,看到您的【互聯(lián)網(wǎng)產(chǎn)品研發(fā)流程概論
    】這篇內(nèi)容非常精彩,請問是否可以轉(zhuǎn)載到TAPD社區(qū)呢?如果可以的話,會標(biāo)注好出處和作者的(TAPD是用戶討論敏捷研發(fā)、項目管理經(jīng)驗的產(chǎn)品社區(qū),網(wǎng)址:https://www.tapd.cn/forum)

    來自廣東 回復(fù)
  4. 贊,文章內(nèi)容很實用,我們項目管理和產(chǎn)品管理用的Worktile的工具,也還不錯

    來自北京 回復(fù)
  5. 這文章一字不差的看完 治好了我半個月來的頭痛

    來自廣東 回復(fù)
  6. 我的媽,感覺產(chǎn)品經(jīng)理干了全公司的活

    來自江蘇 回復(fù)
  7. 嘖嘖嘖···

    來自福建 回復(fù)
  8. 著實干貨,可以轉(zhuǎn)行做項目經(jīng)理了 ??

    來自上海 回復(fù)
  9. 太干活了,思路很清晰~贊~

    來自北京 回復(fù)
  10. 學(xué)習(xí)了

    來自浙江 回復(fù)
  11. 贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊

    來自新加坡 回復(fù)
  12. 好文章

    來自廣東 回復(fù)
  13. 都是干貨,受教了

    來自廣東 回復(fù)
  14. 都是干貨 贊一個

    來自北京 回復(fù)
  15. ELLa 整篇文章很贊,都是干貨

    來自江蘇 回復(fù)
  16. 良心文章

    來自河北 回復(fù)
  17. 幾個月么見到這樣靠譜的

    來自浙江 回復(fù)