互聯(lián)網(wǎng)產(chǎn)品研發(fā)流程概論
互聯(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é)議
干活
干貨!
老師您好,我是騰訊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)
贊,文章內(nèi)容很實用,我們項目管理和產(chǎn)品管理用的Worktile的工具,也還不錯
這文章一字不差的看完 治好了我半個月來的頭痛
我的媽,感覺產(chǎn)品經(jīng)理干了全公司的活
嘖嘖嘖···
著實干貨,可以轉(zhuǎn)行做項目經(jīng)理了 ??
太干活了,思路很清晰~贊~
學(xué)習(xí)了
贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊贊
好文章
都是干貨,受教了
都是干貨 贊一個
ELLa 整篇文章很贊,都是干貨
良心文章
幾個月么見到這樣靠譜的