logo资料库

Continuous Delivery - Reliable Software Releases 【英文】.pdf

第1页 / 共497页
第2页 / 共497页
第3页 / 共497页
第4页 / 共497页
第5页 / 共497页
第6页 / 共497页
第7页 / 共497页
第8页 / 共497页
资料共497页,剩余部分请下载后查看
Contents
Foreword
Preface
Acknowledgments
About the Authors
Part I: Foundations
Chapter 1: The Problem of Delivering Software
Introduction
Some Common Release Antipatterns
How Do We Achieve Our Goal?
What Are the Benefits?
The Release Candidate
Principles of Software Delivery
Summary
Chapter 2: Configuration Management
Introduction
Using Version Control
Managing Dependencies
Managing Software Configuration
Managing Your Environments
Summary
Chapter 3: Continuous Integration
Introduction
Implementing Continuous Integration
Prerequisites for Continuous Integration
Using Continuous Integration Software
Essential Practices
Suggested Practices
Distributed Teams
Distributed Version Control Systems
Summary
Chapter 4: Implementing a Testing Strategy
Introduction
Types of Tests
Real-Life Situations and Strategies
Process
Summary
Part II: The Deployment Pipeline
Chapter 5: Anatomy of the Deployment Pipeline
Introduction
What Is a Deployment Pipeline?
Deployment Pipeline Practices
The Commit Stage
The Automated Acceptance Test Gate
Subsequent Test Stages
Preparing to Release
Implementing a Deployment Pipeline
Metrics
Summary
Chapter 6: Build and Deployment Scripting
Introduction
An Overview of Build Tools
Principles and Practices of Build and Deployment Scripting
Project Structure for Applications That Target the JVM
Deployment Scripting
Tips and Tricks
Summary
Chapter 7: The Commit Stage
Introduction
Commit Stage Principles and Practices
The Results of the Commit Stage
Commit Test Suite Principles and Practices
Summary
Chapter 8: Automated Acceptance Testing
Introduction
Why Is Automated Acceptance Testing Essential?
Creating Acceptance Tests
The Application Driver Layer
Implementing Acceptance Tests
The Acceptance Test Stage
Acceptance Test Performance
Summary
Chapter 9: Testing Nonfunctional Requirements
Introduction
Managing Nonfunctional Requirements
Programming for Capacity
Measuring Capacity
The Capacity-Testing Environment
Automating Capacity Testing
Adding Capacity Tests to the Deployment Pipeline
Additional Benefits of a Capacity Test System
Summary
Chapter 10: Deploying and Releasing Applications
Introduction
Creating a Release Strategy
Deploying and Promoting Your Application
Rolling Back Deployments and Zero-Downtime Releases
Emergency Fixes
Continuous Deployment
Tips and Tricks
Summary
Part III: The Delivery Ecosystem
Chapter 11: Managing Infrastructure and Environments
Introduction
Understanding the Needs of the Operations Team
Modeling and Managing Infrastructure
Managing Server Provisioning and Configuration
Managing the Configuration of Middleware
Managing Infrastructure Services
Virtualization
Cloud Computing
Monitoring Infrastructure and Applications
Summary
Chapter 12: Managing Data
Introduction
Database Scripting
Incremental Change
Rolling Back Databases and Zero-Downtime Releases
Managing Test Data
Data Management and the Deployment Pipeline
Summary
Chapter 13: Managing Components and Dependencies
Introduction
Keeping Your Application Releasable
Dependencies
Components
Managing Dependency Graphs
Managing Binaries
Managing Dependencies with Maven
Summary
Chapter 14: Advanced Version Control
Introduction
A Brief History of Revision Control
Branching and Merging
Distributed Version Control Systems
Stream-Based Version Control Systems
Develop on Mainline
Branch for Release
Branch by Feature
Branch by Team
Summary
Chapter 15: Managing Continuous Delivery
Introduction
A Maturity Model for Configuration and Release Management
Project Lifecycle
A Risk Management Process
Common Delivery Problems—Their Symptoms and Causes
Compliance and Auditing
Summary
Bibliography
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
ptg
Praise for Continuous Delivery “If you need to deploy software more frequently, this book is for you. Applying it will help you reduce risk, eliminate tedious work, and increase confidence. I’ll be using the principles and practices here on all my current projects.” —Kent Beck, Three Rivers Institute “Whether or not your software development team already understands that continuous integration is every bit as necessary as source code control, this is required reading. This book is unique in tying the whole development and delivery process together, providing a philosophy and principles, not just techniques and tools. The authors make topics from test automation to automated deployment accessible to a wide audience. Everyone on a development team, including programmers, testers, system administrators, DBAs, and managers, needs to read this book.” —Lisa Crispin, co-author of Agile Testing “For many organizations Continuous Delivery isn’t just a deployment methodology, it’s critical to doing business. This book shows you how to make Continuous Delivery an effective reality in your environment.” —James Turnbull, author of Pulling Strings with Puppet “A clear, precise, well-written book that gives readers an idea of what to expect for the release process. The authors give a step-by-step account of expectations and hurdles for software deployment. This book is a necessity for any software engineer’s library.” —Leyna Cotran, Institute for Software Research, University of California, Irvine “Humble and Farley illustrates what makes fast-growing web applications successful. Continuous deployment and delivery has gone from controversial to commonplace and this book covers it excel- lently. It’s truly the intersection of development and operations on many levels, and these guys nailed it.” —John Allspaw, VP Technical Operations, Etsy.com and author of The Art of Capacity Planning and Web Operations “If you are in the business of building and delivering a software-based service, you would be well served to internalize the concepts that are so clearly explained in Continuous Delivery. But going beyond just the concepts, Humble and Farley provide an excellent playbook for rapidly and reliably delivering change.” —Damon Edwards, President of DTO Solutions and co-editor of dev2ops.org “I believe that anyone who deals with software releases would be able to pick up this book, go to any chapter and quickly get valuable information; or read the book from cover to cover and be able to streamline their build and deploy process in a way that makes sense for their organization. In my opinion, this is an essential handbook for building, deploying, testing, and releasing software.” —Sarah Edrie, Director of Quality Engineering, Harvard Business School “Continuous Delivery is the logical next step after Continuous Integration for any modern software team. This book takes the admittedly ambitous goal of constantly delivering valuable software to customers, and makes it achievable through a set of clear, effective principles and practices.” —Rob Sanheim, Principal at Relevance, Inc.
This page intentionally left blank ptg
Continuous Delivery ptg
Continuous Delivery Jez Humble and David Farley Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Cape Town • Sydney • Tokyo • Singapore • Mexico City ptg
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382–3419 corpsales@pearsontechgroup.com For sales outside the United States please contact: International Sales international@pearson.com Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data: Humble, Jez. Continuous delivery : reliable software releases through build, test, and deployment automation / Jez Humble, David Farley. p. cm. Includes bibliographical references and index. ISBN 978-0-321-60191-9 (hardback : alk. paper) 1. Computer software--Development. 2. Computer software--Reliability. 3. Computer software--Testing. I. Farley, David, 1959- II. Title. QA76.76.D47H843 2010 005.1--dc22 2010022186 Copyright © 2011 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax (617) 671 3447 ISBN-13: 978–0–321–60191–9 ISBN-10: 0–321–60191–2 Text printed in the United States on recycled paper at RR Donnelley in Crawfordsville, Indiana. First printing August 2010 ptg
This book is dedicated to my dad, who has always given me his unconditional love and support. —Jez This book is dedicated to my dad, who always showed me the right direction. —Dave ptg
This page intentionally left blank ptg
分享到:
收藏