“看益老,車來了!不過這趟車貌似咱趕不上了吧悠栓?!”
“啊节预!那快點跑,錯過這趟就得再等半個小時属韧!”
……
好無奈安拟,可是真的趕不上也沒有辦法,這個場景很多人都經(jīng)歷過宵喂。
“這個release又是一定包就開始上hotfix糠赦,四天跟了四個,我根本沒時間做回歸測試锅棕!” QA小靜同學(xué)抱怨道拙泽。
“每次都是定包后就開始無休止的上hotfix,咱們還不如改成每周發(fā)布一次裸燎!”Dev大鵬同學(xué)也被hotfix折磨苦了顾瞻。
這是發(fā)生在藍鯨項目的一次真實而平常的對話,跟前面趕公交車的場景有什么關(guān)系呢德绿?
發(fā)車間隔與發(fā)布周期
發(fā)車間隔的不同帶給乘客的感受會完全不同荷荤。
有些公交車很少退渗,每半個小時一趟,有時候眼看著一輛車來了又走了梅猿,沒趕上的心情無比懊惱氓辣,下一趟還得等上半個小時啊袱蚓!實在著急的可能考慮叫一輛快車趕緊走…
而有些公交車發(fā)車間隔非常短钞啸,幾分鐘一趟,就算錯過一趟也無需等待太久喇潘,只要不是著急去救火的乘客一般都不會太在乎体斩。
項目的不同發(fā)布周期帶給客戶的感受也是類似的。
藍鯨項目的發(fā)布周期跟第一種公交車發(fā)車間隔非常類似颖低,是四周發(fā)布一次絮吵,如果這次沒能上線的功能,或者有導(dǎo)致功能不能正常工作的缺陷忱屑,下次發(fā)布上的話蹬敲,就得再等一個月。一個月莺戒,那是多少白花花的銀子鞍槲恕!對于那些特別重要的功能从铲,客戶著急就要求上hotfix瘪校,于是就出現(xiàn)了前面小靜和大鵬對話中的場景。
Hotfix是否真的能解決軟件交付過程中的問題呢名段?其實不然阱扬。
Hotfix的引入帶來很多額外的工作,影響新功能的按時交付伸辟,會打亂交付節(jié)奏麻惶,從而有形成惡性循環(huán)的趨勢。既然這樣信夫,大家一定希望能解決窃蹋,而且通過公交車的例子很容易想到前面大鵬說的那個方案。
如果發(fā)布周期縮短忙迁,比如說一周甚至更短,這次沒上的功能也不用那么著急的通過hotfix來上線碎乃,就能解決問題姊扔。那么藍鯨項目為什么不一周發(fā)布一次呢?
如何才能縮短發(fā)布周期梅誓?
1. 合適的迭代計劃和合理的需求切分
半個小時一趟的公交車恰梢,就算車子足夠大能夠承載半個小時到達的乘客數(shù)佛南,可是會導(dǎo)致乘客等待時間過長,造成很多不便和耽誤嵌言。要解決這種情況嗅回,可以把大型公交車換成多輛小型車,增加發(fā)車次數(shù)摧茴,縮短發(fā)車間隔绵载。發(fā)車間隔縮短到多少,車子換成多大的都是需要仔細(xì)分析和考慮的問題苛白。
映射到藍鯨項目娃豹,要縮短發(fā)布周期,就得有相應(yīng)的小規(guī)模需求正好能夠乘坐小發(fā)布周期那樣的小車购裙,要做好發(fā)布計劃和需求切分懂版。
這樣,對需求源的要求很高躏率,需要客戶那頭的緊密配合躯畴。要想縮短發(fā)布周期,首先必須得有足夠的薇芝、粒度合適的功能需求蓬抄,能夠正好安排到較短的發(fā)布周期上線。如果需求范圍不能提前確定好恩掷,就沒法提前做好短周期發(fā)布計劃倡鲸,不可能把發(fā)布周期縮短。
2. 強大的開發(fā)能力
乘客的需求分析清楚了黄娘,要想縮短發(fā)車間隔非常關(guān)鍵的一點就是要有足夠的安全的車和靠譜的司機峭状。 如果這一點滿足不了,其他都免談逼争。
對應(yīng)到藍鯨項目优床,安全的車子和靠譜的司機組成了團隊強大的開發(fā)能力,包括架構(gòu)支撐和人員技能誓焦。
車子就是對持續(xù)交付友好的技術(shù)架構(gòu)胆敞,需要減少模塊間的依賴,比如采用微服務(wù)杂伟。藍鯨項目是一個七年之久的老項目移层,很多陳年依賴已經(jīng)形成,要拆分不是一時半會的事情赫粥,團隊正在朝著這個方向努力观话。
司機就是我們的開發(fā)團隊,除了要有必要的開發(fā)技能外越平,要做到靠譜就得透徹理解持續(xù)交付的精髓频蛔,需要團隊人人都有質(zhì)量意識灵迫,人人都有發(fā)布周期的緊迫感,并且能夠做到高效合作晦溪,從需求劃分瀑粥、代碼質(zhì)量、測試保障等做好各個環(huán)節(jié)的工作三圆,做好缺陷的預(yù)防和監(jiān)控狞换,不讓嚴(yán)重缺陷流入后面階段。
藍鯨項目由于新人較多嫌术、人員流動大等原因哀澈,對于質(zhì)量意識和緊迫感都有待提高。 不過度气,在各位QA的影響下割按,團隊人員的質(zhì)量意識、緊迫感都在改善磷籍,新人的技能也在不斷的學(xué)習(xí)和實踐中得到提高适荣,但仍然不能放松警惕,需要時刻保持向前的精神面貌院领。
3. 充分必要的測試支撐
有了足夠的安全的車和靠譜的司機弛矛,還得保證路況足夠好,這樣才能做到不管到達哪個站比然,間隔都是相同的丈氓。
要想藍鯨項目的持續(xù)交付能夠順利前行,一路暢通强法,需要嚴(yán)格做好質(zhì)量內(nèi)建万俗,各層都有充分必要的自動化測試保護,減少新功能開發(fā)過程中對老功能的破壞饮怯;同時持續(xù)集成流水線也要很健全闰歪,不能耽誤代碼提交和出包,從而影響開發(fā)和測試的進度蓖墅。
藍鯨項目開發(fā)年限已久库倘,復(fù)雜度很高,在持續(xù)交付的路上行走的有些坎坷论矾。目前團隊正在這些方面努力采取改進措施教翩,取得了不少進展,但確實還有不少提高的空間贪壳。
前景堪憂饱亿?
過去七年,藍鯨的持續(xù)交付之路有些坎坷,但不應(yīng)因此而失去信心路捧。
通過跟公交系統(tǒng)的對比,我們可以看到藍鯨項目要縮短發(fā)布周期传黄、杜絕hotfix杰扫,需要從需求切分、迭代規(guī)劃膘掰、技術(shù)架構(gòu)章姓、團隊能力和測試策略等多方面進行優(yōu)化,才能保證持續(xù)识埋、快速的發(fā)布節(jié)奏凡伊,這是一個系統(tǒng)的問題。
七年之癢已經(jīng)平安度過窒舟,藍鯨團隊正在采取相應(yīng)的改進措施系忙,一旦做好了上述各方面的優(yōu)化,相信下一個七年一周發(fā)布一次或者更短發(fā)布周期都將不是夢惠豺!