Continuous Delivery 
made possible 
Domenico Musto 
@mimmozzo domenico.musto@gmail.com
What do I do ? 
.NET 
C# 
Team leading 
Web REST 
Ruby 
Automation Testing Agile
What is continuous delivery ?
Continuous integration
Continuous integration 
Continuous deployment
Continuous integration 
Continuous deployment 
Continuous delivery
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 less than 5 minutes (automated)
Easily and quickly 
- Being able to deploy in less than 5 minutes (automated) 
- Being confident that the software you are deploying has 
passed a well defined test suite
Easily and quickly 
- Being able to deploy in less than 5 minutes (automated) 
- 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 less than 5 minutes (automated) 
- 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 way
continuous integration 
and 
continuous deployment 
enable 
continuous delivery
Why do I care about all this ?
50%
It’s about build the right thing
35%
Reduce costs and risk by delivering 
small incremental changes
Motivation
How do I get there ?
How do I get there ? 
- CD is not for every single business
How do I get there ? 
- CD is not for every single business 
- It’s a cultural change
How do I get there ? 
- CD is not for every single business 
- It’s a cultural change 
- It takes time, and it will hurt you
How do I really get there ? 
- Split up the monolith
How do I really get there ? 
- Split up the monolith 
- Enable continuous integration
How do I really get there ? 
- Split up the monolith 
- Enable continuous integration 
- Enable continuous deployment
Continuous integration
Feature branching 
vs 
branching by abstraction
by Martin Fowler
by Martin Fowler
by Martin Fowler
by Martin Fowler
by Martin Fowler
Solid testing strategy
Integration pipeline
DEVELOPER 
RUN TESTS 
LOCALLY 
COMMIT 
UNIT TESTS BUILD CI TOOL 
PACKAGE
Continuous deployment
Packaging
Automatic installation and 
configuration
Database
Blue Green
Infrastructure as code
Decouple release from deployment
Deploy pipeline
Tools 
- TeamCity 
- Artifactory 
- Chef 
- Vagrant 
- Go
DEVELOPER 
RUN TESTS 
LOCALLY 
PACKAGE 
TEST CHEF VAGRANT 
COMMIT
TEAMCITY PACKAGE GO 
DEPLOY 
INTEGRATION 
TEST 
INTEGTATION 
DEPLOY STAGE 
TEST STAGE 
DEPLOY 
PRODUCTION 
TEST 
PRODUCTION
Let's wrap it up 
- Continuous integration (step by step) 
- No feature branching 
- Packaging 
- Integration pipeline 
- Continuous deployment (step by step) 
- Self installable components 
- Deploy pipeline 
- Provisioning
Thanks

Continuous delivery made possible