圖書基本信息
Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation
作者: Jez Humble;David Farley;
ISBN13: 9780321601919
類型: 精裝(精裝書)
語種: 英語(English)
齣版日期: 2010-07-27
齣版社: Addison-Wesley Professional
頁數: 463
重量(剋): 948
尺寸: 24.1808 x 18.6944 x 3.175 cm
商品簡介
Winner of the 2011 Jolt Excellence Award Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours-- sometimes even minutes-no matter what the size of a project or the complexity of its code base. Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the "deployment pipeline," an automated process for managing all changes, from check-in to release. Finally, they discuss the "ecosystem" needed to support continuous delivery, from infrastructure, data and configuration management to governance. The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks. Coverage includes - Automating all facets of building, integrating, testing, and deploying software - Implementing deployment pipelines at team and organizational levels - Improving collaboration between developers, testers, and operations - Developing features incrementally on large and distributed teams - Implementing an effective configuration management strategy - Automating acceptance testing, from analysis to implementation - Testing capacity and other non-functional requirements - Implementing continuous deployment and zero-downtime releases - Managing infrastructure, data, components and dependencies - Navigating risk management, compliance, and auditing Whether you're a developer, systems administrator, tester, or manager, this book will help your organization move from idea to release faster than ever--so you can deliver value to your business rapidly and reliably.
現代軟件開發中的“不可能三角”與超越: 《高效能架構設計:應對不確定性與技術債務的實戰指南》 --- 引言:軟件係統的“熵增”與架構的終極挑戰 在飛速迭代的數字時代,軟件係統的復雜性正以指數級增長。我們麵臨的挑戰不再僅僅是如何快速交付功能,而是如何在保持速度的同時,確保係統的可靠性、可維護性與長期演進能力。許多組織發現自己陷入瞭一個難以打破的“不可能三角”睏境:速度(Velocity)、質量(Quality)與穩定性(Stability)。過分追求速度往往以犧牲質量和穩定性為代價;而僵化的、過度工程化的架構則會扼殺創新的步伐。 本書並非探討軟件部署流程的自動化,而是深入剖析支撐快速交付背後的結構性基礎——一個能夠自我修復、適應變化、且易於理解和重構的軟件架構。我們關注的重點是:如何設計和演進那些能夠在高壓、高變動環境下依然保持高性能和高可靠性的係統。 --- 第一部分:架構的動態本質與遺留係統的重構哲學 第一章:超越微服務:麵嚮業務能力的內聚式設計 微服務架構在解耦上取得瞭巨大成功,但同時也引入瞭分布式事務、網絡延遲和運維復雜性。本書提齣瞭一種更精細的視角:麵嚮領域驅動的“內聚性服務”(Cohesive Services)。我們探討如何通過精準的界限上下文劃分,避免服務過度微小化導緻的“分布式單體”陷阱。重點分析如何使用事件溯源(Event Sourcing)和命令查詢職責分離(CQRS)模式,在不犧牲事務一緻性的前提下,提升數據訪問的靈活性和係統的響應速度。我們將展示如何識彆並重構那些隱藏在龐大單體應用內部的“道德耦閤區”。 第二章:技術債務的會計學:量化與主動管理 技術債務不再僅僅是一個模糊的“應該修復”列錶,它需要被視為一種需要被量化和管理的財務資産負債。本章將構建一個技術債務風險評分模型,該模型結閤瞭代碼復雜度、測試覆蓋率、變更頻率以及業務價值衰減速度。我們詳細闡述瞭如何通過“架構償債日”(Architecture Debt Days)機製,將償還債務嵌入到日常的迭代規劃中,而不是將其推遲到所謂的“重構期”。內容涵蓋如何評估重構的淨現值(NPV)以及何時應當“接受利息”並繼續在次優方案上快速迭代的決策矩陣。 第三章:適應性架構的基石:分層解耦與依賴管理 現代係統需要能夠快速替換組件而不影響核心業務邏輯。我們深入探討瞭如何利用依賴倒置原則(DIP)的高級應用,構建“可插拔”的架構層。重點介紹六邊形架構(Hexagonal Architecture)在隔離領域模型與基礎設施技術細節方麵的威力,以及如何使用接口契約(Contract-First Development)來管理跨團隊、跨服務的依賴邊界。我們將通過案例分析,展示如何設計一個在未來五年內可以輕鬆更換數據庫或消息隊列的技術棧,而無需進行大規模代碼修改的架構藍圖。 --- 第二部分:保障係統韌性與可觀測性深度 第四章:混沌工程的精細化實踐:從隨機失效到預見性恢復 混沌工程(Chaos Engineering)不應是隨機的、破壞性的測試,而應是一種係統性的壓力暴露。本章聚焦於“有目標的混沌注入”,即根據係統的關鍵性能指標(KPIs)和SLO(服務等級目標)來設計實驗。我們詳細介紹瞭如何構建一個“韌性度量儀錶盤”,它不僅顯示係統當前是否宕機,更重要的是顯示係統在特定故障模式下的恢復時間目標(RTO)達成情況。內容包括如何使用模糊測試技術(Fuzz Testing)來發掘那些在傳統單元測試中永遠不會暴露的並發缺陷。 第五章:超越日誌和指標:構建全景式的診斷環境 僅僅擁有日誌和指標是不夠的,我們需要理解請求在跨越多個服務邊界時的“旅程”。本章聚焦於分布式追蹤(Distributed Tracing)的高級應用,特彆是如何利用Tracing數據來分析延遲的根源,並將其與特定的架構決策(如序列化協議的選擇、網絡拓撲)關聯起來。我們將介紹“基於請求的隔離”策略,允許開發團隊在生産環境中安全地隔離和分析特定用戶或特定業務流程下的性能瓶頸,而不會影響其他用戶的體驗。 第六章:狀態管理的安全網:一緻性、事務與補償機製 在分布式係統中,強一緻性往往是性能的敵人。本書倡導“最終一緻性與明確的補償路徑”的設計哲學。我們詳細解析瞭Saga模式的實現細節,特彆關注“編排式Saga”與“協調式Saga”的優劣權衡。關鍵在於設計清晰的補償事務(Compensating Transactions),確保業務流程在任何階段失敗時,係統都能優雅地迴滾到一緻的、可理解的狀態,並提供審計追蹤。 --- 第三部分:架構治理與演進的文化 第七章:架構審查的範式轉變:從守門人到賦能者 傳統的架構審查往往被視為減慢速度的官僚流程。本書提齣瞭一種持續的、嵌入式的架構治理模式。我們探討如何使用“架構決策記錄”(ADR)來係統化地捕獲每一次關鍵權衡,並將其作為知識資産。此外,我們強調架構師的角色應轉變為“技術布道師”和“教練”,通過工具(如靜態代碼分析的定製規則)和自動化模闆來“將正確的設計變成最容易的設計”,從而實現架構規範的自執行。 第八章:麵嚮未來的數據管道:事件驅動的實時決策 數據是現代係統的生命綫,但僵化的數據庫模型會阻礙敏捷性。本章聚焦於事件流作為核心數據傳輸層的設計。我們探討如何使用數據契約(Schema Registry)來管理事件的演進,確保下遊服務不會因上遊事件結構的微小變化而崩潰。我們將對比傳統ETL與現代Kappa架構,展示如何利用流處理引擎(如Flink或Spark Streaming)來實時地派生新的視圖和聚閤,實現比傳統批處理更低的延遲決策。 第九章:構建“無痛發布”的基礎設施抽象層 軟件交付的速度最終受限於基礎設施的靈活度。本書的最後一部分將架構設計延伸到基礎設施層麵。我們論述瞭如何構建“基礎設施即代碼”(IaC)的通用抽象層,使開發團隊能夠以聲明式的方式定義其服務所需的資源(網絡、數據庫、計算能力),而無需深入瞭解底層雲廠商的復雜API。這使得不同團隊可以使用統一的、可審計的方式來部署和配置其服務,極大地降低瞭運維的認知負荷,從而真正釋放瞭交付的速度潛力。 --- 結語:架構是關於權衡與溝通的藝術 《高效能架構設計》的核心思想是:優秀的架構不是一套靜態的圖錶,而是一套動態的、旨在管理不確定性的決策框架。它要求我們清晰地溝通權衡、主動管理技術債務,並將韌性設計融入到每一個分層中。本書旨在為架構師、資深工程師和技術領導者提供實用的工具和深刻的洞察力,幫助他們構建齣既能滿足當前業務需求,又能從容應對未來變革的下一代軟件係統。