從集裝箱歷史看DevOps的發(fā)展進程
什么樣的技術會帶來生產力的極大提升?技術含量是否與生產力提升成正比關系?
帶著問題,我們先看一個例子:在工業(yè)革命時期,瓦特用于“改良”蒸汽機的技術,就是極大提升效率的技術。
這里有一個誤解,有人認為瓦特發(fā)明了蒸汽機。其實不然,瓦特只是改良了紐卡門蒸汽機,通過橡膠增加密閉性同時優(yōu)化機械結構,使得原本只能用于提水的笨重機器,變得能被廣泛應用,為***次工業(yè)革命的興起奠定了重要基礎。
從上面的例子可以看出技術含量的高低與帶來生產力的大小并沒有直接關系。
傳奇的集裝箱
我們來看另外一個有趣的故事,希望你能從中得到啟發(fā)。那就是改變運輸業(yè)、對制造業(yè)有著深遠影響的一項革命性技術——集裝箱(英文container,你沒看錯,它的名字和現(xiàn)在火的一塌糊涂的“容器技術”同名)。
說到集裝箱不能不提馬爾科姆·麥克萊恩(1915—2001),20世紀四十年代美國一家運輸公司的老板,由于改造(改造不是發(fā)明)了集裝箱、提高了集裝箱的便利性,推動了整個運輸行業(yè)的巨大變革,而被尊稱為“集裝箱運輸之父”。
那么問題來了:改造蒸汽機也許有些技術含量,但是技術含量連罐頭都不如(抽真空和密封技術)的集裝箱怎么可能有這么大的影響呢?
(集裝箱之父麥克萊恩:改造不僅限于集裝箱本身,還包括港口和貨輪等運輸環(huán)節(jié))
我們知道工業(yè)社會最重要的競爭來自于節(jié)約成本,如果一個技術可以節(jié)省95%的成本就相當于帶來20倍的效率提升。這種技術可以說是顛覆性的,而集裝箱就是這樣的技術。
麥克萊恩在紐約港***次做的集裝箱運輸實驗就實現(xiàn)了20倍的效率提升:使用集裝箱運輸啤酒,將每噸啤酒的運輸成本從4美金變成20美分。
過程是這樣的:從啤酒工廠把啤酒裝入集裝箱開始,通過陸路轉海路運輸?shù)侥康牡兀∪チ斯S到陸路運輸、再到海洋運輸?shù)闹虚g人力搬運過程,因此從工廠到碼頭的裝卸時間大大縮短,由數(shù)天壓縮到數(shù)小時,從而使得美國到歐洲的貨運時間足足減少了4周。并且由于集裝箱的堆疊使得每一艘船只的儲運量比以前提高了6倍。
在傳統(tǒng)運輸過程,貨物沒有統(tǒng)一的包裝標準,這既限制了運輸工具的運載量,又增加了貨物在從陸路運輸?shù)胶B愤\輸?shù)托У氖止ぐ徇\過程。集裝箱這個標準化的運輸單元,就為在整個運輸系統(tǒng)優(yōu)化中間流轉效率提供了一種可能。
(運輸體系中間環(huán)節(jié))
看到這里,我不由得聯(lián)想到傳統(tǒng)軟件研發(fā)測試與發(fā)布的過程。雖然每個過程內部自動化程度很高,但是部門之間的流轉卻依靠低效的手工操作,這些過程大大降低了整體效率。
系統(tǒng)性創(chuàng)新的窘境
但是非常意外的是,麥克萊恩在接下來10多年的航運生意中不僅沒賺到錢,反而是虧損了。這就太奇怪了,一個能讓效率提升20倍的技術,為什么會不賺錢呢?
原因在于,在當時的運輸行業(yè),大部分貨物并沒有使用集裝箱,大量的手工搬運使得船只裝卸貨物并沒有節(jié)省多少時間,還有集裝箱運到目的地后,箱內的貨物需要分別運到不同的地方等等。
因此集裝箱技術并不在于“箱子”本身,而在于需要整個運輸系統(tǒng)的創(chuàng)新——在道路、橋梁、卡車、碼頭和吊裝設備等基礎設施沒有針對“箱子”進行優(yōu)化的情況下,集裝箱技術無法發(fā)揮出原有的效能。
讓我們回到最開始的問題:“什么樣的技術會帶來生產力的極大提升呢?”
那些創(chuàng)新了人與事物連接方式,且極大降低這種連接成本的技術,才能真正促進生產力的提升。
DevOps正是這樣的技術,它是針對研發(fā)系統(tǒng)的一次系統(tǒng)性創(chuàng)新。其創(chuàng)新性在于針對整個研發(fā)系統(tǒng)中的各個子系統(tǒng)進行交付與反饋的優(yōu)化,從而有效提升整體效率。
相對于傳統(tǒng)軟件6個月發(fā)布一次,2009年John Allspaw和Paul Hammond在Flickr可以實現(xiàn)每天發(fā)布10次,將軟件發(fā)布頻率提升了將近兩千倍,極大地降低了軟件發(fā)布的成本。
但是大部分公司在實施DevOps的過程中,并沒有有效提升發(fā)布頻率,這一點與集裝箱在最開始的10年內并不賺錢的道理是相似的。
(應用研發(fā)平臺:描述構建軟件包,在不同的環(huán)境進行測試、最終發(fā)布生產環(huán)境的過程)
問題在于系統(tǒng)性創(chuàng)新初期,各個環(huán)節(jié)沒有對新技術進行優(yōu)化,部分環(huán)節(jié)甚至會阻礙新技術發(fā)展,導致新技術無法提升效能。
轉機帶來的啟示
一切直到1967年才出現(xiàn)轉機。美國發(fā)動了越南戰(zhàn)爭,美軍需要將大量物資運輸?shù)絹喼?。在長期的優(yōu)化實踐中,美軍得出高效運用集裝箱的3C原則:一種貨物、一個地址、一個客戶。
從此,集裝箱的時代到來了。只在1967年一年的時間里,麥克萊恩就從美國國防部賺了4.5億美金。低廉的海運成本、大大縮短的運輸時間以及到貨時間的可預期,讓全球制造業(yè)的分工協(xié)作效率得到極大的提高。行駛在大洋上的貨輪,就像在生產車間里運輸原材料的叉車一樣,使得制造業(yè)不必大量囤積原材料,后來豐田的“零庫存”計劃更是將原料的管控能力發(fā)揮到了***。
為什么3C原則可以極大提升效率?它正是通過解決運輸“中間環(huán)節(jié)”過程的低效問題,使得總體效率得到極大提升。下面分別加以說明:
- 一種貨物:在貨物“裝箱”過程,統(tǒng)一貨物的來源與種類,標準化貨物裝箱過程。
- 一個地址:在貨物“分揀”過程中,不會打開集裝箱,只做一次裝箱。
- 一個客戶:在貨物“送貨”過程,只有一個客戶,簡化送貨的過程。
DevOps流程的3D原則
與如何高效利用集裝箱類似,在DevOps實施過程中,通過優(yōu)化流水線中間流轉過程,提升總體效率。
(圖片來自:http://t.cn/R9oAuDE)
下面舉出與3C原則對應的3D原則:
- 一鍵式部署(Automatic Deploy):部署過程中,標準化部署過程,實現(xiàn)一鍵式部署
- 一次構建打包(Automatic Delivery):在測試環(huán)境、UAT環(huán)境和生產環(huán)境的流轉過程中,只打包一次,軟件包按順序自動交付到各個環(huán)境,最終發(fā)布到生產環(huán)境
- 一次配置分發(fā)(Automatic Distribution):在生產環(huán)境發(fā)布過程,建立統(tǒng)一的配置分發(fā)管理,將繁瑣的分布式環(huán)境配置一次分發(fā)到各個數(shù)據(jù)中心,簡化發(fā)布過程。
“科技是***生產力!”如果我們以技術含量來衡量一個創(chuàng)新會很容易走入誤區(qū)。集裝箱發(fā)展歷史告訴我們,從狀態(tài)的流轉環(huán)節(jié)入手,降低流轉成本是提高總體效能的另外一個途徑。
集裝箱發(fā)展歷史的前十年完成了道路、橋梁、隧道、卡車、碼頭設施、吊裝設備的優(yōu)化,以適應集裝箱的發(fā)展。這個進程的難點在于,以一家運輸企業(yè)推進整個運輸體系針對集裝箱的優(yōu)化。
隨著技術的發(fā)展,DevOps的周邊環(huán)節(jié)正在逐步完善,DevOps實施的3D原則,也讓我們走入故事的后半段,就像集裝箱的故事那樣。
【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號:思特沃克,轉載請聯(lián)系原作者】