图书基本信息
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。这使得不同团队可以使用统一的、可审计的方式来部署和配置其服务,极大地降低了运维的认知负荷,从而真正释放了交付的速度潜力。 --- 结语:架构是关于权衡与沟通的艺术 《高效能架构设计》的核心思想是:优秀的架构不是一套静态的图表,而是一套动态的、旨在管理不确定性的决策框架。它要求我们清晰地沟通权衡、主动管理技术债务,并将韧性设计融入到每一个分层中。本书旨在为架构师、资深工程师和技术领导者提供实用的工具和深刻的洞察力,帮助他们构建出既能满足当前业务需求,又能从容应对未来变革的下一代软件系统。