以主干开发作为持续交付的基础
看新聞很累?看技術新聞更累?試試下載InfoQ手機客戶端,每天上下班路上聽新聞,有趣還有料!
\\\早在他們的重要著作《持續交付》一書于2011年發布之前,Dave Farley和Jez Humble就一直在宣傳主干開發的重要性。近日,Farley在發文探討了主干開發以及他在三月份的PIPELINE大會上做完有關“優化持續交付”的演講之后所遇到的強烈反對。作為對這件事的回應,Humble在一個冗長的Twitter主題中分享了他的觀點,從文化角度探討了主干開發,從而理解它和程序員心理的關系。
\\Farley將主干開發描述成他可以“獲得最多推送”的實踐。主干開發鼓勵團隊采用這樣一種方式,他們向一個共享的、總是處于可發布狀態的主干增量推送變化,至少每天一次。與使用生命周期更長的特性分支相比,這有助于所有人都能夠了解和分享與正在構建的產品有利害關系的反饋。Farley寫道,“在他們正在開發的‘特性’完成之前,大部分團隊都不會合并他們的分支”,他將主干開發視為持續集成(CI)和持續交付(CD)的基礎。他寫道,這樣的反饋隔離是違反CI的:
\\\……如果CI是要盡可能經常地暴露變化,那么我們就可以獲得有關我們的想法的很棒的反饋,而分支,不管哪種形式的分支,都是要隔離變化。按照設計,分支是要把變化隱藏在一部分代碼中,讓其他開發人員看不到。這是有悖于CI的,答案就在其名字“持續集成”中。
\\\Farley指出,在一個動態變化的代碼庫中,特性分支往往會誤導人們對穩定性的認識:
\\\從個體開發者的角度來說,特性分支非常好,但是從團隊的角度來說,則是次優的。我們都希望能夠忽視其他人在做什么,并繼續自己的工作。遺憾的是,代碼不那樣。即使是結構很好的代碼庫,有漂亮的關注點分離,有巧妙松耦合的組件,有些變化也會影響到系統的其他部分。
\\\接著,Humble寫道,主干開發是“把團隊需求置于個體需求之上。”他指出,高效的主干開發鼓勵溝通和小批量開發:
\\\我們使用版本控制把我們正在做的工作傳達給團隊的其他人。要想足夠經常地這樣做,我們就得非常小批量的開發。這與許多開發人員喜歡的工作方式背道而馳:在再次合并之前,自己坐在哪里,順著一個編程兔子洞一直走下去。
\\\Humble寫道,CI及主干開發的先決條件是“社會化和團隊”活動,“挑戰開發英雄的神話”:
\\\因此,我猜測,特性分支和CI/主干開發的比較之所以成為一個敏感問題,是因為:我們在打破何謂“好”程序員的其中一個核心信念。也是因為人們接受的訓練不是小批量開發,他們覺得這樣不習慣。
\\\談到團隊應該針對測試以及與將要發布的東西不匹配的分支做些什么工作時,Farley寫道:
\\\有一點確信無疑,就是測試發生在向主干合并的時候。只有在這個時候,你才能誠實地說,“是的,我的修改沒有和任何人的沖突。”在此之前,你會希望其他人沒有在另外的分支上做妨礙你合并的事情。
\\\Farley寫道,主干開發是成功實現CI/CD的核心內容之一:
\\\CI并不是一個簡單的方法;它經過周密的考慮,而且在世界上部分最成功的企業里有著非常廣泛的應用。主干開發是CI/CD的核心實踐,在沒有主干開發的情況下,真得很難獲得CI或CD的所有好處。
\\\Farley反駁了人們對于主干開發的反對意見,他列舉了“DevOps現狀報告”以及他的個人經驗,幾十年來,他在不同的團隊規模、編程語言和范圍內都有著成功的實踐。
\\最近,Humble與人合著了The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations一書。該書挑戰了經驗主義,整理并量化分析了公司踐行持續交付的效果。在關于Farley的博文的推特主題中,Humble寫道:
\\\……在“DevOps現狀報告”中,我們對主干清理做了些研究,這也出現在了我們的新書Accelerate中。結論顯而易見。那些對主干或者存在時間不超過的一天的分支進行清理的團隊顯然更高效。
\\\在Accelerate一書的前言中,Martin Fowler總結了使用這些做法的好處:
\\\他們描述了高效的IT交付組織如何用一個小時的時間獲取提交到主干的代碼并讓它在生產環境中運行起來,很少有組織要花幾個月來完成這個過程。他們這樣每天多次升級軟件,而不是幾個月一次,這提升了他們使用軟件開拓市場、響應事件以及比競爭對手更快地發布特性的能力。這極大地提高了響應性,但又不以犧牲穩定性為代價,這些組織發現,他們因為升級而導致故障的情況只是那些不那么高效的組織的一小部分,而且通常在一個小時內就可以修復。
\\\查看英文原文: Trunk Based Development as a Cornerstone for Continuous Delivery
總結
以上是生活随笔為你收集整理的以主干开发作为持续交付的基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 喜茶获美团点评旗下基金4亿元投资!它离行
- 下一篇: 获取用户精准地理位置信息(百度地图)