問題和現(xiàn)狀
產(chǎn)品會(huì)在臨上線一兩天提出需求變更
在需求評(píng)審階段晚树,看不出問題,在執(zhí)行階段雅采,發(fā)現(xiàn)邏輯需要修改爵憎。
領(lǐng)導(dǎo)臨時(shí)加需求,往往導(dǎo)致加班
上線壓力大婚瓜,有點(diǎn)亂纲堵,有點(diǎn)急,風(fēng)險(xiǎn)高闰渔,容易出現(xiàn)遺漏問題,臨時(shí)版本多
在開發(fā)過程中铐望,需求仍然不確定冈涧,導(dǎo)致反復(fù)修改,相關(guān)人員對(duì)同一問題的理解偏差較大
后端擴(kuò)展個(gè)信息正蛙,測(cè)試增加測(cè)試案例等等都可能導(dǎo)致客戶端進(jìn)行修改督弓。
原因分析
從后臺(tái)到移動(dòng)客戶端整個(gè)流程太長,涉及人員太多乒验。溝通不充分和依賴等待造成的浪費(fèi)很大
單純的word文檔愚隧,或者口頭說,比較抽象锻全。評(píng)審環(huán)節(jié)必不可少狂塘,不過光靠評(píng)審是不夠的。發(fā)現(xiàn)的風(fēng)險(xiǎn)鳄厌,評(píng)估的工作量等都不是很準(zhǔn)確荞胡。
交互設(shè)計(jì)畢竟是模型,跟實(shí)際程序相差比較大了嚎。如果做高保真模型泪漂,產(chǎn)品將擠占更多的開發(fā)測(cè)試時(shí)間廊营,導(dǎo)致設(shè)計(jì)和實(shí)際程序落差更大,開發(fā)的加班更多
PC和APP共用一套后臺(tái)萝勤,耦合嚴(yán)重露筒,APP開發(fā)“PC思維無線化”現(xiàn)象嚴(yán)重
開發(fā)版本直接上線運(yùn)行,中間缺少緩沖敌卓,風(fēng)險(xiǎn)較大
缺乏概要設(shè)計(jì)和充分的驗(yàn)證慎式,導(dǎo)致邊開發(fā)邊改需求,造成不必要的浪費(fèi)和混亂假哎。
開發(fā)瞬捕、驗(yàn)證、上線三個(gè)關(guān)鍵動(dòng)作集中處理舵抹,壓力大肪虎,風(fēng)險(xiǎn)高
如何解決?
在APP和后臺(tái)服務(wù)之間增加“獨(dú)立網(wǎng)關(guān)”惧蛹,獨(dú)立開發(fā)扇救,獨(dú)立部署,作為“APP的后臺(tái)香嗓,后臺(tái)服務(wù)的前端”迅腔。
APP和PC各自擁有“獨(dú)立網(wǎng)關(guān)”,根據(jù)各自特點(diǎn)獨(dú)立開發(fā)靠娱,獨(dú)立部署沧烈,實(shí)現(xiàn)解耦,解決“PC思維無線化”問題像云。
以上兩點(diǎn)可以參考1號(hào)店架構(gòu)師王慶友寫的架構(gòu)文章一個(gè)可供創(chuàng)業(yè)公司參考的移動(dòng)APP服務(wù)端架構(gòu)演進(jìn)方案
- 以APP的“獨(dú)立網(wǎng)關(guān)”為切入點(diǎn)锌雀,將整個(gè)流程分為“APP開發(fā)”和“后臺(tái)開發(fā)”兩個(gè)相互獨(dú)立的部分,解決流程過長的問題迅诬。
- “APP開發(fā)”適合用“迭代開發(fā)”的思維腋逆,與產(chǎn)品和運(yùn)營做更充分的溝通。主要任務(wù)是快速應(yīng)對(duì)需求端的變化侈贷,并將需求變化集中在前端惩歉,為后臺(tái)開發(fā)提供一個(gè)相對(duì)穩(wěn)定的環(huán)境。
- “后臺(tái)開發(fā)”適合采用傳統(tǒng)的“瀑布模型”俏蛮,面向“獨(dú)立網(wǎng)關(guān)”進(jìn)行服務(wù)開發(fā)撑蚌,與終端用戶、產(chǎn)品嫁蛇、運(yùn)營等實(shí)現(xiàn)解耦锨并。主要是實(shí)現(xiàn)高并發(fā),穩(wěn)定可靠的服務(wù)睬棚,從本質(zhì)上提升用戶體驗(yàn)第煮。
- 版本模式分為開發(fā)版本解幼,內(nèi)部試用版本,生產(chǎn)版本包警。
- 開發(fā)版本采用內(nèi)部release的方式撵摆,接開發(fā)服務(wù)器,使用者主要是開發(fā)和測(cè)試害晦。
- 內(nèi)部試用版本接“獨(dú)立的真實(shí)服務(wù)器”特铝,用戶總數(shù)受控制,比如100個(gè)壹瘟。iOS版本在審核期間也可以接這個(gè)版本鲫剿,可以提供提供幾個(gè)“超級(jí)用戶”,方便審核人員審核稻轨。使用者主要是產(chǎn)品灵莲,運(yùn)營,以及經(jīng)過篩選的“認(rèn)證用戶”殴俱,比如公司領(lǐng)導(dǎo)政冻、外部合作商戶、內(nèi)部員工线欲、鐵桿粉絲等等明场。
- 生產(chǎn)版本接“正式的生產(chǎn)服務(wù)器”,用戶比例受控制李丰,采用“灰度發(fā)布”的方式苦锨,逐步放開用戶量。使用者主要是產(chǎn)品和運(yùn)營趴泌。
- 將發(fā)布逆屡、驗(yàn)證、上線三個(gè)關(guān)鍵節(jié)點(diǎn)在時(shí)間上錯(cuò)開
流程改進(jìn)
- 第一級(jí):“瀑布模型”踱讨,分為“APP開發(fā)”和“后臺(tái)開發(fā)”兩個(gè)階段,面向“獨(dú)立網(wǎng)關(guān)”進(jìn)行開發(fā)砍的。
- “APP開發(fā)”優(yōu)先痹筛,主動(dòng)應(yīng)對(duì)領(lǐng)導(dǎo)、產(chǎn)品廓鞠、運(yùn)營等的變更需求帚稠;讓抽象的設(shè)計(jì)盡早變成實(shí)際可用的產(chǎn)品。
- “后臺(tái)開發(fā)”待變更基本穩(wěn)定之后床佳,基于特定的APP產(chǎn)品提供具體的實(shí)現(xiàn)滋早,專注于高并發(fā)的處理和安全性。
- 第二級(jí):“APP開發(fā)”實(shí)行“迭代開發(fā)”砌们「唆铮“后臺(tái)開發(fā)”采用“瀑布模型”搁进。
- 視覺、開發(fā)昔头、測(cè)試饼问、網(wǎng)關(guān)等組成“虛擬的小團(tuán)隊(duì)”,指定一個(gè)負(fù)責(zé)人揭斧,面向具體業(yè)務(wù)開發(fā)莱革。
- 人數(shù)限定在10人左右。
- 實(shí)行“每日站立會(huì)議”制度讹开,每人限時(shí)1分鐘盅视,講清楚(a)昨天做了什么(b)今天做什么(c)需要什么協(xié)助。
- 如果能能將“虛擬的小團(tuán)隊(duì)”的座位調(diào)在一起旦万,成立“作戰(zhàn)室”闹击,效果會(huì)更好
- 管理工具適合迭代模型的“JIRA”
- 第三級(jí):在一個(gè)迭代周期中,實(shí)行“瀑布模型”纸型。分為“概要設(shè)計(jì)”(5工作日)拇砰,“開發(fā)測(cè)試”(10工作日),“版本驗(yàn)收&&下一版本的需求評(píng)審”(5工作日)三個(gè)階段狰腌〕疲總時(shí)間約為4周,1月1次版本迭代琼腔」宸悖可以簡(jiǎn)單地以月初為起點(diǎn),月末為截止點(diǎn)丹莲。
- “概要設(shè)計(jì)”:本階段的輸入是“評(píng)審后的交互設(shè)計(jì)”光坝,需求已經(jīng)基本穩(wěn)定。
開發(fā)進(jìn)行概要設(shè)計(jì)甥材,在團(tuán)隊(duì)內(nèi)部討論實(shí)現(xiàn)方案盯另,對(duì)于原型中邏輯不落地的情況及時(shí)提出修改意見。
“獨(dú)立網(wǎng)關(guān)”設(shè)計(jì)API接口洲赵,能接的后臺(tái)系統(tǒng)就接上鸳惯,不能接的,提供修改界面叠萍,給測(cè)試錄入測(cè)試用例數(shù)據(jù)芝发。
測(cè)試設(shè)計(jì)測(cè)試用例,并在“獨(dú)立網(wǎng)關(guān)”上輸測(cè)試用例苛谷,創(chuàng)建Mock數(shù)據(jù)辅鲸。
視覺進(jìn)行頁面設(shè)計(jì),有問題或者變更及時(shí)和開發(fā)測(cè)試溝通腹殿。
領(lǐng)導(dǎo)独悴、產(chǎn)品例书、運(yùn)營等需求方原則上不要再變更需求,不過實(shí)在有必要雾叭,這是最后的變更機(jī)會(huì)落蝙,這個(gè)階段變更的代價(jià)還是可接受的筏勒。- “開發(fā)測(cè)試”:開發(fā)厨埋、網(wǎng)關(guān)荡陷、測(cè)試废赞、視覺等進(jìn)入實(shí)際的執(zhí)行階段唉地,以“虛擬小團(tuán)隊(duì)”模式進(jìn)行传透,“每日站會(huì)”也可以開展起來朱盐,團(tuán)隊(duì)內(nèi)部及時(shí)溝通兵琳。
領(lǐng)導(dǎo)闰围、產(chǎn)品、運(yùn)營等需求方在這個(gè)階段不要提需求變更校仑,給執(zhí)行團(tuán)隊(duì)一段穩(wěn)定的干活時(shí)間迄沫。如果有興趣泰佳,可以參與相關(guān)“虛擬小團(tuán)隊(duì)”的“每日站會(huì)”逝她,及時(shí)了解進(jìn)展?fàn)顩r黔宛,能提供相應(yīng)幫助就更好了。- “版本驗(yàn)收&&下一版本的需求評(píng)審”:產(chǎn)品和運(yùn)營團(tuán)隊(duì)接管產(chǎn)品,進(jìn)行驗(yàn)收。如果條件允許回右,可以切換到“內(nèi)部試用真實(shí)服務(wù)器”渺氧,這取決于后臺(tái)開發(fā)狀況。根據(jù)實(shí)際產(chǎn)品體驗(yàn)情況蹬屹,提出下一版本的需求變更侣背。評(píng)審下一版本的需求。
開發(fā)在這個(gè)階段做新需求的技術(shù)預(yù)研慨默,驗(yàn)收階段的hotfix贩耐,代碼重構(gòu),歷史遺漏bug的解決等事項(xiàng)厦取。為下一階段的開始做好充分的準(zhǔn)備潮太。- 管理工具適合瀑布模型的“禪道”
獨(dú)立網(wǎng)關(guān)
APP端的API為iOS、Android、weex铡买、H5統(tǒng)一提供數(shù)據(jù)服務(wù)
對(duì)多個(gè)后臺(tái)服務(wù)做聚合更鲁,對(duì)APP提供粗粒度的數(shù)據(jù),以減少遠(yuǎn)程網(wǎng)絡(luò)調(diào)用次數(shù)奇钞。比如當(dāng)前的首頁要訪問4次網(wǎng)絡(luò)澡为,可以在這里進(jìn)行“聚合”,讓APP只要一次網(wǎng)絡(luò)訪問景埃,就能展示必要數(shù)據(jù)媒至。
提供服務(wù)器切換功能。根據(jù)版本號(hào)纠亚,可以切換“開發(fā)服務(wù)器”塘慕,“內(nèi)部試用服務(wù)器”,“正式服務(wù)器”三種蒂胞。對(duì)APP提供統(tǒng)一的訪問地址图呢。
提供后臺(tái)配置功能,有些地方叫CMS骗随。在開發(fā)階段蛤织,可以給測(cè)試配置測(cè)試案例,正式使用時(shí)給運(yùn)營配置動(dòng)態(tài)數(shù)據(jù)鸿染。
提供緩存數(shù)據(jù)服務(wù)指蚜。如果后臺(tái)服務(wù)沒好,可以在這里提供開發(fā)需要的Mock數(shù)據(jù)涨椒,讓整個(gè)流程形成閉環(huán)摊鸡。
提供公共邏輯,比如安全蚕冬,監(jiān)控免猾,日志等,也可以配合后臺(tái)加鎖囤热,加隊(duì)列猎提,減輕數(shù)據(jù)庫訪問壓力等等。
提供“智能升降級(jí)”功能旁蔼,隔離問題接口
提供流量控制開關(guān)锨苏,為“灰度發(fā)布”提供技術(shù)基礎(chǔ)
關(guān)鍵點(diǎn)
與傳統(tǒng)模式的核心區(qū)別是:由“后臺(tái)功能推動(dòng)” 演變?yōu)?“前端需求拉動(dòng)”。后臺(tái)可以延后一個(gè)或者半個(gè)周期實(shí)現(xiàn)棺聊,面向“獨(dú)立網(wǎng)關(guān)”的數(shù)據(jù)接口編程伞租。在溝通上,大家討論的“標(biāo)的”由以前的“想法限佩、Word文檔葵诈、交互原型、設(shè)計(jì)圖、動(dòng)畫驯击、demo... ...”轉(zhuǎn)變?yōu)椤皩?shí)實(shí)在在的產(chǎn)品”(應(yīng)該說是半成品,后臺(tái)數(shù)據(jù)落地就是成品了)耐亏。
App開發(fā)和PC開發(fā)相互獨(dú)立徊都,互不影響。PC和APP的特性不同广辰,沒有必要強(qiáng)調(diào)一致暇矫,也沒有必要同步發(fā)展。
由后臺(tái)“技術(shù)驅(qū)動(dòng)”择吊,改為前臺(tái)“需求拉動(dòng)”李根,將一個(gè)很長的技術(shù)鏈分為兩個(gè)階段,面向“獨(dú)立網(wǎng)關(guān)”這個(gè)接口編程
是中間產(chǎn)品几睛,是半成品房轿,并不僅僅是Mock數(shù)據(jù)。在開發(fā)服務(wù)器上所森,70%以上的接口都是真正接上的囱持,只有不超過30%的新增接口,才會(huì)在“獨(dú)立網(wǎng)關(guān)”上先定義APP API焕济,然后提供Mock數(shù)據(jù)纷妆。并且這個(gè)mock數(shù)據(jù)由測(cè)試選取“典型的測(cè)試案例”,“獨(dú)立網(wǎng)關(guān)”提供通用的key-value數(shù)據(jù)庫晴弃,以這個(gè)API的id為key掩幢,內(nèi)容就是一個(gè)json。在后期的性能提升中上鞠,這個(gè)通用的key-value數(shù)據(jù)庫還可以作為緩存服務(wù)存在际邻。
真正的開發(fā)時(shí)間還是“2周不變”∑旃“設(shè)計(jì)一周”是為了加強(qiáng)技術(shù)團(tuán)隊(duì)內(nèi)部的溝通枯怖,包括開發(fā)之間,開發(fā)與測(cè)試之間的溝通能曾《认酰“驗(yàn)收一周”是為了加強(qiáng)技術(shù)部門與需求部門之間的溝通。
瀑布模型優(yōu)點(diǎn)是風(fēng)險(xiǎn)管控嚴(yán)格寿冕,適合后臺(tái)開發(fā)蕊程。迭代模型優(yōu)點(diǎn)是溝通方便,適合APP客戶端驼唱。以“獨(dú)立網(wǎng)關(guān)”為切入點(diǎn)藻茂,兩邊用不同的開發(fā)模型
職能型組織有利于專業(yè)技術(shù)積累。項(xiàng)目型組織有利于消除部門墻,利益趨向一致辨赐∮欧“開發(fā)的兩周”采用項(xiàng)目型組織,專注于目標(biāo)的達(dá)成掀序;“技術(shù)和驗(yàn)收的兩周”采用職能型組織帆焕,重點(diǎn)在技術(shù)的積累。