Overview
Continuous Delivery (CD) is a holistic approach to software development and has a significant impact on the ways in which organisations operate.
This Advanced Continuous Delivery training course is aimed at people already familiar with the concepts of Continuous Delivery but who wish to go beyond the basics of Continuous Integration and deployment automation by exploring significantly more advanced techniques.
The Deployment Pipeline is a central concept in Continuous Delivery. It represents an effective, controlled channel through which all changes destined for production pass.
A defining objective in CD is to work so that our software is always in a “releasable state”. By applying high levels of automation to our development process, in the form of a Deployment Pipeline, we pass all changes to our production systems through this channel and evaluate them prior to release. This means that the pipeline quickly becomes a strategic resource.
As our use of this important tool grows, the performance of the pipeline, in terms of the rapidity with which it can give valuable feedback on the quality of your work, becomes a central concern.
This course explores:
- Effective models for deployment pipelines
- How the scope of your pipeline(s) impacts on team structure, and vice versa
- How do you optimise your deployment pipeline(s) to give fast feedback?
- How do you protect this strategic “channel to production”?
This course will allow your organisation to become more experimental and capable of reacting quickly and efficiently to change, enabling your software development process to become a tool that enables this adaptability rather than an impediment to it.
The modular course is taught through a mix of presentations, workshops and interactive sessions.
Outline
This course is modular and will be tailored to the attendees, with different aspects of the course getting more (or less) focus. Here is a typical agenda:
Day 1
Foundations of Continuous Delivery
- Recap of Principles of CD
- Importance of Cycle Time
- Controlling the Variables
- The goals & structure of a Deployment Pipeline
Infrastructure As Code
- What is it Infra as Code?
- Pros & Cons of Three Strategies for Managing Infrastructure
- Principles
- Practices
- Cloud Native Strategies
- Addressing Config Management Debt
- Security Concerns in Infrastructure as Code
Team Structure & Software Architecture
- The Link Between Software Architecture & Org/Team Structure
- Managing Organisational Coupling
The Scope of a Deployment Pipeline - Strategies for Scaling Up
- What is the correct scope of a Deployment Pipeline?
- Why is this important?
- Three Strategies for “Scaling-Up” Pros & Cons
- Configuration Management in Complex Systems
Day 2
The Anatomy of a Deployment Pipeline
- Development Environments for CD
- Successful Branching Strategies for CD
- Anatomy of a Commit Stage
- Anatomy of an Acceptance Test Stage
- The Role of Manual Testing in CD
- Performance Testing Stages
- Data Migration
- Strategies for Release into Production
- Working in Regulated Environments
- Automating Deployment
Managing Data
- CD & Data Fundamentals
- What to Version Control?
- What Data Matters?
- Data in Production
- Deployment-Time Data Migration
- Other Data Migration Strategies & Patterns
- Testing Data Migration
Optimising Deployment Pipelines
- What is a Minimal Deployment Pipeline?
- Pipeline as a Strategic Resource
- Strategies for Speeding-up Commit Stages
- Strategies for Speeding-up Acceptance & Other Test Stages
- Dealing with Test Failures
- Dealing with Intermittent Tests
- Managing Changes to the Pipeline
Pre-requisites
This is an Advanced CD course, and so we expect that attendees will already be broadly familiar with the concepts of Continuous Delivery, as described in the Continuous Delivery book. Practical experience with agile methods will help.
Attendees should be practising test and deployment automation, automated configuration management, and, in particular, Continuous Integration. This course builds on these foundations and takes the ideas further.
About The Trainer
Dave Farley is a thought-leader in the field of Continuous Delivery, DevOps and Software Development in general. He is co-author of the Jolt-award winning book 'Continuous Delivery', a regular conference speaker and blogger and a contributor to the Reactive Manifesto.
Dave has been having fun with computers for over 30 years. Over that period he has worked on most types of software, from firmware, through tinkering with operating systems and device drivers, to writing games, and commercial applications of all shapes and sizes.
He started working in large scale distributed systems about 25 years ago, doing research into the development of loose-coupled, message-based systems - a forerunner of MicroService architectures. He has a wide range of experience leading the development of complex software in teams, both large and small, in the UK and the USA.
Dave was an early adopter of agile development techniques, employing iterative development, continuous integration and significant levels of automated testing on commercial projects from the early 1990s.
Dave is an independent software developer and consultant, and founder and director of Continuous Delivery Ltd.