<P style=''MARGIN: 0px''>Getting software released to users is often a painful, risky, and time-consuming process.</P> <P style=''MARGIN: 0px''>This groundbreaking new book sets out the principles and technical practices that enable</P> <P style=''MARGIN: 0px''>rapid, incremental delivery of high
Continuous delivery: reliable software releases through build, test, and deployment automation
β Scribed by Humble, Jez;Farley, David
- Publisher
- Addison-Wesley Professional
- Year
- 2010;2015
- Tongue
- English
- Leaves
- 501
- Series
- The Addison-Wesley Signature Series; A Martin Fowler Signature Book
- Edition
- Tenth printing
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
Winner of the 2011Jolt 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.
β¦ Table of Contents
Cover......Page 1
Contents......Page 10
Foreword......Page 22
Preface......Page 24
Acknowledgments......Page 32
About the Authors......Page 34
Part I: Foundations......Page 36
Introduction......Page 38
Some Common Release Antipatterns......Page 39
How Do We Achieve Our Goal?......Page 46
What Are the Benefits?......Page 52
The Release Candidate......Page 57
Principles of Software Delivery......Page 59
Summary......Page 64
Introduction......Page 66
Using Version Control......Page 67
Managing Dependencies......Page 73
Managing Software Configuration......Page 74
Managing Your Environments......Page 84
Summary......Page 89
Introduction......Page 90
Implementing Continuous Integration......Page 91
Prerequisites for Continuous Integration......Page 94
Using Continuous Integration Software......Page 98
Essential Practices......Page 101
Suggested Practices......Page 106
Distributed Teams......Page 110
Distributed Version Control Systems......Page 114
Summary......Page 117
Introduction......Page 118
Types of Tests......Page 119
Real-Life Situations and Strategies......Page 127
Process......Page 134
Summary......Page 136
Part II: The Deployment Pipeline......Page 138
Introduction......Page 140
What Is a Deployment Pipeline?......Page 141
Deployment Pipeline Practices......Page 148
The Commit Stage......Page 155
The Automated Acceptance Test Gate......Page 157
Subsequent Test Stages......Page 161
Preparing to Release......Page 163
Implementing a Deployment Pipeline......Page 168
Metrics......Page 172
Summary......Page 175
Introduction......Page 178
An Overview of Build Tools......Page 179
Principles and Practices of Build and Deployment Scripting......Page 187
Project Structure for Applications That Target the JVM......Page 192
Deployment Scripting......Page 195
Tips and Tricks......Page 199
Summary......Page 203
Introduction......Page 204
Commit Stage Principles and Practices......Page 205
The Results of the Commit Stage......Page 209
Commit Test Suite Principles and Practices......Page 212
Summary......Page 220
Introduction......Page 222
Why Is Automated Acceptance Testing Essential?......Page 223
Creating Acceptance Tests......Page 228
The Application Driver Layer......Page 233
Implementing Acceptance Tests......Page 239
The Acceptance Test Stage......Page 248
Acceptance Test Performance......Page 253
Summary......Page 257
Introduction......Page 260
Managing Nonfunctional Requirements......Page 261
Programming for Capacity......Page 263
Measuring Capacity......Page 266
The Capacity-Testing Environment......Page 269
Automating Capacity Testing......Page 273
Adding Capacity Tests to the Deployment Pipeline......Page 279
Additional Benefits of a Capacity Test System......Page 282
Summary......Page 283
Introduction......Page 284
Creating a Release Strategy......Page 285
Deploying and Promoting Your Application......Page 288
Rolling Back Deployments and Zero-Downtime Releases......Page 294
Emergency Fixes......Page 300
Continuous Deployment......Page 301
Tips and Tricks......Page 305
Summary......Page 308
Part III: The Delivery Ecosystem......Page 310
Introduction......Page 312
Understanding the Needs of the Operations Team......Page 314
Modeling and Managing Infrastructure......Page 318
Managing Server Provisioning and Configuration......Page 323
Managing the Configuration of Middleware......Page 330
Managing Infrastructure Services......Page 335
Virtualization......Page 338
Cloud Computing......Page 347
Monitoring Infrastructure and Applications......Page 352
Summary......Page 358
Introduction......Page 360
Database Scripting......Page 361
Incremental Change......Page 362
Rolling Back Databases and Zero-Downtime Releases......Page 366
Managing Test Data......Page 369
Data Management and the Deployment Pipeline......Page 373
Summary......Page 378
Introduction......Page 380
Keeping Your Application Releasable......Page 381
Dependencies......Page 386
Components......Page 391
Managing Dependency Graphs......Page 398
Managing Binaries......Page 408
Managing Dependencies with Maven......Page 410
Summary......Page 414
Introduction......Page 416
A Brief History of Revision Control......Page 417
Branching and Merging......Page 423
Distributed Version Control Systems......Page 428
Stream-Based Version Control Systems......Page 434
Develop on Mainline......Page 440
Branch for Release......Page 443
Branch by Feature......Page 445
Branch by Team......Page 447
Summary......Page 450
Introduction......Page 452
A Maturity Model for Configuration and Release Management......Page 454
Project Lifecycle......Page 456
A Risk Management Process......Page 464
Common Delivery ProblemsβTheir Symptoms and Causes......Page 467
Compliance and Auditing......Page 471
Summary......Page 477
Bibliography......Page 478
A......Page 480
B......Page 482
C......Page 483
D......Page 485
E......Page 487
G......Page 488
I......Page 489
L......Page 490
N......Page 491
P......Page 492
R......Page 493
S......Page 494
T......Page 496
V......Page 497
Z......Page 498
β¦ Subjects
Computer Science;Programming;Science;Technology;Software;Technical;Nonfiction;Business;Computers;Management;Engineering
π SIMILAR VOLUMES
<div><p><strong>Winner of the 2011 </strong>Jolt Excellence Award<strong>!</strong> </p><br><p>Getting software released to users is often a painful, risky, and time-consuming process.</p><br><p>This groundbreaking new book sets out the principles and technical practices that enable</p><br><p>rapi
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, deploy
<p><span>Winner of the 2011 </span><span>Jolt Excellence Award</span><span>!</span><span><br></span></p><p><span>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, in