[翻譯]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)
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- [譯] 不使用 fastlane 實現持續交付的 5 種選項AST
- [圖靈程式設計叢書].持續交付:釋出可靠軟體的系統方法.pdf圖靈程式設計
- SAP開源的持續整合-持續交付的解決方案
- 計算機視覺的特定詞翻譯(持續更新)計算機視覺
- 聊聊持續交付與軟體架構架構
- 雲原生下的DevOps與持續交付dev
- 持續交付會如何影響測試
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- 持續交付探索與實踐(一):交付流水線的設計
- 快速指南:在DevOps中實現持續交付dev
- eBay透過事件溯源實現持續交付事件
- GitOps | 一種雲原生的持續交付模型Git模型
- 持續交付中的分支管理與版本控制
- 太多指令碼將會毀掉持續交付指令碼
- 喬樑專訪——讓持續交付變為可能
- [譯] 構建、測試、分發!運用 Fastlane 與 Jenkins,完整的 iOS 持續交付指南ASTJenkinsiOS
- 蝴蝶書-task2: 文字推理、摘要、糾錯 transformers實現翻譯 OpenAI翻譯 PyDeepLX翻譯 DeepLpro翻譯ORMOpenAI
- 廈門大學圖書館引入網易有道文件翻譯提升學術研究能力
- 雲原生入門第六章:持續交付
- 你的DevOps中有完善的持續交付體系麼?dev
- 如何將 InfoSec、Compliance 整合到持續交付流水線中
- 最佳 AI 翻譯工作流:全世界最信達雅的翻譯AI
- 關於 K8S 的持續化交付構建K8S
- 基於Jenkins + Argo 實現多叢集的持續交付JenkinsGo
- 持續交付體系在高德的實踐歷程
- Git-flow作者稱其不適用於持續交付?Git
- ICDM 2019最佳論文:從圖片、文字到網路結構資料翻譯,一種新型的多屬性圖翻譯模型模型
- 2020年最佳Java除錯工具(翻譯)Java除錯
- [譯] 如何使用 CircleCI for GitHub Pages 持續部署Github
- 使用 KubeSphere 和極狐GitLab 打造雲原生持續交付系統Gitlab
- 持續交付探索與實踐(三):指標度量體系搭建指標
- Java致命傷:持續交付使JVM JIT成為反模式 - astradotJavaJVM模式AST