一泵殴、灰度發(fā)布(百度百科解釋)
灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間涮帘,能夠平滑過渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing笑诅,即讓一部分用戶繼續(xù)用產(chǎn)品特性A调缨,一部分用戶開始用產(chǎn)品特性B,如果用戶對B沒有什么反對意見吆你,那么逐步擴(kuò)大范圍弦叶,把所有用戶都遷移到B上面來「径啵灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定伤哺,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度立莉。
灰度期:灰度發(fā)布開始到結(jié)束期間的這一段時(shí)間绢彤,稱為灰度期。
今天被人詢問灰度發(fā)布蜓耻,ios上面支不支持灰度發(fā)布茫舶。一時(shí)懵逼,因?yàn)橹半m然聽過類似的名詞刹淌,但沒有真正查找做過饶氏,這一次尷尬自然不能有下一次了。
經(jīng)了解有勾,App Store發(fā)布App產(chǎn)品除了傳統(tǒng)的手動發(fā)布疹启,自動發(fā)布外,還有一個(gè)分階段發(fā)布蔼卡,這個(gè)分階段發(fā)布就是灰度發(fā)布宏赘,
登錄 itunes 后臺赵誓,你就可以看到在應(yīng)用版本號的最下方哩盲,有“Phased Release for Automatic Updates” 選擇項(xiàng)度秘。
這個(gè) Phased Release for Automatic Updates趋急,就是蘋果提供的灰度機(jī)制喝峦,只是蘋果把這個(gè)叫做自動更新的分階段發(fā)布。該灰度發(fā)布機(jī)制將灰度分為七天呜达,七天共七個(gè)階段谣蠢。第一天發(fā)布 1%的用戶,第二天發(fā)布 2%查近,之后快速上升眉踱,第六天發(fā)布 50%用戶,最后一天發(fā)布到所有用戶霜威。
二谈喳、蘋果的分階段發(fā)布特點(diǎn)
1,分階段時(shí)間為7天戈泼,第七天對全部人群發(fā)布婿禽,已打開自動更新的 iOS 用戶;
2大猛,在分階段發(fā)布期間每天完成自動更新的用戶的百分比將顯示在iTunes Connect中
3扭倾,所有老用戶仍然可以直接從App Store手動更新應(yīng)用,而新客戶將始終看到最新版本挽绩。用戶就是不在當(dāng)天分階段發(fā)布之列膛壹,仍然可以手動更新當(dāng)前版本
4,如果發(fā)現(xiàn)版本更新中發(fā)現(xiàn)有問題,可以隨時(shí)暫停分階段發(fā)布模聋,總共最多30天肩民,而不管暫停次數(shù)。版本更新暫停超過30天后链方,發(fā)布將在暫停的那一天恢復(fù)此改,將無法再次暫停發(fā)行。
5侄柔,分階段發(fā)布不能選擇特定的人群(如年齡共啃、性別,領(lǐng)域或設(shè)備信息暂题,如操作系統(tǒng)版本或設(shè)備類型)移剪,為隨機(jī)選擇。
6薪者,在分階段發(fā)布期間纵苛,開啟自動更新的用戶完成自動更新,用戶不會受到通知言津。用戶自身不知在體驗(yàn)灰度版本攻人,沒有相關(guān)機(jī)制提示
三、自動更新的分階段發(fā)布的利弊
利:
1悬槽,發(fā)現(xiàn)新問題怀吻,可及時(shí)暫停分階段發(fā)布,將損失降到最低初婆。
2蓬坡,加速產(chǎn)品的發(fā)布進(jìn)程,減少測試周期磅叛。
弊:
1屑咳,只能選擇老用戶更新時(shí)的灰度,也就是說新用戶安裝的都是新版弊琴。
2兆龙,在群體的選擇上是隨機(jī)的,抽到的用戶不能代表全局用戶特征敲董,統(tǒng)計(jì)誤差不定紫皇,有可能很大,也有可能很小臣缀。
3坝橡,灰度發(fā)布的新版本一旦出現(xiàn)問題是無法回滾的,在修復(fù)版開發(fā)完成重新發(fā)布審核上架之前精置,已經(jīng)更新的用戶只能繼續(xù)用bug版本计寇。
4,只能做較大的灰度測試,無法針對功能較小模塊甚至代碼片段做灰度番宁。
四元莫、針對性實(shí)現(xiàn)灰度發(fā)布策略
針對以上出現(xiàn)的弊端,又想用灰度發(fā)布機(jī)制蝶押,有人想到結(jié)合TestFlight測試版本發(fā)布安裝機(jī)制踱蠢,做一款屬于“內(nèi)測”版本的灰度發(fā)布,發(fā)布之后根據(jù)運(yùn)行情況棋电,該TestFlight版本是有bug暫停茎截,還是直接轉(zhuǎn)App Store正式發(fā)布,是一個(gè)不錯(cuò)的選擇赶盔。
TestFlight 的限制和特點(diǎn):
1企锌,需要運(yùn)行在 iOS8 及以上版本的設(shè)備上
2,需要安裝 TestFlight App
3于未,有效時(shí)間(90天)
4撕攒,測試人員有最大上限(最多10000)
5,TestFlight版本烘浦,可以提交反饋
6抖坪,TestFlight版本,需要審核(1天左右)
7闷叉,TestFlight版本擦俐,可以生成公開鏈接,并且可以修改公開鏈接用于安裝(https://testflight.apple.com/join/xxxxxx)片习,安裝鏈接(itms-beta://testflight.apple.com/join/xxxxxx)
整體灰度發(fā)布的邏輯思路
該流程特點(diǎn)
1捌肴,可以根據(jù)用戶id判斷用戶是否滿足我們要發(fā)布版本的對象用戶
2蹬叭,需要判斷用戶手機(jī)是否安裝testflight藕咏,否則無法安裝testflight測試版本
該灰度發(fā)布實(shí)現(xiàn)完全沒有使用到蘋果官方提供的分階段發(fā)布,而是結(jié)合testflight測試版本來實(shí)現(xiàn)的秽五。10000安裝使用數(shù)量孽查,一定程度上已經(jīng)足以滿足版本的各種測試。
該策略實(shí)現(xiàn)的灰度發(fā)布坦喘,也有些弊端盲再。比如,安裝testflight測試版本出現(xiàn)問題瓣铣,也無法版本回滾答朋,只有在發(fā)布新的更正版本后才能避免bug。但是在聲名“內(nèi)測”版本棠笑,并且安裝用戶數(shù)量在10000以內(nèi)情況梦碗,這種更具有針對性的灰度發(fā)布還是很有優(yōu)勢的。
五、除了灰度發(fā)布之外其他有名發(fā)布或者部署策略
冰凍三尺非一日之寒洪规,單單知道灰度發(fā)布并不足以我下次被詢問時(shí)一定不會“尷尬”印屁。
1,藍(lán)綠部署
藍(lán)綠部署斩例,是指同時(shí)運(yùn)行兩個(gè)版本的應(yīng)用雄人。一般應(yīng)用后臺服務(wù)端,還得是做負(fù)載均衡的后臺應(yīng)用念赶。新版本發(fā)布后础钠,老版本不會立刻關(guān)閉,而是會同時(shí)運(yùn)行一段時(shí)間叉谜,等新版本的后臺應(yīng)用運(yùn)行穩(wěn)定后老版本關(guān)閉珍坊。
使用藍(lán)綠部署,硬件需求很高正罢,使用藍(lán)綠部署的硬件至少是日常所需的兩倍阵漏。
2,滾動發(fā)布
滾動升級翻具,就是在升級過程中履怯,并不一下子啟動所有新版本,是先啟動一臺新版本裆泳,再停止一臺老版本叹洲,然后再啟動一臺新版本,再停止一臺老版本工禾,直到升級完成运提,這樣的話,如果日常需要10臺服務(wù)器闻葵,那么升級過程中也就只需要11臺就行了民泵。
但是滾動升級有一個(gè)問題,在開始滾動升級后槽畔,流量會直接流向已經(jīng)啟動起來的新版本栈妆,但是這個(gè)時(shí)候,新版本是不一定可用的厢钧,比如需要進(jìn)一步的測試才能確認(rèn)鳞尔。那么在滾動升級期間,整個(gè)系統(tǒng)就處于非常不穩(wěn)定的狀態(tài)早直,如果發(fā)現(xiàn)了問題寥假,也比較難以確定是新版本還是老版本造成的問題。
遇到霞扬,記錄糕韧,分享~~
喜歡的點(diǎn)個(gè)贊拾给,大神路過要指點(diǎn)的,歡迎下方留言兔沃!
相關(guān)參考鏈接
1蒋得,https://itunespartner.apple.com/en/apps/faq/Managing%20Your%20Apps_Submission%20Process