[翻譯]2011年Jolt大獎最佳圖書——《持續交付》
Andrew Binstock
過去20年間,我們一直在甄別軟體開發工具中各個類別的最佳產品。圖書無疑是最多候選者的類別,今年也不例外。在2010年7月1日至2011年6月30日出版的所有圖書中,出版商、書店和讀者共選出了51本候選圖書。
候選圖書實在太多了,所以Jolt大獎的評審團決定先將範圍縮小到15本值得推薦的入圍圖書,然後第二輪選擇出最優秀的6本,並排定得獎位次。年度的最佳圖書獲得Jolt優勝獎,其次的兩本獲得Jolt效率獎,剩下的三本就是Jolt入圍獎。對這6本書的位次抉擇,以及另外9本書的取捨,讓大部分評委都覺得相當難辦。很多最終沒有獲獎的圖書都是好書,是值得關注的。我們會另外討論。
以前,我像前面那樣提到入圍圖書難分軒輊時,通常指的是所有的獲獎圖書。不過,今年的情況有點特別,Jolt優勝獎的得主是一騎絕塵的。總而言之,這一結果證實了我最初對這本書的評價,當時我就把它稱為“2010年最重要的技術書”。以下對獲獎圖書的介紹中,我就直接引用了原來的評論了。
(介紹評委成員,略。)
綜合這麼多經驗豐富的評委意見,我們非常有信心,Jolt大獎得主代表了今年圖書的最高成就。
(幾句客套話,略。)
下面,我們一一介紹獲獎圖書。
第一名:Jolt優勝獎
《持續交付:釋出可靠軟體的系統方法》(人民郵電出版社,2011年10月)
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, by Jez Humble and David Farley
在Jolt大獎的評選工作中,我評審了大量的圖書。但是,我已經太長時間沒有讀到這種能夠顛覆產業規則的圖書了。
本書有個基本前提:我們需要在此前持續整合的基礎上再進一步,設計不僅僅是構建和測試的活動的更完整週期。確切地說,這個新方向要求:對每一次簽入,都在所有平臺上進行構建和測試,併為所有平臺建立和部署最終的可釋出版本。這個方法的好處是開發機構在任意給定時刻都擁有:1)對部署問題的即時反饋;2)可部署的可執行檔案;3)在所有平臺上的構建、測試和部署的完整自動化流程。
在為數眾多的活動中進行持續整合,這個簡單概念會產生深遠的影響,而每一個影響都將使你的流程變得更好。最重要的影響是必須自動化以編碼開始的整條流水線,作者強調的確實是每一步。大家對自動化頗有微詞的一個共同點是部署。不過,Humble和Farley說得很清楚,你就必須“揹負著痛苦而前行”,並修補流程,以便它能夠自動化。(如果不清楚怎樣完善和自動化部署,那就考慮一下虛擬化。是否可以在虛擬機器上模擬當前的系統,然後漸進式地簡化軟體的部署,以達到自動化?很好,你已經開始上手了。)
不過,部署的機制只不過是你面臨的挑戰中最不起眼的一個。(這裡順便說一句,本書的書名有點誤導:其實部署只是本書內容的一部分。)你還需要在即將交付的每一個平臺上構建、執行並測試軟體。如果不得不為不同平臺改變配置並重置數值的話,你是沒有可能做得到這一點的。然而,你不必像摩西那樣,在沙漠中痛苦地躑躅了40年都無法跨越約旦河,作者在書中已經給你指明一條路徑了。關鍵在於使用單一的程式碼庫,並將依賴於平臺的資料都轉移到配置檔案中。這不是很容易就做到的,但作者給出了足夠多的好建議。
測試是本書深入討論的另一個主題。在持續交付的環境下,測試就不僅僅是執行單元測試和迴歸套件了,而是執行所有的測試:單元、整合、UAT(User Acceptance Test,使用者驗收測試),等等。如何有效地將它們自動化,可能是本書的篇幅最多的一個分支。即便你不接受持續交付的概念,這部分的內容都絕對已經值回書價了。它以一種嶄新的方式擴充了我們的思路,這是Digg和Reddit上成千上萬關於敏捷測試的文章所從未涉獵的。我們很快就會看到,使用者將可以完成更多的自動化,從慘兮兮的半手動現狀轉變為完整、持續自動化的順暢流程。
本書令我印象深刻的是,作者不斷地挑戰艱難的問題。這些問題絲毫沒有讓作者氣餒,他們根本不打算將這些問題一帶而過。作者憑藉自己廣博的經驗,以獨到的角度細緻地探討了這些艱深的主題。
關於過程這一主題,我實在是從未讀到過比這本更好的書籍。我相信,《持續交付》這本書未來將會重新定義敏捷過程和持續整合。其影響力之於過程領域,將不啻於1999年Martin Fowler的《重構》之於程式碼領域。
並列第二名:Jolt效率獎
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages, by Bruce A. Tate
Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites, by Matthew A. Russell
並列第四名:Jolt入圍獎
The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part 1, by Donald E. Knuth
The Joy of Clojure: Thinking the Clojure Way, by Michael Fogus and Chris Houser
Domain-Specific Languages, by Martin Fowler with Rebecca Parsons
相關閱讀:
相關文章
- #翻譯#持續交付成熟度模型模型
- 持續整合、持續部署、持續交付、持續釋出
- 持續整合、持續交付、持續部署簡介
- [譯文]持續交付與傳統敏捷的矛盾敏捷
- 圖靈社群“持續交付”專題交流會圖靈
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- NetBeans IDE再次榮獲Jolt“最佳開發環境”大獎BeanIDE開發環境
- Jolt大獎獲獎作者Venkat Subramaniam訪談問題有獎徵集(圖靈訪談)圖靈
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- iOS 持續交付之 FastlaneiOSAST
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 談談持續整合,持續交付,持續部署之間的區別
- 持續交付一——軟體交付的問題
- 微服務、容器與持續交付微服務
- 圖靈成立七週年——圖靈書與翻譯事圖靈
- [譯] 不使用 fastlane 實現持續交付的 5 種選項AST
- SAP開源的持續整合-持續交付的解決方案
- 圖靈社群“持續交付”專題交流會活動手記圖靈
- [圖靈程式設計叢書].持續交付:釋出可靠軟體的系統方法.pdf圖靈程式設計
- 計算機視覺的特定詞翻譯(持續更新)計算機視覺
- 持續交付與傳統敏捷的矛盾敏捷
- 喬樑:持續交付將變成必備能力(圖靈訪談)圖靈
- 喬樑:“持續交付”不是守業者的遊戲(圖靈訪談)遊戲圖靈
- 持續交付探索與實踐(一):交付流水線的設計
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- 雲原生下的DevOps與持續交付dev
- eBay透過事件溯源實現持續交付事件
- 持續交付中的分支管理與版本控制
- 太多指令碼將會毀掉持續交付指令碼
- 持續交付成熟度模型 V1.2模型
- [翻譯]圖書的未來 by Mike Hendrickson
- 快速指南:在DevOps中實現持續交付dev
- GitOps | 一種雲原生的持續交付模型Git模型
- [轉載]持續交付和DevOps的前世今生dev
- 釋出 Spinnaker 1.0:持續的雲交付平臺
- 大象如何跳舞-支付寶持續交付實踐
- 《持續交付》走進百度技術沙龍