Continuous, 
continuous, continuous. 
A better way to delivery better code 
Michele Orselli - @_orso_ 
Francesco Trucchia - @cphp
Francesco Trucchia 
Vice Presidente @ideato 
@cphp 
Michele Orselli 
CTO @ideato 
@_orso_
Agenda 
1. Motivations 
2. Bad smells 
3. What is CD 
4. Implementing CD
Delivering 
working software 
matters to business people
1. Find the right target market 
2. Testing the business model 
3. Continuous improvement 
4. Scaling fast
Find the right 
target market
Testing the 
business model
Continuous 
improvement
Scaling fast
Bad smells 
of software delivery 
https://www.flickr.com/photos/gotosira/4699308007
1. Business knowledge is not shared 
2. Long release time 
3. No reality check 
4. Long bugs backlog 
5. Dev and ops silos
Business knowledge 
is not shared
Long release time
No reality check
Long bugs backlog
Dev and ops silos
How can you fix these 
problems?
Continuous Delivery to 
the rescue!
software is always in a deployable state 
deployable software over adding new features 
everyone can have feedback on a change 
one click deploy
Why CD it’s useful?
value stream map
Requirements Development QA Release
where do we start? 
when are we finished? 
how do we proceed? 
!
CD Maturity Model
framework to understand where we are 
two dimensions: process vs app 
!
Process 
optimized 
! 
measured 
! 
consistent 
! 
repeatable 
! 
non repeatable
Application 
code | configuration | host | data | test
Thank you!
How to proceed? 
incremental approach 
remember: everyone in the team is responsible for 
software delivery 
!
Iterative Development
no big releases 
prioritize by business value 
deliver value on every iteration
short feedback cycle 
small releases are easier to manage
! 
but… I want all the features!
short feedback means 
test your business early 
short deploys 
less bugs
Continuous Integration
changes are integrated early 
reduced risks 
early feedback 
“if it hurts do it more frequently”
keep everything in version control 
code, doc, data
you have tests for you app 
unit 
acceptance 
capacity
but… tests are a waste of time! 
what about testers?
automated tests mean 
higher confidence on your software 
short deploys 
less bugs
CI aims to automate build process
checkout 
compile 
data integration 
automatic tests 
metrics collection 
deploy
everyone commits every day
data as code 
the DBA is part of the team
don’t checkin broken code
team gets visible feedback on builds
keep the build green
Wait… I have a big feature!
branching vs developing on trunk 
latent code patterns eg. feature flags
test in a copy of the production env 
no more “works on my machine”
today creating vm/containers is cheap! 
vagrant, docker
Continuous Delivery
the last mile
Deployment Pipeline
core concept in CD 
visualize the stages of the process 
metaphor: assembly line
Commit Stage 
Automated 
Acceptance 
Stage 
UAT 
Manual Testing 
Capacity 
Testing 
Stage 
Production
if a step fails the pipeline stops 
build binaries once 
deploy in the same way in every env 
smoke test deploy 
deploy in a copy of production
compile 
create binaries 
unit tests 
code analysis 
prepares data for subsequent steps 
Commit Stage
acceptance tests 
slow but high confidence 
run in parallel 
whole team responsibility 
high confidence our software works 
Automated 
Acceptance 
Stage
what we learned from CI 
data as code 
the DBA is part of the team 
UAT 
Manual Testing
infrastructure as code 
puppet, chef, ansible, docker 
ops are part of the team 
UAT 
Manual Testing
QA with testers 
showcase 
env should resemble production 
UAT 
Manual Testing
You can measure: 
Scalability 
Throughput 
Load 
Capacity 
Testing 
Stage
deploy is already tested on UAT 
blue/green deploy 
canary release 
Production
Create the Pipeline
incremental approach
walking skeleton 
automate build 
automate unit tests 
automate acceptance test 
automate release
So… 
automation can reduce waste 
focus on value 
incremental approach 
cross functional teams
http://www.infoq.com/minibooks/continuous-delivery-overview
Questions? 
https://joind.in/12250 
Francesco Trucchia 
Vice Presidente @ideato 
@cphp 
Michele Orselli 
CTO @ideato 
@_orso_

Continuous, continuous, continuous