爲何咱們應該儘早並儘量的頻繁發佈?
在第二次世界大戰期間,蘇聯軍隊爲了阻止德國入侵,想到了一個放在如今會被動物保護協會全球通緝的辦法——訓練了一批反坦克犬,當犬隻身披炸藥鑽進德軍坦克身下,引爆炸藥破壞坦克。工具
不幸的是,這個「天才」的想法在落地時出現了嚴重的問題。測試
蘇聯人在訓練軍犬時用的是靜止的坦克,到了實際戰場上,坦克的移動和四周的槍聲讓軍犬們慌不擇路,要麼被德國人槍殺,要麼回到了戰壕,反而炸死了蘇聯士兵。spa
並且……要知道狗是嗅覺很是靈敏的動物,他們接受蘇聯訓練時坦克中裝的是柴油,而德國坦克使用汽油,因此就致使了有些軍犬並無按照蘇聯人設計的那樣在德國坦克下奔跑,而是來到了蘇聯坦克身下,結果不難想象。設計
其實蘇聯人最初的想法是訓練犬隻進入一個固定的目標,用牙齒拔掉炸藥拉環,而後安全回到戰壕,可是沒有奏效。能夠說,在把反坦克犬部署到戰場以前這個項目就失敗了,敗就敗在從未在真正的戰場環境下進行測試……code
說完二戰的故事,再來看持續集成。開發
持續集成(Continuous Integration)是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,一般每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯、發佈、自動化測試)來驗證,從而儘快地發現集成錯誤。(Martin Fowler)rem
持續集成的目的,就是讓產品能夠快速迭代,同時還能保持高質量,這裏並非說持續集成可以消除BUG,而是說可讓咱們更容易發現BUG並加以改正。部署
聯繫上面的故事,假設反坦克犬計劃的設計者一開始用一隻犬在實際戰場上進行測試,或許蘇聯人就能夠在早期發現問題、控制傷亡損失、採起相應的改進……畢竟控制一隻狗比控制30只狗,顯然是要容易不少。get
這就是持續集成最基本的好處。
固然在反坦克犬這個故事中,早期的部署或許會向地方透露戰術,但軟件開發實踐並非戰爭。因此,在大多數狀況下,咱們開發軟件應該儘早進行集成,這樣作能帶來的好處遠遠超過其潛在的成本。
牛頓曾經說過:「若是說我看得比別人更遠些,那是由於我站在巨人的肩膀上」。
沒有什麼比實際的失敗更有參考意義,若想避免在開發中成爲「計劃反坦克犬的蘇聯人」,採用持續集成會是一種明智的選擇。
閱讀更多
技術
藍綠部署、A/B測試以及灰度發佈 2017/03/02
開源PaaS Rainbond提供可擴展的CI/CD,支持各類主流開發語言的源碼構建,支持代碼滾動上線、一鍵回滾、灰度發佈、AB測試,並支持對接Jenkins等第三方CI/CD工具。