Welcome to the Continuous Delivery Course page

Join my Continuous Delivery course to master the principles and practices of efficient and reliable software deployment through hands-on examples, automation pipelines, and testing strategies, elevating your software engineering skills.

Created By

Alireza Roshanzamir, an experienced software engineer and independent consultant, sharing practical insights to enhance software development understanding.
The course content is maintained in the github.com/AlirezaRoshanzamir/continuous-delivery-course repository. Please don't hesitate to star it.

Sessions

# Title Sections Video Slides Printable
Slides
Markdown
Slides
1 Course Outline Created By, Main References, Auxiliary References, Table of Contents
Foundations
2 Introduction Definition, Minimum Viable CD, Ingredients, Deployment Pipeline, Why?, Impacts (Software Delivery Performance, Culture), Relation with Other Movements, Scrumfall, Case Studies, CD Patterns Mindmap
3 The Problem of Delivering Software Release Antipatterns, Goals, Criterias, Benefits, Release Candidate, Principles
4 Configuration Management Version Control and Advices, Managing Dependencies, Managing Software Configuration, Managing Environments
5 Continuous Integration Implementation, Prerequisites, Practices, Challenges
6 Testing Strategy Types of Tests, Test Doubles, Test Coverage Criteria, TDD, Real-Life Situations and Strategies, Integration Testing, Process
Deplyment Pipeline
7 Anatomy of the Deployment Pipeline A Basic Deployment Pipeline, Practices, The Commit Stage, Test Stages, Release and Deployment Stages, Implementation, Metrics
8 Build and Deployment Scripting Build Tools, Monorepo vs Polyrepo, Principles and Practices, Package Managers, Code Generation, Sample Project Structure, Deployment Scripting, Tips and Tricks, Infrastructure as Code
9 The Commit Stage Principles and Practices, The Results, Commit Test Suite Principles and Practices
10 Automated Acceptance Testing Why?, Process and Roles, Testing and Documentation, The Application Driver Layer, Implementation, The Acceptance Test Stage, Performance Practices
11 Managing Nonfunctional Requirements Managing Nonfunctional Requirements
12 Deploying and Releasing Applications Release Strategy, Deploying and Promoting Your Application, Semantic Versioning, Rolling Back Deployments and Zero-Downtime Releases, Emergency Fixes, Continuous Deployment, Semantic Release, Tips and Tricks
Delivery Ecosystem
13 Managing Infrastructure and Environments Understanding Operation 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
14 Managing Data Database Scripting, Incremental Change, Rolling Back Databases and Zero-Downtime Releases, Managing Test Data, Data Management and the Deployment Pipeline
15 Managing Components and Dependencies Keeping Application Releasable, Dependencies, Components, Managing Dependency Graph, Managing Binaries
16 Advanced Version Control Brief history, Branching and Merging, Distributed Version Control Systems (DVCS), Stream-Based Version Control Systems, Branching Patterns, Popular Branching Policies
17 Managing Continuous Delivery Maturity Models (Jez Humble Maturity Model, Qualitic Maturity Model, Google Test Certified Ladder), Project Lifecycle, Risk Management Process, Common Delivery Problem (Symptoms and Causes)

The presentation slides are created using the reveal.js library. You have access to all the features provided by this library. You can enter overview mode by pressing ESC or O, enable speaker view by pressing S, activate full-screen mode by pressing F, initiate a search by pressing Ctrl+Shift+F, zoom in by pressing Ctrl+MouseClick, and print as PDF by appending ?print-pdf to the end of the URL and using the browser's print dialog.

Example Repository

You can visit the example repository where some practices from this course are demonstrated.