Continuous delivery
made possible
Domenico Musto domenico.musto@gmail.com
@mimmozzo
50%
35%
What do you think about this ?
Continuous delivery
▪ Reduce time to market
▪ Quickly adapt your product to market/customers needs
▪ Enable experimentation
▪ Create an awesome motivated team
Domenico Musto
▪ Principal Engineer at Spektrix
▪ Distributed systems
▪ REST
▪ Messaging
▪ Automation testing
▪ Continuous delivery
domenico.musto@gmail.com
@mimmozzo
Agenda
▪ Continuous integration
▪ Continuous deployment
▪ Continuous delivery
▪ How to get there
Continuous integration
The process of frequently integrating the code you are
working on with everybody else’s code
Continuous deployment
Automatically deploy on an integration test environment the
"integrated code“.
Have a reasonable automated way of deploy software to a
production environment
Continuous delivery
The ability to easily and quickly ship new value/features to
customers at any point in time
Easily and quickly
▪ Being able to deploy in about 5 minutes in an automated fashion
Easily and quickly
▪ Being able to deploy in about 5 minutes in an automated fashion
▪ Being confident that the software you are deploying has passed a well defined
test suite
Easily and quickly
▪ Being able to deploy in about 5 minutes in an automated fashion
▪ Being confident that the software you are deploying has passed a well defined
test suite
▪ Being able to immediately collect info about the new version of the software
Easily and quickly
▪ Being able to deploy in about 5 minutes in an automated fashion
▪ Being confident that the software you are deploying has passed a well defined
test suite
▪ Being able to immediately collect info about the new version of the software
▪ Being able to quickly rollback to the previous version in a matter of minutes in an
automated fashion
Continuous integration
+
Continuous deployment
=
Continuous delivery
Maybe you didn’t know that..
▪ Continuous delivery is not suitable for every business
Maybe you didn’t know that..
▪ Continuous delivery is not suitable for every business
▪ It’s a cultural change
Maybe you didn’t know that..
▪ Continuous delivery is not suitable for every business
▪ It’s a cultural change
▪ It takes time and it will hurt you
How do I get there ?
▪ Kill the monolith
▪ Enable continuous integration
▪ Enable continuous deployment
▪ Process and team structure
Continuous integration
Trunk based development
Trunk based development
▪ Pair programming over the pull request model
Trunk based development
▪ Pair programming over the pull request model
▪ Features toggle
Trunk based development
▪ Pair programming over the pull request model
▪ Features toggle
▪ Branching by abstraction over feature branching
Feature branching
vs
branching by abstraction
Branching by
abstraction
By Martin Fowler
Branching by
abstraction
By Martin Fowler
Branching by
abstraction
By Martin Fowler
Branching by
abstraction
By Martin Fowler
Solid testing strategy
Integration pipeline
Code
changeDev
Run
tests
locally
Dev CommitDev
Build
and
test
CI Create
artefactCI
Continuous deployment
Deployment pipeline
Smart packages
Database
▪ Database schema as source code
▪ Migration scripts are generated, not stored
▪ Database schema works with 2 versions of the software
▪ Spread breaking changes across multiple deployments
Infrastructure
▪ Blue green deployment
Infrastructure
▪ Blue green deployment
▪ Infrastructure as code
Infrastructure
▪ Blue green deployment
▪ Infrastructure as code
▪ Tooling
Decouple release from deployment
▪ Delivery is not deployment (it may require manual intervention)
Decouple release from deployment
▪ Delivery is not deployment (it may require manual intervention)
▪ Feature toggles
Process and team structure
Process and team structure
▪ Create cross functional autonomous teams
Process and team structure
▪ Create cross functional autonomous teams
▪ Product authority within the team
Process and team structure
▪ Create cross functional autonomous teams
▪ Product authority within the team
▪ QAs embedded in the team
Process and team structure
▪ Create cross functional autonomous teams
▪ Product authority within the team
▪ QAs embedded in the team
▪ build quality in over than testing at the end
Process and team structure
▪ Create cross functional autonomous teams
▪ Product authority within the team
▪ QAs embedded in the team
▪ build quality in over than testing at the end
▪ close to the code and the architecture to advise on best testing strategy
Process and team structure
▪ Create cross functional autonomous teams
▪ Product authority within the team
▪ QAs embedded in the team
▪ build quality in over than testing at the end
▪ close to the code and the architecture to advise on best testing strategy
▪ Avoid cross teams code reviews and pull requests
Summary
▪ Enable continuous integration (step by step)
▪ Adopt trunk based development
▪ Integration pipeline
▪ Artefacts
▪ Enable continuous deployment (step by step)
▪ Deploy pipeline
▪ Smart packages
▪ Infrastructure as code
▪ Adjust the process (step by step)
▪ Create autonomous teams
▪ Create a shared testing strategy
Continuous delivery
▪ Reduce time to market
▪ Quickly adapt your product to market/customers needs
▪ Enable experimentation
▪ Create an awesome motivated team
“Continuous delivery doesn't have to
mean new features in prod every
minute. It's about making releases a
non-event.”
Suzie Prince
Thanks.
domenico.musto@gmail.com
@mimmozzo

Domenico Musto "Continuous Delivery Made Possible"

Editor's Notes

  • #3 it’s not used Doesn’t bring value to the business
  • #4 Buy a car for 100 and then pay another 35 to get it delivered
  • #22 Integrate on master multiple times a day If you’re not doing it it is not continuous integration Using CI so continuous integration Wish CI should be called build tool
  • #24 PR model good for open source I wish git didn’t make branching so easy