Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))
معرفی کتاب «Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))» نوشتهٔ Humble, Jez, Farley, David، منتشرشده توسط نشر Addison-Wesley Professional در سال 2010. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.
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 **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 minutesno 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 youre a developer, systems administrator, tester, or manager, this book will help your organization move from idea to release faster than everso you can deliver value to your business rapidly and reliably. \*\* ## Review 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. Ill 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 isnt just a deployment methodology, its 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 engineers 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 excellently. Its 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.__ ## From the Back Cover 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. In too many organizations, build, testing & deployment processes can take six months or more. This text demonstrates how to dramatically increase speed while reducing risk & improving code quality at the same time. It covers configuration management, source code control, release planning, auditing, compliance & more
دانلود کتاب Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))