官术网_书友最值得收藏!

3.8 它們之間是什么關系

XXX和XXX之間是什么關系?這是一個經常被問到的問題。這個問題沒有明確的、無爭議的答案。因為前面講的那些潮流和運動本身,就經常沒有公認的標準的定義、明確的內涵和外延,它們之間的關系也相應地變得復雜和模糊。某一項具體的實踐,常常出現在不同的“學派”中。而每個“學派”又大都有天然的傾向,把自己打造成無所不包:敏捷無所不包;DevOps無所不包;持續交付也出了2.0版,無所不包……

這里給出一些相對客觀、相對主流的觀點。大體上來說:

? 近二十年來的各種思潮,都是基于軟件工程,對軟件工程的補充、糾偏和發展。

? 敏捷和精益如今經常被一起提及。

? 持續交付是持續集成的自然延伸,而持續部署是持續交付的終極“夢想”。

? 持續交付的范圍和實踐與DevOps的范圍和實踐很接近,它們都把Ops拉進來,解決部署和環境相關問題,徹底打通從開發到上線的全鏈路。

? 從流程范圍來看,與DevOps相比,敏捷主要關注開發和測試之間的協作與融合,對部署到類生產環境進而到生產環境中的相關問題則關注較少。而精益的流程范圍則比DevOps更寬,它包括軟件開發全過程——既關注軟件定義側的精益創業,也關注軟件從定義到開發再到發布的完整價值流的效率。

? 從關注內容來看,盡管敏捷和精益都既包括管理實踐,也包括工程實踐,但在實際工作中提及敏捷和精益時,經常指的是它們的管理實踐,比如Scrum、看板墻等。而持續交付、DevOps更關注工程實踐,比如流水線、自動化測試、自動化部署等。

? 對工具的重視程度也是不同的。在敏捷看來,“個體和互動 高于 流程和工具”,而持續交付、DevOps都很重視開發工具平臺的建設,以自動化、自助化為導向。

那么,對上述這些軟件開發過程及其支持工具等方面的探索,與容器、微服務等軟件架構和技術方面的演進,又是什么關系呢?它們是相互成就的關系。例如,如果沒有以流水線為代表的流程自動化,那么當將應用拆分成多個微服務時,不論是測試還是發布都很麻煩。而在反方向上,容器化使得新建一個測試環境變得便宜和容易,于是可以有更多的測試環境,讓開發人員盡早進行測試,盡早發現和修復問題,而不用等到集成后再部署到測試環境中,由測試人員進行測試。

最后,本書和這些“流派”之間是什么關系呢?本書不是要開創一個新的“流派”。本書聚焦于軟件交付過程這個領域(或者說這個學科),努力把它成體系地講清楚、講明白。如果將來有了新的“流派”,那么本書的未來版本大概也會把它吸納進來。

在實際項目中,我們要面對軟件交付過程這個領域,結合具體情況,取“百家之長”,綜合運用。本書介紹“百家之長”,講解如何綜合運用。

[1]來源:鏈接2。

[2]來源:鏈接3。

[3]這個故事來自《精益思想》一書的第2章“價值流”。

[4]資源效率、流動效率的概念詳見《精益產品開發:原則、方法與實施》一書的第2章“精益產品開發的核心原則(上):聚焦價值流動效率”。

[5]譯文:鏈接4;原文:鏈接5。

[6]除了構建、單元測試、代碼掃描,持續集成也涉及部署到測試環境并測試,但考慮到持續交付也會涉及這部分內容,所以我們將其放到“持續交付”部分來講。

[7]來源:鏈接6。

[8]來源:鏈接7。

[9]來源:鏈接8。

[10]參見《DevOps實踐指南》一書。

[11]來源:鏈接9。注意,原文位于境外網站上。

主站蜘蛛池模板: 新邵县| 安阳县| 渑池县| 亚东县| 汝州市| 台南县| 开远市| 阿拉善左旗| 凤台县| 平远县| 杭锦旗| 邯郸市| 靖西县| 紫阳县| 固阳县| 塔河县| 五大连池市| 灵璧县| 胶南市| 洪雅县| 乐至县| 兰州市| 澜沧| 贵定县| 博罗县| 出国| 永春县| 司法| 南川市| 宜黄县| 南郑县| 武城县| 社会| 嘉定区| 兴安盟| 林州市| 富民县| 工布江达县| 蒙山县| 龙胜| 定边县|