布計(jì)劃如何避免假交付?落地的發(fā)布管理實(shí)戰(zhàn)指南)
“ITIL4發(fā)布計(jì)劃90%的運(yùn)維團(tuán)隊(duì)都在‘假交付’”——這個(gè)標(biāo)題我在行業(yè)群里看到第一眼就樂(lè)了數(shù)據(jù)是否精確到90%我不較真但“假交付”這三個(gè)字確實(shí)戳中了我這些年見(jiàn)過(guò)的太多運(yùn)維團(tuán)隊(duì)。什么叫假交付就是你發(fā)布計(jì)劃寫了、評(píng)審過(guò)了、變更窗口也執(zhí)行了版本也上線了但業(yè)務(wù)方?jīng)]感知、用戶沒(méi)體驗(yàn)、價(jià)值沒(méi)落地甚至上線后三天兩頭回滾——整個(gè)流程走得像模像樣唯獨(dú)“交付”這件事本身沒(méi)發(fā)生。我在甲方乙方都待過(guò)見(jiàn)過(guò)太多這樣的團(tuán)隊(duì)ITIL體系文件厚厚一摞發(fā)布計(jì)劃模板精美得像咨詢公司交付物但問(wèn)一個(gè)簡(jiǎn)單的問(wèn)題——“這次發(fā)布到底給業(yè)務(wù)解決了什么問(wèn)題、產(chǎn)生了什么可衡量的結(jié)果”——沒(méi)人答得上來(lái)。這是流程的錯(cuò)嗎不是。是ITIL4本身過(guò)時(shí)了嗎也不是。真正的問(wèn)題在于很多團(tuán)隊(duì)把ITIL4的發(fā)布計(jì)劃做成了“過(guò)程合規(guī)”的表演而不是“價(jià)值交付”的工具。這篇內(nèi)容我打算聊透三件事第一為什么多數(shù)發(fā)布計(jì)劃是“假交付”第二真正的ITIL4發(fā)布計(jì)劃應(yīng)該怎么設(shè)計(jì)才不是紙上談兵第三落到實(shí)操上一份能直接抄作業(yè)的發(fā)布計(jì)劃模板、避坑清單、以及我在幾個(gè)真實(shí)項(xiàng)目里總結(jié)的排查經(jīng)驗(yàn)。適合運(yùn)維負(fù)責(zé)人、發(fā)布經(jīng)理、SRE、以及正在搞ITIL4流程落地的同學(xué)參考。1. 先搞清楚為什么說(shuō)多數(shù)發(fā)布計(jì)劃是“假交付”1.1 “假交付”的三種典型面孔我總結(jié)了三種最常見(jiàn)的假交付表現(xiàn)你對(duì)照自己的團(tuán)隊(duì)看看中了幾條。第一種叫文檔型交付。發(fā)布計(jì)劃寫得特別完整背景、目標(biāo)、范圍、風(fēng)險(xiǎn)、回滾方案、干系人一應(yīng)俱全。但仔細(xì)一看全是套話?!氨敬伟l(fā)布旨在提升系統(tǒng)穩(wěn)定性”——什么叫提升穩(wěn)定性提升多少怎么衡量沒(méi)有。更離譜的有些發(fā)布計(jì)劃里的回滾方案寫的是“如發(fā)布失敗聯(lián)系開(kāi)發(fā)同學(xué)處理”這等于沒(méi)寫。這種文檔存在的唯一意義是讓變更審批人在發(fā)布評(píng)審會(huì)上有東西可以簽字。第二種叫儀式型交付。周二的發(fā)布窗口雷打不動(dòng)評(píng)審會(huì)必須開(kāi)郵件必須發(fā)審批必須走完。但整個(gè)團(tuán)隊(duì)心里都清楚這個(gè)發(fā)布其實(shí)根本沒(méi)有業(yè)務(wù)必要性純粹是因?yàn)椤傲鞒桃蟆薄0姹灸苌暇蜕喜荒苌暇透钠跇I(yè)務(wù)的真實(shí)需求被晾在一邊。久而久之發(fā)布計(jì)劃變成了一種周期性儀式大家開(kāi)會(huì)討論的不是“這個(gè)功能該不該上、怎么上”而是“流程上還缺哪個(gè)簽字”。第三種叫過(guò)程型交付。發(fā)布執(zhí)行成功監(jiān)控正常團(tuán)隊(duì)?wèi)c祝郵件通報(bào)“XX系統(tǒng)已于XX時(shí)完成發(fā)布運(yùn)行穩(wěn)定”。但一個(gè)月后復(fù)盤業(yè)務(wù)指標(biāo)沒(méi)有任何變化用戶沒(méi)有任何感知甚至這個(gè)功能壓根沒(méi)幾個(gè)人用。技術(shù)層面的發(fā)布成功了業(yè)務(wù)層面的交付失敗了——發(fā)布計(jì)劃從頭到尾沒(méi)人定義過(guò)“成功”的業(yè)務(wù)標(biāo)準(zhǔn)是什么。這三種面孔本質(zhì)上指向同一個(gè)問(wèn)題發(fā)布計(jì)劃被窄化成了“技術(shù)上線計(jì)劃”。ITIL4從來(lái)不反對(duì)流程反對(duì)的是把流程當(dāng)目的。發(fā)布計(jì)劃的終點(diǎn)不是版本上線而是價(jià)值生效。1.2 ITIL4視角發(fā)布計(jì)劃的目標(biāo)已經(jīng)從“按時(shí)上線”變成“交付價(jià)值”ITIL4和老版本最大的區(qū)別在于它把整個(gè)IT服務(wù)管理從“流程視角”切換成了“價(jià)值視角”。在ITIL v3時(shí)代發(fā)布管理是一個(gè)獨(dú)立的流程節(jié)點(diǎn)把準(zhǔn)好的版本部署到生產(chǎn)環(huán)境就算完成。但在ITIL4里發(fā)布管理歸屬于“變更賦能實(shí)踐”Change Enablement它不再是孤立的環(huán)節(jié)而是整個(gè)服務(wù)價(jià)值流Service Value Stream當(dāng)中的一個(gè)組成部分。這意味著什么意味著你在做發(fā)布計(jì)劃的時(shí)候腦子里不能只有“什么時(shí)候上、怎么上”還得有“上了之后業(yè)務(wù)能不能感知到、用戶能不能用起來(lái)、組織能不能從中獲得收益”。說(shuō)得直白一點(diǎn)一個(gè)發(fā)布計(jì)劃如果通篇都是技術(shù)指標(biāo)、部署步驟、回滾預(yù)案但沒(méi)有任何一行寫“這次發(fā)布預(yù)期給業(yè)務(wù)帶來(lái)什么改變、用什么指標(biāo)來(lái)判斷成功”那它寫得再漂亮也只是一個(gè)技術(shù)施工方案不是一個(gè)合格的ITIL4發(fā)布計(jì)劃。我自己在實(shí)際項(xiàng)目里有一個(gè)很簡(jiǎn)單的判斷標(biāo)準(zhǔn)發(fā)布計(jì)劃的第一頁(yè)如果業(yè)務(wù)方看完之后不知道該期待什么這份計(jì)劃就是不合格的。讓業(yè)務(wù)方知道“上線后一周內(nèi)訂單查詢耗時(shí)會(huì)從2秒降到0.5秒以下”和讓業(yè)務(wù)方只知道“本次發(fā)布包含性能優(yōu)化若干項(xiàng)”這兩者之間的差距就是真交付和假交付之間的距離。2. ITIL4發(fā)布管理和v3時(shí)代相比到底變了什么2.1 發(fā)布管理在ITIL4四大維度中的位置很多運(yùn)維同學(xué)聊起ITIL4第一反應(yīng)是“又多了一堆新概念”。其實(shí)沒(méi)那么復(fù)雜ITIL4的核心是四個(gè)維度信息與技術(shù)、合作伙伴與供應(yīng)商、價(jià)值流與流程、組織與人。發(fā)布管理這個(gè)實(shí)踐恰恰是四個(gè)維度交匯最密集的地方。先說(shuō)信息與技術(shù)維度。發(fā)布必然涉及代碼、配置、數(shù)據(jù)、文檔這些信息資產(chǎn)也涉及CI/CD工具鏈、部署平臺(tái)這些技術(shù)底座。很多團(tuán)隊(duì)的發(fā)布計(jì)劃在這一維度上做得最順手因?yàn)榧夹g(shù)同學(xué)天然擅長(zhǎng)這部分。但問(wèn)題是孤軍深入越擅長(zhǎng)越偏科。再看合作伙伴與供應(yīng)商維度。你用的云平臺(tái)、第三方組件庫(kù)、外包團(tuán)隊(duì)開(kāi)發(fā)的模塊這些外部依賴的變化會(huì)直接沖擊發(fā)布計(jì)劃。我遇到過(guò)不止一次發(fā)布計(jì)劃里的部署步驟全沒(méi)問(wèn)題結(jié)果卡在第三方接口變更沒(méi)有提前對(duì)齊因?yàn)橛?jì)劃里壓根沒(méi)有這一欄。價(jià)值流與流程維度是ITIL4最強(qiáng)調(diào)的部分。同樣一個(gè)發(fā)布計(jì)劃在傳統(tǒng)視角下是一個(gè)“變更申請(qǐng)-審批-實(shí)施-驗(yàn)證”的流程在ITIL4視角下是一條從“業(yè)務(wù)需求產(chǎn)生”到“用戶價(jià)值實(shí)現(xiàn)”的價(jià)值流發(fā)布計(jì)劃只是其中一段河道它不是起點(diǎn)也不是終點(diǎn)。組織與人維度最容易被忽略。發(fā)布計(jì)劃里的“干系人溝通”如果只是抄送一封郵件那你的發(fā)布計(jì)劃在組織維度就是空的。誰(shuí)要為新功能上線后的一線客服話術(shù)負(fù)責(zé)誰(shuí)要為培訓(xùn)銷售團(tuán)隊(duì)使用新功能負(fù)責(zé)這些如果沒(méi)有明確到具體人發(fā)布后很容易陷入“功能上了但沒(méi)人會(huì)用”的尷尬境地。2.2 發(fā)布計(jì)劃、變更管理和部署管理三者的邊界這是我在實(shí)際輔導(dǎo)里被問(wèn)得最多的問(wèn)題也是很多團(tuán)隊(duì)流程混亂的根源。這三個(gè)概念在ITIL4里其實(shí)邊界很清楚。變更管理Change Enablement管的是“風(fēng)險(xiǎn)控制”核心是回答這個(gè)變動(dòng)要不要做、怎么評(píng)估和降低風(fēng)險(xiǎn)、由誰(shuí)來(lái)批準(zhǔn)。部署管理Deployment Management管的是“物理移動(dòng)”核心是回答代碼和組件如何從一個(gè)環(huán)境搬到另一個(gè)環(huán)境、用什么工具、按什么順序。發(fā)布管理Release Management管的是“價(jià)值生效”核心是回答一個(gè)或多個(gè)變更組合在一起之后如何以可管理的方式交付給用戶并讓用戶真正獲得其中的價(jià)值。用一個(gè)生活化的例子來(lái)說(shuō)。你想把家里的舊廚房改造成開(kāi)放式廚房——這是“變更”你要評(píng)估拆墻的風(fēng)險(xiǎn)、要不要請(qǐng)結(jié)構(gòu)工程師、裝修期間去哪里吃飯。施工隊(duì)進(jìn)場(chǎng)、拆墻、搬材料、安裝櫥柜——這是“部署”是物理層面的動(dòng)作。廚房改造完成、你邀請(qǐng)家人來(lái)一起做飯、真正開(kāi)始使用這個(gè)新空間——這是“發(fā)布”是價(jià)值生效的節(jié)點(diǎn)。很多運(yùn)維團(tuán)隊(duì)的問(wèn)題在于把部署當(dāng)發(fā)布。一套流水線跑完版本上了生產(chǎn)就覺(jué)得“發(fā)布完成了”。但I(xiàn)TIL4的發(fā)布是到“用戶用起來(lái)、業(yè)務(wù)看到結(jié)果”才算數(shù)的。這也是為什么我在后面做發(fā)布計(jì)劃模板時(shí)會(huì)把“價(jià)值指標(biāo)”“干系人啟用計(jì)劃”放進(jìn)發(fā)布計(jì)劃而不是只寫部署技術(shù)細(xì)節(jié)。2.3 為什么說(shuō)ITIL4和敏捷/DevOps不但不沖突反而是互補(bǔ)的很多團(tuán)隊(duì)一說(shuō)“敏捷”“DevOps”就覺(jué)得ITIL4那套太重、太慢、跟速度不兼容。這個(gè)觀點(diǎn)至少過(guò)時(shí)五年了。ITIL4在設(shè)計(jì)上已經(jīng)主動(dòng)吸收了敏捷和DevOps的理念——它強(qiáng)調(diào)“可用性”而不是“完美性”強(qiáng)調(diào)“迭代改進(jìn)”而不是“一次性設(shè)計(jì)到位”強(qiáng)調(diào)“自動(dòng)化盡可能多做”正是為了給人的判斷留出時(shí)間。我在一個(gè)金融客戶的真實(shí)案例里感受過(guò)這種互補(bǔ)關(guān)系。他們有個(gè)核心系統(tǒng)原來(lái)走的是嚴(yán)格的月度發(fā)布窗口一個(gè)版本從開(kāi)發(fā)完成到生產(chǎn)上線要等兩三周業(yè)務(wù)方怨聲載道。后來(lái)我們做ITIL4落地的時(shí)候并沒(méi)有取消發(fā)布管理而是重新做了“發(fā)布類型”的分類低風(fēng)險(xiǎn)的內(nèi)部工具類變更走輕量級(jí)快速通道自動(dòng)化驗(yàn)證通過(guò)后當(dāng)天發(fā)布高風(fēng)險(xiǎn)的客戶資金類變更仍然走完整的風(fēng)險(xiǎn)評(píng)估、審批、演練、分批發(fā)布流程。你看這就是ITIL4的價(jià)值——它不是阻止你快而是幫你識(shí)別“哪些可以快、哪些絕對(duì)不能快”。敏捷負(fù)責(zé)“更快地產(chǎn)生變化”ITIL4負(fù)責(zé)“更聰明地控制變化”。兩者配合得好發(fā)布計(jì)劃才既不會(huì)成為業(yè)務(wù)創(chuàng)新的阻礙又不是掛在墻上的一紙空文。3. 一份真正可落地的ITIL4發(fā)布計(jì)劃應(yīng)該怎么拆3.1 從“功能凍結(jié)”到“發(fā)布回顧”完整發(fā)布周期的六個(gè)階段一份發(fā)布計(jì)劃不是上線當(dāng)天的部署腳本它應(yīng)該覆蓋從“決定要發(fā)什么”到“確認(rèn)價(jià)值生效”的完整周期。我把這個(gè)過(guò)程拆成六個(gè)階段這是我在多個(gè)項(xiàng)目中反復(fù)驗(yàn)證過(guò)的結(jié)構(gòu)你在設(shè)計(jì)自己的發(fā)布計(jì)劃時(shí)可以直接套用。階段一是需求凍結(jié)與范圍鎖定。這個(gè)階段的輸出是一個(gè)明確的發(fā)布范圍清單哪些需求進(jìn)本次發(fā)布、哪些明確不進(jìn)、哪些是變更過(guò)程中新發(fā)現(xiàn)的必須控制住的需求蔓延。鎖定范圍的目的是避免發(fā)布內(nèi)容無(wú)限膨脹導(dǎo)致風(fēng)險(xiǎn)評(píng)估失效。階段二是發(fā)布設(shè)計(jì)。包括技術(shù)方案設(shè)計(jì)、架構(gòu)變更評(píng)估、數(shù)據(jù)遷移方案、依賴關(guān)系梳理。這一階段最容易犯的錯(cuò)是“只設(shè)計(jì)上線路徑不設(shè)計(jì)回退路徑”。真正靠譜的發(fā)布設(shè)計(jì)必須把回滾方案當(dāng)作一等公民來(lái)設(shè)計(jì)而不是最后的附加項(xiàng)。階段三是環(huán)境準(zhǔn)備與驗(yàn)證。開(kāi)發(fā)和測(cè)試環(huán)境要和生產(chǎn)環(huán)境盡量對(duì)齊預(yù)發(fā)布環(huán)境要跑一遍完整的發(fā)布演練。不要小看這個(gè)階段很多發(fā)布事故的根源是“測(cè)試環(huán)境沒(méi)問(wèn)題、生產(chǎn)環(huán)境出問(wèn)題”而根本原因是環(huán)境差異沒(méi)有提前暴露。階段四是發(fā)布審批與溝通。變更評(píng)審會(huì)、干系人通知、一線支持團(tuán)隊(duì)通告這些動(dòng)作要在這個(gè)階段完成。審批的關(guān)鍵不是簽字而是確認(rèn)所有風(fēng)險(xiǎn)都被識(shí)別并且有應(yīng)對(duì)措施。階段五是發(fā)布執(zhí)行與驗(yàn)證。按照預(yù)定的部署步驟推進(jìn)監(jiān)控各項(xiàng)指標(biāo)執(zhí)行業(yè)務(wù)層面的冒煙驗(yàn)證。這個(gè)階段最考驗(yàn)團(tuán)隊(duì)的執(zhí)行力——有步驟不代表按步驟做我之前見(jiàn)過(guò)發(fā)布團(tuán)隊(duì)跳過(guò)某個(gè)“看起來(lái)不重要”的腳本步驟結(jié)果導(dǎo)致數(shù)據(jù)權(quán)限配置丟失上線后部分用戶看到別人訂單的嚴(yán)重事故。階段六是發(fā)布回顧與價(jià)值評(píng)估。發(fā)布完成后的一到兩周內(nèi)回顧發(fā)布過(guò)程評(píng)估價(jià)值指標(biāo)是否達(dá)成。這一步做得好的團(tuán)隊(duì)發(fā)布能力是持續(xù)進(jìn)化的做得不好的團(tuán)隊(duì)每個(gè)版本都在重復(fù)踩同一個(gè)坑。3.2 每階段的核心動(dòng)作、交付物和檢查清單直接抄作業(yè)用下面我把每個(gè)階段的核心動(dòng)作和檢查點(diǎn)整理成一張表你可以直接拿去做成自己團(tuán)隊(duì)的發(fā)布計(jì)劃模板。階段核心動(dòng)作關(guān)鍵交付物檢查點(diǎn)速查需求凍結(jié)與范圍鎖定梳理需求清單、確認(rèn)優(yōu)先級(jí)、凍結(jié)范圍發(fā)布范圍說(shuō)明書(shū)Release Scope每一項(xiàng)功能都有明確的需求來(lái)源和業(yè)務(wù)價(jià)值描述發(fā)布設(shè)計(jì)技術(shù)方案設(shè)計(jì)、依賴分析、回滾設(shè)計(jì)發(fā)布設(shè)計(jì)文檔含回滾方案回滾方案是否經(jīng)過(guò)預(yù)演數(shù)據(jù)變更是否有反向腳本環(huán)境準(zhǔn)備與驗(yàn)證環(huán)境對(duì)齊、預(yù)發(fā)布演練、自動(dòng)化測(cè)試環(huán)境驗(yàn)證報(bào)告、測(cè)試報(bào)告生產(chǎn)環(huán)境與預(yù)發(fā)布環(huán)境差異清單是否為空發(fā)布審批與溝通風(fēng)險(xiǎn)評(píng)審、干系人通知審批記錄、干系人溝通郵件業(yè)務(wù)方是否確認(rèn)知曉發(fā)布預(yù)期效果客服話術(shù)是否更新發(fā)布執(zhí)行與驗(yàn)證部署實(shí)施、監(jiān)控、冒煙驗(yàn)證執(zhí)行記錄、驗(yàn)證報(bào)告每個(gè)部署步驟是否有人確認(rèn)完成核心業(yè)務(wù)鏈路是否已手工驗(yàn)證發(fā)布回顧與價(jià)值評(píng)估過(guò)程復(fù)盤、指標(biāo)評(píng)估復(fù)盤報(bào)告、價(jià)值評(píng)估報(bào)告明確“做了什么”“下次改什么”價(jià)值指標(biāo)是否在計(jì)劃中定義過(guò)這張表設(shè)計(jì)的邏輯是讓每一個(gè)階段都有輸出物、有檢查點(diǎn)、有可追溯性。你把這張表填完你的發(fā)布計(jì)劃至少是完整的、可執(zhí)行的、能復(fù)盤的。但注意完整不等于優(yōu)秀——計(jì)劃里每一項(xiàng)內(nèi)容的“質(zhì)量”比“數(shù)量”更重要。3.3 發(fā)布窗口、灰度策略和回滾方案怎么定附參數(shù)選擇邏輯發(fā)布窗口的選擇本質(zhì)上是在“影響面”和“恢復(fù)力”之間做權(quán)衡。很多團(tuán)隊(duì)習(xí)慣把發(fā)布窗口放在凌晨?jī)扇c(diǎn)理由是“用戶少、影響小”。但這里有個(gè)沒(méi)考慮進(jìn)去的因素凌晨發(fā)布如果出問(wèn)題你能叫醒多少人數(shù)據(jù)庫(kù)管理員睡得正沉業(yè)務(wù)方的決策人聯(lián)系不上恢復(fù)時(shí)間反而被拉長(zhǎng)。我的建議是發(fā)布窗口的選定需要同步考慮問(wèn)題響應(yīng)鏈路的可用性。如果團(tuán)隊(duì)是跨時(shí)區(qū)協(xié)作或者有24小時(shí)值班機(jī)制凌晨發(fā)布沒(méi)問(wèn)題。如果就只有幾位同學(xué)能處理線上問(wèn)題那么選擇業(yè)務(wù)低峰期但“人還醒著”的時(shí)間段——比如晚上十點(diǎn)左右——往往比凌晨更穩(wěn)妥?;叶炔呗缘倪x擇核心看兩個(gè)變量一是變更的風(fēng)險(xiǎn)等級(jí)二是可觀測(cè)能力的成熟度。風(fēng)險(xiǎn)高、可觀測(cè)性好適合按比例灰度比如先放5%流量觀察15分鐘再放20%逐步擴(kuò)大到100%。風(fēng)險(xiǎn)低、可觀測(cè)性一般那就簡(jiǎn)單點(diǎn)先內(nèi)部團(tuán)隊(duì)試用再全量放開(kāi)。我見(jiàn)過(guò)一個(gè)團(tuán)隊(duì)灰度比例已經(jīng)放到50%了但并沒(méi)有針對(duì)新舊版本的對(duì)比監(jiān)控灰度和不灰度沒(méi)區(qū)別——那就是形式主義的灰度?;貪L方案的設(shè)計(jì)最容易犯的錯(cuò)是把“回滾”等同于“重新部署上一個(gè)版本”。真正的回滾方案要回答四個(gè)問(wèn)題回滾的觸發(fā)條件是什么回滾到哪個(gè)版本數(shù)據(jù)變更是否需要逆向處理回滾過(guò)程中用戶請(qǐng)求是被拒絕還是被降級(jí)處理這四個(gè)問(wèn)題在發(fā)布計(jì)劃里必須白紙黑字寫清楚。還有一個(gè)很容易忽略的點(diǎn)回滾方案本身也需要測(cè)試而不是紙上談兵。每?jī)傻饺齻€(gè)月挑一次低風(fēng)險(xiǎn)發(fā)布專門演練一次回滾動(dòng)作不貴但關(guān)鍵時(shí)刻能救命。4. 發(fā)布計(jì)劃落地中最容易踩的五個(gè)坑4.1 坑一發(fā)布計(jì)劃和變更單各寫各的兩張皮ITIL4流程落地之后很多團(tuán)隊(duì)會(huì)出現(xiàn)一個(gè)奇怪的現(xiàn)象變更管理系統(tǒng)里有一個(gè)變更單發(fā)布計(jì)劃文檔里有一套完全不同的內(nèi)容兩邊的信息對(duì)不上——變更單里寫的是“升級(jí)訂單服務(wù)版本”發(fā)布計(jì)劃里寫的是“優(yōu)化訂單查詢性能并修復(fù)若干缺陷”。同一個(gè)發(fā)布兩種描述評(píng)審會(huì)開(kāi)完兩邊各回各家各改各的文檔。這個(gè)問(wèn)題的根子在于發(fā)布管理實(shí)踐和變更管理實(shí)踐沒(méi)有打通。我從項(xiàng)目落地的角度給你一個(gè)實(shí)用建議不要在組織里維護(hù)兩套平行的流程文檔。確定一個(gè)信息主入口——可以是發(fā)布計(jì)劃文檔也可以是變更管理工具——另一個(gè)必須引用主入口而不是另起爐灶。比如變更單里必須附帶發(fā)布計(jì)劃的鏈接發(fā)布計(jì)劃的任何更新都要同步變更單的描述字段。簡(jiǎn)單的關(guān)聯(lián)動(dòng)作就能避免兩套信息長(zhǎng)期各說(shuō)各話。4.2 坑二發(fā)布回顧變成批斗會(huì)或者干脆不開(kāi)發(fā)布回顧是六階段里最容易被砍掉的一個(gè)環(huán)節(jié)。版本上完線大家都松了一口氣復(fù)盤會(huì)一拖再拖拖到最后不了了之。就算開(kāi)了也容易開(kāi)成另一種極端——變成“找責(zé)任人批斗會(huì)”上線出了問(wèn)題會(huì)議室里吵得面紅耳赤最后以“大家以后注意”收?qǐng)鰶](méi)有任何行動(dòng)項(xiàng)。一個(gè)健康的發(fā)布回顧會(huì)應(yīng)該問(wèn)三個(gè)問(wèn)題這次發(fā)布哪些做得好要固化成團(tuán)隊(duì)的標(biāo)準(zhǔn)動(dòng)作哪些做得不好要列入改進(jìn)清單并指定負(fù)責(zé)人還有哪些不確定的需要后續(xù)觀察或做專項(xiàng)驗(yàn)證。改進(jìn)清單里的每一項(xiàng)都要有責(zé)任人和截止日期。沒(méi)有行動(dòng)項(xiàng)的復(fù)盤等于沒(méi)有復(fù)盤。我自己的經(jīng)驗(yàn)是發(fā)布回顧會(huì)控制在30分鐘以內(nèi)只聊事實(shí)、數(shù)據(jù)和行動(dòng)項(xiàng)不聊情緒、不追責(zé)任——不追責(zé)任的復(fù)盤會(huì)才會(huì)有人敢講真話。4.3 坑三緊急發(fā)布永遠(yuǎn)在“插隊(duì)”運(yùn)維團(tuán)隊(duì)幾乎都會(huì)遇到一類場(chǎng)景業(yè)務(wù)方凌晨三點(diǎn)打電話說(shuō)線上出了問(wèn)題必須馬上發(fā)個(gè)緊急版本修復(fù)。緊急發(fā)布本身沒(méi)問(wèn)題有流程外的事件本來(lái)就需要快速反應(yīng)。但有一種團(tuán)隊(duì)病是“緊急發(fā)言”成了常態(tài)——每周都有好幾條緊急發(fā)布通道發(fā)布計(jì)劃形同虛設(shè)標(biāo)準(zhǔn)流程變成了給正常人走的路而所有人都走綠色通道。見(jiàn)到這個(gè)癥狀你要診斷的不是流程本身而是上游質(zhì)量體系出了什么問(wèn)題。緊急發(fā)布為什么多因?yàn)闇y(cè)試覆蓋率不夠、開(kāi)發(fā)自測(cè)不到位、代碼評(píng)審流于形式。這個(gè)坑要連根拔起得從需求質(zhì)量管理、代碼質(zhì)量門禁、自動(dòng)化測(cè)試卡點(diǎn)這些源頭工程去治理。ITIL4的發(fā)布計(jì)劃不是用來(lái)卡住緊急發(fā)布的而是用來(lái)降低緊急發(fā)布的產(chǎn)生頻率的。4.4 坑四只關(guān)注技術(shù)就緒不關(guān)注數(shù)據(jù)與業(yè)務(wù)就緒發(fā)布計(jì)劃里部署步驟寫得很細(xì)、回滾方案寫得也很周密但一到發(fā)布執(zhí)行的時(shí)候發(fā)現(xiàn)運(yùn)營(yíng)后臺(tái)的權(quán)限還沒(méi)開(kāi)、客服的FAQ還沒(méi)更新、銷售團(tuán)隊(duì)的培訓(xùn)還沒(méi)做——功能上線了業(yè)務(wù)團(tuán)隊(duì)根本用不了。這類問(wèn)題我稱之為“業(yè)務(wù)就緒缺失”。技術(shù)就緒完之后一定要有一項(xiàng)“業(yè)務(wù)就緒檢查”新功能對(duì)應(yīng)的用戶文檔是否發(fā)布客服團(tuán)隊(duì)是否了解常見(jiàn)問(wèn)題的應(yīng)答口徑運(yùn)營(yíng)團(tuán)隊(duì)是否有管理新功能的權(quán)限和培訓(xùn)市場(chǎng)團(tuán)隊(duì)是否有配合推廣的計(jì)劃這些事項(xiàng)不必全部由運(yùn)維團(tuán)隊(duì)自己完成但發(fā)布計(jì)劃里必須有一個(gè)檢查點(diǎn)、有一個(gè)負(fù)責(zé)人去確認(rèn)這些事項(xiàng)的完成情況。而且這個(gè)檢查點(diǎn)要放在發(fā)布審批之前而不是上線之后才想起來(lái)。4.5 坑五發(fā)布指標(biāo)只盯著“成功率”不盯“價(jià)值達(dá)成率”我見(jiàn)過(guò)太多運(yùn)維團(tuán)隊(duì)的月度報(bào)告里面寫的是“本月共發(fā)布X次成功率100%無(wú)重大事故”。這個(gè)指標(biāo)看起來(lái)很漂亮但它什么也說(shuō)明不了。一個(gè)功能上線后沒(méi)人用對(duì)業(yè)務(wù)零貢獻(xiàn)甚至占用了開(kāi)發(fā)資源它“成功率100%”又有什么意義。真正有參考價(jià)值的發(fā)布指標(biāo)體系至少包含三層工程效率層部署頻率、前置時(shí)間、變更失敗率、穩(wěn)定安全層平均恢復(fù)時(shí)間、回滾次數(shù)、監(jiān)控覆蓋率、業(yè)務(wù)價(jià)值層功能使用率、業(yè)務(wù)指標(biāo)變化、用戶滿意度。前兩層是基礎(chǔ)第三層才是發(fā)布計(jì)劃的終點(diǎn)。建議你在發(fā)布計(jì)劃定稿時(shí)順手寫下一個(gè)問(wèn)題這次發(fā)布成功后我們拿什么指標(biāo)來(lái)證明它成功了如果答不上來(lái)說(shuō)明這個(gè)發(fā)布還沒(méi)準(zhǔn)備好。5. 實(shí)操模板一張表把發(fā)布計(jì)劃寫清楚附可復(fù)制模板5.1 發(fā)布計(jì)劃核心信息區(qū)怎么填前面講了這么多理念和坑最終還是要落回一張能用的表。我給團(tuán)隊(duì)做發(fā)布計(jì)劃模板時(shí)核心信息區(qū)固定為以下幾個(gè)板塊缺一不可。發(fā)布基本信息發(fā)布編號(hào)、發(fā)布日期、發(fā)布經(jīng)理、關(guān)聯(lián)變更單號(hào)。這四項(xiàng)是索引信息保證發(fā)布可追溯、可查找。發(fā)布范圍與價(jià)值逐條列出本次發(fā)布包含的業(yè)務(wù)功能點(diǎn)每條都要有需求的原始出處和業(yè)務(wù)價(jià)值描述。凡是寫不清業(yè)務(wù)價(jià)值的條目評(píng)審會(huì)上直接打回不用客氣。風(fēng)險(xiǎn)與依賴列出技術(shù)風(fēng)險(xiǎn)、業(yè)務(wù)風(fēng)險(xiǎn)、外部依賴、數(shù)據(jù)遷移說(shuō)明。這里的要點(diǎn)是每一項(xiàng)風(fēng)險(xiǎn)必須有對(duì)應(yīng)的緩解措施只列風(fēng)險(xiǎn)不給對(duì)策等于沒(méi)有風(fēng)險(xiǎn)意識(shí)。發(fā)布排期包括開(kāi)發(fā)凍結(jié)時(shí)間、測(cè)試完成時(shí)間、發(fā)布窗口、觀察期、回滾決策點(diǎn)。關(guān)鍵是把觀察期留出來(lái)——上線后在正式宣布成功之前要有明確的監(jiān)控窗口觀察期沒(méi)結(jié)束就不能宣布發(fā)布完成。干系人與溝通計(jì)劃列出關(guān)鍵干系人、溝通方式、溝通節(jié)點(diǎn)。至少包括老板層、業(yè)務(wù)方、客服團(tuán)隊(duì)、開(kāi)發(fā)團(tuán)隊(duì)、運(yùn)維值班團(tuán)隊(duì)。溝通內(nèi)容要區(qū)分哪些人只需要知會(huì)結(jié)果哪些人需要參與決策。價(jià)值指標(biāo)與驗(yàn)證計(jì)劃明確發(fā)布后用什么指標(biāo)衡量成功、由誰(shuí)在什么時(shí)間點(diǎn)去評(píng)估。這一步就是對(duì)抗“假交付”的關(guān)鍵武器。5.2 用發(fā)布價(jià)值流串聯(lián)各角色模板本身只是靜態(tài)表格要讓它活起來(lái)還得靠“價(jià)值流”這根線把各角色串聯(lián)起來(lái)。我給客戶做發(fā)布流程梳理時(shí)習(xí)慣用一個(gè)簡(jiǎn)單的方式把發(fā)布周期里的每個(gè)關(guān)鍵節(jié)點(diǎn)都對(duì)應(yīng)到具體的角色和具體的輸出物。比如在“發(fā)布設(shè)計(jì)”階段開(kāi)發(fā)負(fù)責(zé)人要輸出技術(shù)方案測(cè)試負(fù)責(zé)人要輸出測(cè)試計(jì)劃DBA要輸出數(shù)據(jù)變更方案運(yùn)維負(fù)責(zé)人要輸出部署和監(jiān)控方案。在“發(fā)布審批”階段架構(gòu)師確認(rèn)技術(shù)風(fēng)險(xiǎn)可控業(yè)務(wù)方確認(rèn)業(yè)務(wù)需求被正確翻譯成了配置和參數(shù)安全團(tuán)隊(duì)確認(rèn)權(quán)限和合規(guī)要求滿足條件。在“發(fā)布執(zhí)行”階段運(yùn)維同學(xué)負(fù)責(zé)執(zhí)行部署開(kāi)發(fā)同學(xué)負(fù)責(zé)現(xiàn)場(chǎng)支持測(cè)試同學(xué)負(fù)責(zé)冒煙驗(yàn)證業(yè)務(wù)方負(fù)責(zé)業(yè)務(wù)鏈路驗(yàn)證。每個(gè)角色在每個(gè)階段都有明確的“下一步動(dòng)作”他們就不會(huì)覺(jué)得發(fā)布計(jì)劃是運(yùn)維部門一家的事情。這也是我對(duì)所有做發(fā)布流程改進(jìn)的團(tuán)隊(duì)的建議先別急著搞ITIL4的各種術(shù)語(yǔ)和表格先把你團(tuán)隊(duì)里每一個(gè)角色在發(fā)布周期里的責(zé)任邊界畫清楚。責(zé)任邊界清楚了流程和工具才有落地的土壤。5.3 發(fā)布計(jì)劃與回滾決策的邊界最后再?gòu)?qiáng)調(diào)一個(gè)容易被忽視的細(xì)節(jié)發(fā)布計(jì)劃里需要明確“回滾決策由誰(shuí)做、在什么條件下做”。很多團(tuán)隊(duì)的發(fā)布計(jì)劃寫了回滾步驟但沒(méi)定義決策機(jī)制結(jié)果出問(wèn)題時(shí)一線執(zhí)行的人不敢回滾、也不知道能不能回滾耽誤了寶貴的止損時(shí)間。我的建議是在發(fā)布計(jì)劃里直接定一個(gè)“回滾決策規(guī)則”比如“新版本錯(cuò)誤率超過(guò)0.5%且持續(xù)5分鐘由發(fā)布經(jīng)理直接決策回滾無(wú)需另行審批”。把決策條件和授權(quán)邊界寫清楚發(fā)布現(xiàn)場(chǎng)的人才敢動(dòng)手。這類規(guī)則看起來(lái)簡(jiǎn)單但它是發(fā)布計(jì)劃從“文檔”變成“作戰(zhàn)手冊(cè)”的關(guān)鍵一步。我還建議在發(fā)布計(jì)劃的溝通板塊里把“回滾決策人”的姓名和聯(lián)系方式單獨(dú)列一行。別小看這個(gè)動(dòng)作真出了事你根本來(lái)不及翻通訊錄能第一時(shí)間找到有權(quán)決策的人比任何流程都重要。話說(shuō)回來(lái)ITIL4的發(fā)布計(jì)劃說(shuō)到底不是為了應(yīng)付審計(jì)、不是為了把文檔寫漂亮而是為了讓你每一次上線都有清晰的業(yè)務(wù)目標(biāo)、有可控的風(fēng)險(xiǎn)預(yù)案、有可衡量的交付結(jié)果。我見(jiàn)過(guò)太多團(tuán)隊(duì)在流程上精益求精卻在價(jià)值上一塌糊涂。有一次我們復(fù)盤一個(gè)折騰了很久才上線的項(xiàng)目最后發(fā)現(xiàn)業(yè)務(wù)方真正想要的功能在三個(gè)月前就被砍掉了而整個(gè)發(fā)布計(jì)劃從頭到尾沒(méi)有任何人提出質(zhì)疑——這就是典型的假交付。我在實(shí)際項(xiàng)目里有個(gè)體會(huì)好的發(fā)布計(jì)劃不是技術(shù)團(tuán)隊(duì)自嗨的產(chǎn)物而是業(yè)務(wù)、開(kāi)發(fā)、測(cè)試、運(yùn)維坐在一起聊出來(lái)的。如果你們現(xiàn)在開(kāi)會(huì)討論發(fā)布計(jì)劃時(shí)沒(méi)有任何業(yè)務(wù)方參加或者業(yè)務(wù)方只是走個(gè)過(guò)場(chǎng)簽個(gè)字那大概率你正在做一份假交付計(jì)劃。試著改變一下——下一次發(fā)布計(jì)劃評(píng)審把業(yè)務(wù)負(fù)責(zé)人拉進(jìn)來(lái)讓他講一講這個(gè)功能上線后用戶會(huì)怎么用、變成什么體驗(yàn)?zāi)憧赡軙?huì)發(fā)現(xiàn)整個(gè)團(tuán)隊(duì)的討論質(zhì)量完全不一樣了。