continuous_delivery_by_jez_humble_and_david_farley_table_of_contents

Continuous Delivery by Jez Humble and David Farley Table of Contents

Part I: Foundations

Chapter 1: The Problem of Delivering Software

Chapter 2: Configuration Management

Chapter 3: Continuous Integration

Chapter 4: Implementing a Testing Strategy

Part II: The Deployment Pipeline

Chapter 5: Anatomy of the Deployment Pipeline

Chapter 6: Build and Deployment Scripting

Build and Deployment Scripting

Build and Scripting

Chapter 6: Build and Deployment Scripting

Introduction

An Overview of Build Tools

Make

Ant

NAnt and MSBuild

Maven

Rake

Buildr

Psake

Principles and Practices of Build and Deployment Scripting

Create a Script for Each Stage in Your Deployment Pipeline

Use an Appropriate Technology to Deploy Your Application

Use the Same Scripts to Deploy to Every Environment

Use Your Operating System’s Packaging Tools

Ensure the Deployment Process Is Idem[[potent

Evolve Your Deployment System Incrementally

Project Structure for Applications That Target the JVM

Project Layout

Deployment Scripting

Deploying and Testing Layers

Testing Your Environment’s Configuration

Tips and Tricks

Always Use Relative Paths

Eliminate Manual Steps

Build In Traceability from Binaries to Version Control

Don't Check Binaries into Version Control as Part of Your Build

Test Targets Should Not Fail the Build

Constrain Your Application with Integrated Smoke Tests

.NET Tips and Tricks

Summary

Chapter 7: The Commit Stage

Introduction

Commit Stage Principles and Practices

Provide Fast, Useful Feedback

What Should Break the Commit Stage?

Tend the Commit Stage Carefully

Give Developers Ownership]]

Use a Build Master for Very Large Teams

The Results of the Commit Stage

The Artifact Repository

Commit Test Suite Principles and Practices

Avoid the User Interface

Use Dependency Injection

Avoid the Database

Avoid Asynchrony in Unit Test]]s

Using Test Doubles

Minimizing State in Tests

Faking Time

Brute Force

Summary

Chapter 8: Automated Acceptance]] Testing

Introduction

Why Is Automated Acceptance]] Testing Essential?

How to Create Maintainable Acceptance]] Test Suites

Testing against the GUI

Creating Acceptance]] Tests

The Role of Analysts and Testers

Analysis on Iterative Projects

Acceptance]] Criteria as Executable Specifications

The Application [[Driver Layer

How to Express Your Acceptance]] Criteria

The Window Driver Pattern: De[[coupling the Tests from the GUI

Implementing Acceptance]] Tests

State in Acceptance]] Tests

Process Boundaries]], Encapsulation, and Testing

Managing Asynchrony and Timeouts

Using Test Doubles

The Acceptance]] Test Stage

Keeping Acceptance]] Tests Green

Deployment Tests

Acceptance]] Test Performance

Refactor Common Tasks

Share Expensive Resources

Parallel Testing

Using Compute Grids

Summary

Chapter 9: Testing Nonfunctional Requirements

Introduction

Managing Nonfunctional Requirements

Analyzing Nonfunctional Requirements

Programming for Capacity

Measuring Capacity

How Should Success and Failure Be Defined for Capacity Tests?

The Capacity-Testing Environment

Automating Capacity Testing

Capacity Testing via the User Interface

Recording Interactions against a Service or Public API

Using Recorded Interaction Templates

Using Capacity Test Stubs to Develop Tests

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

The Release Plan

Releasing Products

Deploying and Promoting Your Application

The First Deployment

Modeling Your Release Process and Promoting Builds

Promoting Configuration

Orchestration

Deployments to Staging Environments

Rolling Back]] Deployments and Zero-Downtime Releases

Rolling Back]] by Redeploying the Previous Good Version

Zero-Downtime Releases

Blue-Green Deployments

Canary Releasing

Emergency Fixes

Continuous Deployment

Continuously]] Releasing User-Installed Software

Tips and Tricks

The People Who Do the Deployment Should Be Involved in Creating the Deployment Process

Log Deployment Activities

Don't Delete the Old Files, Move Them

Deployment Is the Whole Team’s Responsibility

Server Applications Should Not Have GUIs

Have a Warm-Up Period for a New Deployment

Fail Fast

Don't Make Changes Directly on the Production]] Environment]]

Summary

Part III: The Delivery Ecosystem

Part III: The Delivery Ecosystem

Chapter 11: Managing Infrastructure]] and Environments

Introduction

Understanding the Needs of the Operations Team

Documentation and Auditing

Alerts for Ab[[normal Events

IT Service Continuity Planning

Use the Technology the Operations Team Is Familiar With

Modeling and Managing Infrastructure]]

Controlling Access to Your Infrastructure]]

Making Changes to Infrastructure]]

Managing Server Pro[[visioning]] and Configuration

Pro[[visioning]] Servers

Ongoing Management of Servers

Managing the Configuration of Middleware

Managing Configuration

Research the Product

Examine How Your Middleware Handles State

Look for a Configuration API

Use a Better Technology

Managing Infrastructure]] Services

Multihomed Systems

Virtualization

Managing Virtual Environment]]s

Virtual Environment]]s and the Deployment Pipeline

Highly Parallel Testing with Virtual Environment]]s

Cloud Computing

Infrastructure]] in the Cloud

Platforms in the Cloud

One Size Doesn’t Have to Fit All

Criticisms of Cloud Computing

Monitoring]] Infrastructure]] and Applications

Collecting Data

Logging

Creating Dash[[boards

Behavior-Driven Monitoring]]

Summary

Chapter 12: Managing Data

Introduction

Database Scripting

Initializing Databases

Incremental Change

Versioning Your Database

Managing Orchestrated Changes

Rolling Back]] Databases and Zero-Downtime Releases

Rolling Back]] without Losing Data

De[[coupling Application [[Deployment from Database [[Migration

Managing Test Data

Faking the Database for Unit Test]]s

Managing the Coupling between Tests and Data

Test Isolation

Setup and Tear Down

Coherent Test Scenarios

Data Management and the Deployment Pipeline

Data in Commit Stage Tests

Data in Acceptance]] Tests

Data in Capacity Tests

Data in Other Test Stages

Summary

Chapter 13: Managing Components and Dependencies

Introduction

Keeping Your Application Releasable

Hide New Functionality Until It Is Finished

Make All Changes Incrementally

Branch by Abstraction

Dependencies

Dependency Hell

Managing Libraries

Components

How to Divide a Codebase into Components

Pipelining Components

The Integration Pipeline

Managing Dependency Graphs

Building Dependency Graphs

Pipelining Dependency Graphs

When Should We Trigger Builds?

Cautious Optimism

Circular Dependencies

Managing Binaries

How an Artifact Repository Should Work

How Your Deployment Pipeline Should Interact with the Artifact Repository

Managing Dependencies with Maven

Maven Dependency Refactoring]]s

Summary

Chapter 14: Advanced Version Control

Introduction

A Brief History of Revision Control

CVS

Subversion

Commercial Version Control Systems

Switch Off Pessimistic Locking

Branching]] and Merging

Merging

Branches, Streams, and Continuous Integration]]

Distributed Version Control Systems

What Is a Distributed Version Control System?

A Brief History of Distributed Version Control Systems

Distributed Version Control Systems in Corporate Environments

Using Distributed Version Control Systems

Stream-Based Version Control Systems

What Is a Stream-Based Version Control System?

Development Models with Streams

Static and Dynamic View]]s

Continuous Integration]] with Stream-Based Version Control Systems

Develop on Mainline

Making Complex Changes without Branching]]

Branch for Release

Branch by Feature

Branch by Team

Summary

Chapter 15: Managing Continuous Delivery

Introduction

A Maturity Model for Configuration and Release Management

How to Use the Maturity Model

Project Lifecycle

Identification

Inception

Initiation

Develop and Release

Operation

A Risk Management Process

Risk Management 101

Risk Management Timeline

How to Do a Risk-Management Exercise

Common Delivery Problems — Their Symptoms and Causes

In[[frequent or Buggy Deployments

Poor Application Quality

Poorly Managed Continuous Integration]] Process

Poor Configuration Management

Compliance and Auditing

Automation over Documentation

Enforcing Traceability

Working in Silos

Change Management

Summary

Bibliography

Index

Fair Use Sources

CI/CD: Continuous, Continuous Integration / Continuous Delivery, Continuous Deployment. Key Book: Continuous Delivery - Reliable Software Releases through Build, Test, and Deployment Automation

Introduction to Continuous Delivery, Configuration Management, Continuous Integration, The Deployment Pipeline, Automated Testing, Quality Assurance in Continuous Delivery, Managing Data in Continuous Delivery, Version Control for Everything, Build and Deployment Scripting, Environments on Demand, The Role of QA, Decoupling Deployment from Release, Managing Infrastructure and Environments, Monitoring and Feedback Loops, Implementing Continuous Delivery, Cultural and Organizational Change, Scaling Continuous Delivery, Advanced Continuous Delivery Practices, CI/CD Case Studies, CI/CD Conclusion

Continuous Delivery, Automation, Software Development, Build, Test, Deployment, Continuous Integration, Automated Testing, Deployment Pipeline, Configuration Management, Version Control, Quality Assurance, Infrastructure as Code, Monitoring, Feedback Loops, Cultural Change, Organizational Change, DevOps, Build Scripts, Deployment Scripts, Unit Testing, Integration Testing, Acceptance Testing, Performance Testing, Security Testing, Code Quality, Code Review, Feature Toggles, Branching Strategies, Merge Conflicts, Build Tools, CI/CD Tools, Virtualization, Containerization, Docker, Cloud Computing, AWS, Azure, Google Cloud Platform, Microservices, Database Management, Schema Evolution, Data Migration, Environment Management, Production Environment, Staging Environment, Development Environment, Load Balancing, Rollback Strategies, Zero Downtime Deployment, Scalability, Reliability, High Availability, Risk Management, Change Management, Release Management, User Acceptance Testing, Feature Branching, Mainline Development, Trunk-Based Development, Artifact Repository, Log Management, Incident Management, Post-mortem Analysis, Compliance, Regulatory Requirements, Software Licensing, Open Source Software, Third-party Dependencies, Build Optimization, Test Automation Frameworks, Scripting Languages, System Administration, Networking, Data Storage, Encryption, Authentication, Authorization, API Design, Service-Oriented Architecture, Legacy Systems, Technical Debt, Documentation, User Documentation, Developer Documentation, Operational Documentation.

Continuous Integration, Continuous Deployment, Continuous Delivery, Jenkins, GitLab CI/CD, GitHub Actions, CircleCI, Travis CI, Bamboo, TeamCity, Azure DevOps, CodePipeline, CodeBuild, CodeDeploy, Spinnaker, IBM UrbanCode Deploy, Argo CD, Tekton Pipelines, JFrog Artifactory, SonarQube, Docker in CI/CD, Kubernetes in CI/CD, Infrastructure as Code, Configuration Management Tools, Automated Testing in CI/CD, Deployment Strategies, Monitoring and Logging in CI/CD, Security in CI/CD, Microservices and CI/CD, CI/CD for Machine Learning, GitOps, Artifact Repository Management, Build Automation, Test Automation, Deployment Automation, Pipeline as Code, Environment Management, Feature Flag Management, Canary Releases, Blue/Green Deployments, Rollback Strategies, Load Testing in CI/CD, Performance Testing in CI/CD, Integration Testing in CI/CD, Service Virtualization, Secrets Management in CI/CD, Cloud-Native CI/CD, DevSecOps, Version Control Systems, Code Review Practices, CI/CD Metrics and KPIs, Container Orchestration in CI/CD, Serverless Deployments in CI/CD, Compliance in CI/CD, UI Testing in CI/CD, Mobile CI/CD, CDN Integration in CI/CD, Database Changes in CI/CD

Software Release Lifecycle, Software Development Lifecycle, Continuous Integration vs. Continuous Delivery vs. Continuous Deployment, Continuous X, CI/CD Tools, Continuous Improvement, DevOps, DevSecOps, Automation: Pipelines, Automation over Documentation, Artifact Repository, Build Automation - Automated Build - Build Pipeline, Build Server, Test Automation - Automated Testing, Change Management, Configuration Management, Deployment Pipeline; Delivery Ecosystem, Scripting (Build Scripting, Deployment Scripting), Version Control (Git, GitHub, GitHub Alternatives), CI/CD and Serverless - CI/CD and SRE - Cloud Native and CI/CD - CI/CD for Microservices - CI/CD Security - CI/CD and DevSecOps, CI/CD for Data Science - CI/CD and Databases, CI/CD for Machine Learning, CI/CD Bibliography (Continuous Delivery by Jez Humble and David Farley), CI/CD Courses, CI/CD Glossary, Awesome CI/CD, CI/CD GitHub, CI/CD Topics. (navbar_cicd - see also navbar_devops, navbar_iac, navbar_gitops)


© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers

SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.


continuous_delivery_by_jez_humble_and_david_farley_table_of_contents.txt · Last modified: 2024/04/28 03:40 (external edit)