Jez Humble, David Farley
Total Page:16
File Type:pdf, Size:1020Kb
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. ptg 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 ptg 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 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 [email protected] For sales outside the United States please contact: International Sales [email protected] Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data: ptg 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 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 Contents Foreword . ................................................................................................. xxi Preface . ................................................................................................... xxiii Acknowledgments . .................................................................................. xxxi About the Authors . ............................................................................... xxxiii ptg Part I: Foundations . .................................................................................. 1 Chapter 1: The Problem of Delivering Software . ................................. 3 Introduction . ................................................................................ 3 Some Common Release Antipatterns . .......................................... 4 Antipattern: Deploying Software Manually . .................................... 5 Antipattern: Deploying to a Production-like Environment Only after Development Is Complete ............................................................. 7 Antipattern: Manual Configuration Management of Production Environments . ............................................................................. 9 Can We Do Better? . ................................................................... 10 How Do We Achieve Our Goal? . ................................................. 11 EveryTheDoes FeedbackDelivery ThisChange Process Team MustShould Scale? MustBe Trigger Received .Receive............................................................ the as Feedback Soon as ProcessPossibleand Then . ........................ ......................Act on It . ...... 13141516 What Are the Benefits? . ................................................................ 17 Empowering Teams . ................................................................... 17 Reducing Errors . ........................................................................ 18 Lowering Stress . ........................................................................ 20 Deployment Flexibility . ............................................................... 21 Practice Makes Perfect .................................................................. 22 ix x Contents Contents The Release Candidate . ................................................................ 22 PrinciplesEvery Check-in of Software Leads Deliveryto a Potential . ................................................... Release . ................................. 2423 CreateAutomate a Repeatable, Almost Everything Reliable Process. ...................................................... for Releasing Software . .......... 2425 Keep Everything in Version Control . ............................................ 26 IfBuild It Hurts, Quality Do In It . More........................................................................ Frequently, and Bring the Pain Forward . ..... 2627 Done Means Released . ................................................................ 27 EverybodyContinuous Is Improvement Responsible .for........................................................... the Delivery Process . ........................ 28 Summary . .................................................................................... 29 Chapter 2: Configuration Management . .............................................. 31 Introduction . ................................................................................ 31 Using Version Control . ................................................................ 32 KeepCheck Absolutely In Regularly Everything to