SlideShare a Scribd company logo
MILAN november 28th/29th 2014 
The Continuous Delivery Value 
David Funaro 
! 
Crash dei sistemi, Migrazioni fallite, aggiornamenti interrotti: 
sono tutte problematiche che nessuno vorrebbe mai 
incontrare durante l'introduzione di nuove funzionalità nel 
proprio applicativo (deploy) e ... la speranza non basta. 
L'attività di deploy è importante tanto quanto quelle che la 
precedono. La Continuous Delivery è un insieme di 
strumenti e metodologie che permetteranno di rendere i 
rilasci a basso rischio, economici, veloci, predicibili e ... 
sonni tranquilli. 
! 
@ingdavidino - Dnsee
MILAN november 28th/29th 2014 – David Funaro 
The 
Continuous Delivery 
Value
MILAN november 28th/29th 2014 – David Funaro 
David Funaro 
davidfunaro.com 
@ingdavidino
MILAN november 28th/29th 2014 – David Funaro 
First Release
MILAN november 28th/29th 2014 – David Funaro 
Release Day
MILAN november 28th/29th 2014 – David Funaro 
WRONG WAY 
This talk is for you…
MILAN november 28th/29th 2014 – David Funaro 
Overview
MILAN november 28th/29th 2014 – David Funaro 
Facts 
IT Business 
release new features as 
soon as possible 
keep system up and running
MILAN november 28th/29th 2014 – David Funaro 
… with CD 
IT 
Business
MILAN november 28th/29th 2014 – David Funaro 
RELEASE 
FEEDBACK 
new features monetize bug 
performance layout
MILAN november 28th/29th 2014 – David Funaro 
? Miss Release Price ? 
RELEASE 
€
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
Change 
RELEASE
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
Change 
RELEASE 
Time 
Security 
Skills 
Cost 
Predictable 
Stress 
Repeatability
MILAN november 28th/29th 2014 – David Funaro 
Time 
• How many time you need to release 
software
MILAN november 28th/29th 2014 – David Funaro 
Security 
• Everything will be ok ? 
• Can i be sure that every needed step will 
be done ? 
• Exceptions, are managed ? 
• Data migration goes well ? 
• Can i go back (rollback) ?
MILAN november 28th/29th 2014 – David Funaro 
Skills 
• Have, the selected person, all the skill 
needed to terminate the procedure ? 
• What about his behavior in some 
exception flow case
MILAN november 28th/29th 2014 – David Funaro 
Cost 
• How many people you need ? 
• For how many time ? 
• Other Resources ?
MILAN november 28th/29th 2014 – David Funaro 
Predictable 
• are you able to indicate how much time will 
care ?
MILAN november 28th/29th 2014 – David Funaro 
Stress 
• What about the stress 
• stress => error-prone
MILAN november 28th/29th 2014 – David Funaro 
Repeatability 
• Just finish a deploy. Software released. A bug 
is found. You have to re-start the deploy 
procedure
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
RELEASE 
Production
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
RELEASE 
Production 
Time 
Security 
Skills 
Cost 
Predictable 
Stress 
Repeatability
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
RELEASE 
Staging 
Production 
Time 
Security 
Skills 
Cost 
Predictable 
Stress 
Repeatability
MILAN november 28th/29th 2014 – David Funaro 
Reaction Metrics 
RELEASE 
Staging 
Production 
Testing 
Time 
Security 
Skills 
Cost 
Predictable 
Stress 
Repeatability
MILAN november 28th/29th 2014 – David Funaro 
No Automation Process ?
MILAN november 28th/29th 2014 – David Funaro 
Lots of things to 
consider 
• Code evolution 
• Code dependency management 
• System evolution management 
• Data management and architecture 
• Component management
MILAN november 28th/29th 2014 – David Funaro 
Software Release 
• Low Risk 
• Cheap 
• Frequent 
• Rapid 
• Predictable 
... should be 
Continuous Delivery
MILAN november 28th/29th 2014 – David Funaro 
CD Requirements 
• Source Code Management 
• Continuous Integration Server 
• Automated Deploy 
• Real Time Alerting 
• Root Cause Analysis
MILAN november 28th/29th 2014 – David Funaro 
CD FLOW 
Commit / 
push 
Automated 
Deploy 
Procedure 
Basic Scenario Notify Team 
Real Time 
Alerting 
Automated 
Testing 
RELEASE
MILAN november 28th/29th 2014 – David Funaro 
CD FLOW 
Commit / 
push 
Automated 
Deploy 
Procedure 
Basic Scenario Notify Team 
Real Time 
Alerting 
Automated 
Testing 
RELEASE
MILAN november 28th/29th 2014 – David Funaro 
RELEASE
MILAN november 28th/29th 2014 – David Funaro 
Deploy Pipeline 
Commit Stage 
Compile 
UnitTest 
Analysis 
Release 
Automated 
acceptance 
testign 
Automated 
capacity 
testing 
example 
Manual Testing 
Showcases 
Explorarory 
testing
MILAN november 28th/29th 2014 – David Funaro 
Tools 
Continuous 
Delivery 
Practices Methodologies 
Cautions
MILAN november 28th/29th 2014 – David Funaro 
CD Anti-patterns 
• Deploy software manually 
• Manual Configuration 
• First Deploy when development is 
complete 
• … to a production-like Environment
MILAN november 28th/29th 2014 – David Funaro 
CD Benefits 
• Empower Team 
• Reducing Errors 
• Lowering Stress 
• Deployment Flexibility 
• Practice Make Perfect
MILAN november 28th/29th 2014 – David Funaro 
Principles 
Keep Everything in version control 
Automate Almost Everything 
If it hurts, do it more frequently 
Done means released 
Build quality in
MILAN november 28th/29th 2014 – David Funaro 
SECTION I 
Source Code Management
MILAN november 28th/29th 2014 – David Funaro 
The problem 
i sent you a mail with 
the last change 
... are you 
shure ? 
i can’t find the new file ?!?
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
SCM : What is it ? 
3 
5 
7 
10 
Repository
MILAN november 28th/29th 2014 – David Funaro 
Check-out 
Local 
Pull 
8 
29
MILAN november 28th/29th 2014 – David Funaro 
Check-out 
2 
9 
Local 
Pull 
8
MILAN november 28th/29th 2014 – David Funaro 
Check-in 
Push 
Local 
3
MILAN november 28th/29th 2014 – David Funaro 
Check-in 
Push 
Local 
34
MILAN november 28th/29th 2014 – David Funaro 
SCM : What it does ? 
• Keeping multiple file version 
• Collaboration
MILAN november 28th/29th 2014 
CHECK POINT 
David Funaro 
! 
Crash dei sistemi, Migrazioni fallite, aggiornamenti interrotti: 
sono tutte problematiche che nessuno vorrebbe mai 
incontrare durante l'introduzione di nuove funzionalità nel 
proprio applicativo (deploy) e ... la speranza non basta. 
L'attività di deploy è importante tanto quanto quelle che la 
precedono. La Continuous Delivery è un insieme di 
strumenti e metodologie che permetteranno di rendere i 
rilasci a basso rischio, economici, veloci, predicibili e ... 
sonni tranquilli. 
! 
@ingdavidino - Dnsee
MILAN november 28th/29th 2014 – David Funaro 
Application Evolution
MILAN november 28th/29th 2014 – David Funaro 
Collaboration
MILAN november 28th/29th 2014 – David Funaro 
Cautions 
isn’t just for source code 
you need everything required to re-create your 
application’s binaries and the environments in 
which they run.
MILAN november 28th/29th 2014 – David Funaro 
Best Practice 
• Little Commit 
• Frequent Commit 
• Consistent commit 
• Use Meaningful Commit message
MILAN november 28th/29th 2014 – David Funaro 
Different Products
MILAN november 28th/29th 2014 – David Funaro 
SECTION II 
Continuous Integration
MILAN november 28th/29th 2014 – David Funaro 
Ops 
(after one commit ) 
After your commit 
nothing works anymore 
But ... “was working on 
my computer” 
INTEGRATION PROBLEM
MILAN november 28th/29th 2014 – David Funaro 
Ops (after deploy in prod) 
It was working on the 
stage environment !!! 
INTEGRATION PROBLEM
MILAN november 28th/29th 2014 – David Funaro 
• sleepless nights before demo ... bug just after 
release 
• 
sleepless nights before demo ... bug just after release
MILAN november 28th/29th 2014 – David Funaro 
Resolve defects 
Cost 
Analysis Design Implementation Testing Release
MILAN november 28th/29th 2014 – David Funaro 
t 
integration 
Regression 
Working 
Broken
MILAN november 28th/29th 2014 – David Funaro 
t 
integration 
Regression 
Working 
Broken 
Effort
MILAN november 28th/29th 2014 – David Funaro 
Good Solution 
In software development the components 
integration need to be tested continuosly... 
! 
in order to find inconsistencies 
as soon as possible
MILAN november 28th/29th 2014 – David Funaro 
Continuous Integration
MILAN november 28th/29th 2014 – David Funaro 
Continuous Integration is a software 
development practice where members of a team 
integrate their work frequently, usually each 
person integrates at least daily - leading to 
multiple integrations per day. 
Each integration is verified by an automated 
build (including test) to detect integration errors 
as quickly as possible. 
Martin Fowler
MILAN november 28th/29th 2014 – David Funaro 
Requirements 
Source Code Management
MILAN november 28th/29th 2014 – David Funaro 
Requirements
MILAN november 28th/29th 2014 – David Funaro 
Agile-Testing-Quadrants
MILAN november 28th/29th 2014 – David Funaro 
CI Flow
MILAN november 28th/29th 2014 – David Funaro 
F 
CI Flow
MILAN november 28th/29th 2014 – David Funaro 
F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
F 
F 
F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
F 
F 
F 
F 
F 
F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
F 
F 
F 
F 
F 
F 
F F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
F 
F 
F 
F 
F 
F 
F F 
Checkout last Commit 
CI Flow 
Build and Tests Process
MILAN november 28th/29th 2014 – David Funaro 
Build & Test 
✓ Process creating executable code 
✓ Unit test 
✓ Quality criteria 
✓ Functional Test 
✓ Non Functional Test 
Valid Syntax Compile 
Code behavior 
Code coverage, Mass detector 
Business Acceptance Criteria 
Application performance 
PASS
MILAN november 28th/29th 2014 – David Funaro 
CI - Reduce Risk 
• Say goodbye to long and tense integrations 
• Increase visibility which enables greater communication 
• Catch issues fast and nip them in the bud 
• Spend less time debugging and more time adding features 
• Proceed in the confidence you’re building on a solid foundation 
• Stop waiting to find out if your code’s going to work 
• Reduce integration problems allowing you to deliver software 
more rapidly
MILAN november 28th/29th 2014 – David Funaro 
CI - Output 
System Status Documentation/ 
Artifacts 
Quality Check
MILAN november 28th/29th 2014 – David Funaro 
“Continuous Integration doesn’t get rid of 
bugs, but it does make them dramatically 
easier to find and remove.” 
Martin Fowler
MILAN november 28th/29th 2014 – David Funaro 
Ci - Best practice 
• CI server === Production Server 
• Integrate it from the first commit 
• Find best way to get notified
MILAN november 28th/29th 2014 – David Funaro 
Immediate feedback of the health of the system
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
Ci - software 
... more and more
MILAN november 28th/29th 2014 – David Funaro 
SECTION III Automated Deploy
MILAN november 28th/29th 2014 – David Funaro 
Deployment 
“all the activities that make a software 
system available for use” 
Wikipedia
MILAN november 28th/29th 2014 – David Funaro 
Deploy 
A Critical part of the application life-cycle
MILAN november 28th/29th 2014 – David Funaro 
RELEASE 
Real ?
MILAN november 28th/29th 2014 – David Funaro 
RELEASE 
Real ? 
RRRRREEEELELLLELEEEAEAAAASSSSESEEEE RRRRREEEELELLLELEEEAEAAAASSSSESEEEE RELEASE 
feedback
MILAN november 28th/29th 2014 – David Funaro 
Deployment 
• Low Risk 
• Cheap 
• Frequent 
• Rapid 
• Predictable
MILAN november 28th/29th 2014 – David Funaro 
Low Risk 
• Exception catched 
• Rollback 
• Data on secure
MILAN november 28th/29th 2014 – David Funaro 
Cheap 
• no more than one click 
• no more than one person 
• no skilled person
MILAN november 28th/29th 2014 – David Funaro 
Frequent 
• to get feedback
MILAN november 28th/29th 2014 – David Funaro 
Rapid
MILAN november 28th/29th 2014 – David Funaro 
Predictable
MILAN november 28th/29th 2014 – David Funaro 
Incomplete ways
MILAN november 28th/29th 2014 – David Funaro 
is that a deploy procedure ? 
$ git pull origin master 
$ svn update 
Remote Desktop 
Versioning update
MILAN november 28th/29th 2014 – David Funaro 
Problems 
• Incomplete 
• Manual procedure 
• Slow 
• Server Downtime 
• No data migration 
• No Rollback
MILAN november 28th/29th 2014 – David Funaro 
Automated 
Deployment Goals
MILAN november 28th/29th 2014 – David Funaro 
Automated Deployment Goals 
Deploy 
one click deploy
MILAN november 28th/29th 2014 – David Funaro 
Automated Deployment Goals 
AnyTime AnyWhere AnyOne
MILAN november 28th/29th 2014 – David Funaro 
Automated Deployment Goals 
Rollback
MILAN november 28th/29th 2014 – David Funaro 
Automated Deployment Goals 
no downtime
MILAN november 28th/29th 2014 – David Funaro 
Automated Deployment Goals 
Frontend 1 Frontend 1I Frontend III 
Balancer 
Scalable
MILAN november 28th/29th 2014 – David Funaro 
Deployment Elements 
• Executable Code 
• Dependency Management 
• Software configuration 
• Infrastructure Management 
• Data Migrations 
• Manage Cache
MILAN november 28th/29th 2014 – David Funaro 
Executable code (SCM)
MILAN november 28th/29th 2014 – David Funaro 
Dependency Management
MILAN november 28th/29th 2014 – David Funaro 
How you keep updated your libraries 
dependencies ? 
to get the feature 103 done, i 
use library XXX 
ok, i’ll note it 
here ... 
to get the feature 103 done, i 
use library XXX 
OK
MILAN november 28th/29th 2014 – David Funaro 
PIP
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
Data Migration
MILAN november 28th/29th 2014 – David Funaro 
What if, after your first production 
deployment, you have to change the Entity 
Relationship ?
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
Infrastructure 
Management
MILAN november 28th/29th 2014 – David Funaro 
How you keep updated your OS componets/ 
libraries ? 
to get the feature 103 done, i 
use library XXX, that require 
the module 288 
ok, i’ll note it 
here ... 
to get the feature 103 done, i 
use library XXX, that require 
OK the module 903
MILAN november 28th/29th 2014 – David Funaro 
A way to setup your environment
MILAN november 28th/29th 2014 – David Funaro 
Write 
Configuration 
Script
MILAN november 28th/29th 2014 – David Funaro 
Write 
Configuration 
Script 
Versionable
MILAN november 28th/29th 2014 – David Funaro 
Environment 
Management
MILAN november 28th/29th 2014 – David Funaro 
Staging Production Testing
MILAN november 28th/29th 2014 – David Funaro 
Manual - Follow recipe 
• Integrity problems 
• Problem with exception handling 
• Basic Skills requirements 
• Time consuming - expensive 
• Error - prone 
• Stress
MILAN november 28th/29th 2014 – David Funaro 
Build a custom Script 
• Do a backup 
• Create new directory 
• Update the code 
• Update dependencies 
• Run migration data 
• Update Environements
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
Existing Tools 
Fabric 
... and more others
MILAN november 28th/29th 2014 – David Funaro 
SECTION IV Realtime Alerting
MILAN november 28th/29th 2014 – David Funaro 
Waiting for customers 
feedback ?
MILAN november 28th/29th 2014 – David Funaro 
Waiting for customers 
feedback ?
MILAN november 28th/29th 2014 – David Funaro 
Real Time Monitoring 
• Application health 
• System heatlh 
• Services health
MILAN november 28th/29th 2014 – David Funaro 
Some tools 
Mail 
Errors Server Monitoring 
Sentry 
Log - Exception 
Application Monitoring
MILAN november 28th/29th 2014 – David Funaro 
Example - NE
MILAN november 28th/29th 2014 – David Funaro 
Example - Sentry
MILAN november 28th/29th 2014 – David Funaro 
Keep Everything in version control
MILAN november 28th/29th 2014 – David Funaro 
Keep Everything in version control 
Automate Almost Everything 
If it hurts, do it more frequently 
Done means released 
Build quality in
MILAN november 28th/29th 2014 – David Funaro
MILAN november 28th/29th 2014 – David Funaro 
Thanks 
David Funaro 
davidfunaro.com 
@ingdavidino
MILAN november 28th/29th 2014 – David Funaro

More Related Content

PDF
RESTful Web Architecture
PDF
Spotify: Data center & Backend buildout
PDF
Scaling Operations At Spotify
PDF
eBay Architecture
PPTX
Sviluppare in cloud con M.E.A.N.: il caso Crowdcore
PPTX
Presentazione Codemotion
PDF
Sviluppare in cloud con M.E.A.N.: il caso Crowdcore
PPT
Bluetooth 4.0 and iBeacons in your iOS app - Francesco Novelli - Codemotion M...
RESTful Web Architecture
Spotify: Data center & Backend buildout
Scaling Operations At Spotify
eBay Architecture
Sviluppare in cloud con M.E.A.N.: il caso Crowdcore
Presentazione Codemotion
Sviluppare in cloud con M.E.A.N.: il caso Crowdcore
Bluetooth 4.0 and iBeacons in your iOS app - Francesco Novelli - Codemotion M...

Similar to The Continuous Delivery Value - Codemotion Milano 2014 (15)

PDF
Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]
PDF
Giovanni laquidara join the dart side of web development codemotion milano 2014
PDF
Delivering Continuous Delivery Continuously
PPTX
Tech talk march 12 2015 2
PPTX
Microsoft products 2014
PPT
Introduction to Continuous Delivery
PPTX
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
PPTX
PPTX
FIWARE Accelerator Programme: 80 Milion Euro for Start-Ups and SMEs
PPTX
Fundamental Concepts of DevOps
PDF
Backend as a Service: Parse
PDF
Backend as a Service: Parse - Moriconi
PPTX
From Continuous Integration to Continuous Delivery and DevOps
PDF
DevOps is dead
PDF
DEVOPS IS DEAD.
Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]
Giovanni laquidara join the dart side of web development codemotion milano 2014
Delivering Continuous Delivery Continuously
Tech talk march 12 2015 2
Microsoft products 2014
Introduction to Continuous Delivery
From 0 to DevOps: Lessons Learned Moving from On-Prem to Cloud Native
FIWARE Accelerator Programme: 80 Milion Euro for Start-Ups and SMEs
Fundamental Concepts of DevOps
Backend as a Service: Parse
Backend as a Service: Parse - Moriconi
From Continuous Integration to Continuous Delivery and DevOps
DevOps is dead
DEVOPS IS DEAD.
Ad

More from David Funaro (8)

PDF
The Continuous delivery Value @ codemotion 2014
PDF
Continuous delivery @wcap 5-09-2013
PDF
[2007] Tesi: Confronto tra riconoscitori vocali embedded e distribuiti per te...
PDF
Graph db: time for serious stuff @ codemotion 23/03/2012
PDF
Graph databases in PHP @ PHPCon Poland 10-22-2011
PDF
NoSQL overview #phptostart turin 11.07.2011
PDF
CMF: a pain in the F @ PHPDay 05-14-2011
PDF
One size fit All
The Continuous delivery Value @ codemotion 2014
Continuous delivery @wcap 5-09-2013
[2007] Tesi: Confronto tra riconoscitori vocali embedded e distribuiti per te...
Graph db: time for serious stuff @ codemotion 23/03/2012
Graph databases in PHP @ PHPCon Poland 10-22-2011
NoSQL overview #phptostart turin 11.07.2011
CMF: a pain in the F @ PHPDay 05-14-2011
One size fit All
Ad

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
KodekX | Application Modernization Development
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Spectroscopy.pptx food analysis technology
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Approach and Philosophy of On baking technology
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Electronic commerce courselecture one. Pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KodekX | Application Modernization Development
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Encapsulation_ Review paper, used for researhc scholars
Chapter 3 Spatial Domain Image Processing.pdf
Review of recent advances in non-invasive hemoglobin estimation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Understanding_Digital_Forensics_Presentation.pptx
Spectroscopy.pptx food analysis technology
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
The Rise and Fall of 3GPP – Time for a Sabbatical?
Advanced methodologies resolving dimensionality complications for autism neur...
Approach and Philosophy of On baking technology
Machine learning based COVID-19 study performance prediction
Digital-Transformation-Roadmap-for-Companies.pptx
Big Data Technologies - Introduction.pptx
Electronic commerce courselecture one. Pdf

The Continuous Delivery Value - Codemotion Milano 2014

  • 1. MILAN november 28th/29th 2014 The Continuous Delivery Value David Funaro ! Crash dei sistemi, Migrazioni fallite, aggiornamenti interrotti: sono tutte problematiche che nessuno vorrebbe mai incontrare durante l'introduzione di nuove funzionalità nel proprio applicativo (deploy) e ... la speranza non basta. L'attività di deploy è importante tanto quanto quelle che la precedono. La Continuous Delivery è un insieme di strumenti e metodologie che permetteranno di rendere i rilasci a basso rischio, economici, veloci, predicibili e ... sonni tranquilli. ! @ingdavidino - Dnsee
  • 2. MILAN november 28th/29th 2014 – David Funaro The Continuous Delivery Value
  • 3. MILAN november 28th/29th 2014 – David Funaro David Funaro davidfunaro.com @ingdavidino
  • 4. MILAN november 28th/29th 2014 – David Funaro First Release
  • 5. MILAN november 28th/29th 2014 – David Funaro Release Day
  • 6. MILAN november 28th/29th 2014 – David Funaro WRONG WAY This talk is for you…
  • 7. MILAN november 28th/29th 2014 – David Funaro Overview
  • 8. MILAN november 28th/29th 2014 – David Funaro Facts IT Business release new features as soon as possible keep system up and running
  • 9. MILAN november 28th/29th 2014 – David Funaro … with CD IT Business
  • 10. MILAN november 28th/29th 2014 – David Funaro RELEASE FEEDBACK new features monetize bug performance layout
  • 11. MILAN november 28th/29th 2014 – David Funaro ? Miss Release Price ? RELEASE €
  • 12. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics Change RELEASE
  • 13. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics Change RELEASE Time Security Skills Cost Predictable Stress Repeatability
  • 14. MILAN november 28th/29th 2014 – David Funaro Time • How many time you need to release software
  • 15. MILAN november 28th/29th 2014 – David Funaro Security • Everything will be ok ? • Can i be sure that every needed step will be done ? • Exceptions, are managed ? • Data migration goes well ? • Can i go back (rollback) ?
  • 16. MILAN november 28th/29th 2014 – David Funaro Skills • Have, the selected person, all the skill needed to terminate the procedure ? • What about his behavior in some exception flow case
  • 17. MILAN november 28th/29th 2014 – David Funaro Cost • How many people you need ? • For how many time ? • Other Resources ?
  • 18. MILAN november 28th/29th 2014 – David Funaro Predictable • are you able to indicate how much time will care ?
  • 19. MILAN november 28th/29th 2014 – David Funaro Stress • What about the stress • stress => error-prone
  • 20. MILAN november 28th/29th 2014 – David Funaro Repeatability • Just finish a deploy. Software released. A bug is found. You have to re-start the deploy procedure
  • 21. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics RELEASE Production
  • 22. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics RELEASE Production Time Security Skills Cost Predictable Stress Repeatability
  • 23. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics RELEASE Staging Production Time Security Skills Cost Predictable Stress Repeatability
  • 24. MILAN november 28th/29th 2014 – David Funaro Reaction Metrics RELEASE Staging Production Testing Time Security Skills Cost Predictable Stress Repeatability
  • 25. MILAN november 28th/29th 2014 – David Funaro No Automation Process ?
  • 26. MILAN november 28th/29th 2014 – David Funaro Lots of things to consider • Code evolution • Code dependency management • System evolution management • Data management and architecture • Component management
  • 27. MILAN november 28th/29th 2014 – David Funaro Software Release • Low Risk • Cheap • Frequent • Rapid • Predictable ... should be Continuous Delivery
  • 28. MILAN november 28th/29th 2014 – David Funaro CD Requirements • Source Code Management • Continuous Integration Server • Automated Deploy • Real Time Alerting • Root Cause Analysis
  • 29. MILAN november 28th/29th 2014 – David Funaro CD FLOW Commit / push Automated Deploy Procedure Basic Scenario Notify Team Real Time Alerting Automated Testing RELEASE
  • 30. MILAN november 28th/29th 2014 – David Funaro CD FLOW Commit / push Automated Deploy Procedure Basic Scenario Notify Team Real Time Alerting Automated Testing RELEASE
  • 31. MILAN november 28th/29th 2014 – David Funaro RELEASE
  • 32. MILAN november 28th/29th 2014 – David Funaro Deploy Pipeline Commit Stage Compile UnitTest Analysis Release Automated acceptance testign Automated capacity testing example Manual Testing Showcases Explorarory testing
  • 33. MILAN november 28th/29th 2014 – David Funaro Tools Continuous Delivery Practices Methodologies Cautions
  • 34. MILAN november 28th/29th 2014 – David Funaro CD Anti-patterns • Deploy software manually • Manual Configuration • First Deploy when development is complete • … to a production-like Environment
  • 35. MILAN november 28th/29th 2014 – David Funaro CD Benefits • Empower Team • Reducing Errors • Lowering Stress • Deployment Flexibility • Practice Make Perfect
  • 36. MILAN november 28th/29th 2014 – David Funaro Principles Keep Everything in version control Automate Almost Everything If it hurts, do it more frequently Done means released Build quality in
  • 37. MILAN november 28th/29th 2014 – David Funaro SECTION I Source Code Management
  • 38. MILAN november 28th/29th 2014 – David Funaro The problem i sent you a mail with the last change ... are you shure ? i can’t find the new file ?!?
  • 39. MILAN november 28th/29th 2014 – David Funaro
  • 40. MILAN november 28th/29th 2014 – David Funaro
  • 41. MILAN november 28th/29th 2014 – David Funaro SCM : What is it ? 3 5 7 10 Repository
  • 42. MILAN november 28th/29th 2014 – David Funaro Check-out Local Pull 8 29
  • 43. MILAN november 28th/29th 2014 – David Funaro Check-out 2 9 Local Pull 8
  • 44. MILAN november 28th/29th 2014 – David Funaro Check-in Push Local 3
  • 45. MILAN november 28th/29th 2014 – David Funaro Check-in Push Local 34
  • 46. MILAN november 28th/29th 2014 – David Funaro SCM : What it does ? • Keeping multiple file version • Collaboration
  • 47. MILAN november 28th/29th 2014 CHECK POINT David Funaro ! Crash dei sistemi, Migrazioni fallite, aggiornamenti interrotti: sono tutte problematiche che nessuno vorrebbe mai incontrare durante l'introduzione di nuove funzionalità nel proprio applicativo (deploy) e ... la speranza non basta. L'attività di deploy è importante tanto quanto quelle che la precedono. La Continuous Delivery è un insieme di strumenti e metodologie che permetteranno di rendere i rilasci a basso rischio, economici, veloci, predicibili e ... sonni tranquilli. ! @ingdavidino - Dnsee
  • 48. MILAN november 28th/29th 2014 – David Funaro Application Evolution
  • 49. MILAN november 28th/29th 2014 – David Funaro Collaboration
  • 50. MILAN november 28th/29th 2014 – David Funaro Cautions isn’t just for source code you need everything required to re-create your application’s binaries and the environments in which they run.
  • 51. MILAN november 28th/29th 2014 – David Funaro Best Practice • Little Commit • Frequent Commit • Consistent commit • Use Meaningful Commit message
  • 52. MILAN november 28th/29th 2014 – David Funaro Different Products
  • 53. MILAN november 28th/29th 2014 – David Funaro SECTION II Continuous Integration
  • 54. MILAN november 28th/29th 2014 – David Funaro Ops (after one commit ) After your commit nothing works anymore But ... “was working on my computer” INTEGRATION PROBLEM
  • 55. MILAN november 28th/29th 2014 – David Funaro Ops (after deploy in prod) It was working on the stage environment !!! INTEGRATION PROBLEM
  • 56. MILAN november 28th/29th 2014 – David Funaro • sleepless nights before demo ... bug just after release • sleepless nights before demo ... bug just after release
  • 57. MILAN november 28th/29th 2014 – David Funaro Resolve defects Cost Analysis Design Implementation Testing Release
  • 58. MILAN november 28th/29th 2014 – David Funaro t integration Regression Working Broken
  • 59. MILAN november 28th/29th 2014 – David Funaro t integration Regression Working Broken Effort
  • 60. MILAN november 28th/29th 2014 – David Funaro Good Solution In software development the components integration need to be tested continuosly... ! in order to find inconsistencies as soon as possible
  • 61. MILAN november 28th/29th 2014 – David Funaro Continuous Integration
  • 62. MILAN november 28th/29th 2014 – David Funaro Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Martin Fowler
  • 63. MILAN november 28th/29th 2014 – David Funaro Requirements Source Code Management
  • 64. MILAN november 28th/29th 2014 – David Funaro Requirements
  • 65. MILAN november 28th/29th 2014 – David Funaro Agile-Testing-Quadrants
  • 66. MILAN november 28th/29th 2014 – David Funaro CI Flow
  • 67. MILAN november 28th/29th 2014 – David Funaro F CI Flow
  • 68. MILAN november 28th/29th 2014 – David Funaro F Checkout last Commit CI Flow Build and Tests Process
  • 69. MILAN november 28th/29th 2014 – David Funaro F Checkout last Commit CI Flow Build and Tests Process
  • 70. MILAN november 28th/29th 2014 – David Funaro F F F Checkout last Commit CI Flow Build and Tests Process
  • 71. MILAN november 28th/29th 2014 – David Funaro F F F F F F Checkout last Commit CI Flow Build and Tests Process
  • 72. MILAN november 28th/29th 2014 – David Funaro F F F F F F F F Checkout last Commit CI Flow Build and Tests Process
  • 73. MILAN november 28th/29th 2014 – David Funaro F F F F F F F F Checkout last Commit CI Flow Build and Tests Process
  • 74. MILAN november 28th/29th 2014 – David Funaro Build & Test ✓ Process creating executable code ✓ Unit test ✓ Quality criteria ✓ Functional Test ✓ Non Functional Test Valid Syntax Compile Code behavior Code coverage, Mass detector Business Acceptance Criteria Application performance PASS
  • 75. MILAN november 28th/29th 2014 – David Funaro CI - Reduce Risk • Say goodbye to long and tense integrations • Increase visibility which enables greater communication • Catch issues fast and nip them in the bud • Spend less time debugging and more time adding features • Proceed in the confidence you’re building on a solid foundation • Stop waiting to find out if your code’s going to work • Reduce integration problems allowing you to deliver software more rapidly
  • 76. MILAN november 28th/29th 2014 – David Funaro CI - Output System Status Documentation/ Artifacts Quality Check
  • 77. MILAN november 28th/29th 2014 – David Funaro “Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.” Martin Fowler
  • 78. MILAN november 28th/29th 2014 – David Funaro Ci - Best practice • CI server === Production Server • Integrate it from the first commit • Find best way to get notified
  • 79. MILAN november 28th/29th 2014 – David Funaro Immediate feedback of the health of the system
  • 80. MILAN november 28th/29th 2014 – David Funaro
  • 81. MILAN november 28th/29th 2014 – David Funaro
  • 82. MILAN november 28th/29th 2014 – David Funaro Ci - software ... more and more
  • 83. MILAN november 28th/29th 2014 – David Funaro SECTION III Automated Deploy
  • 84. MILAN november 28th/29th 2014 – David Funaro Deployment “all the activities that make a software system available for use” Wikipedia
  • 85. MILAN november 28th/29th 2014 – David Funaro Deploy A Critical part of the application life-cycle
  • 86. MILAN november 28th/29th 2014 – David Funaro RELEASE Real ?
  • 87. MILAN november 28th/29th 2014 – David Funaro RELEASE Real ? RRRRREEEELELLLELEEEAEAAAASSSSESEEEE RRRRREEEELELLLELEEEAEAAAASSSSESEEEE RELEASE feedback
  • 88. MILAN november 28th/29th 2014 – David Funaro Deployment • Low Risk • Cheap • Frequent • Rapid • Predictable
  • 89. MILAN november 28th/29th 2014 – David Funaro Low Risk • Exception catched • Rollback • Data on secure
  • 90. MILAN november 28th/29th 2014 – David Funaro Cheap • no more than one click • no more than one person • no skilled person
  • 91. MILAN november 28th/29th 2014 – David Funaro Frequent • to get feedback
  • 92. MILAN november 28th/29th 2014 – David Funaro Rapid
  • 93. MILAN november 28th/29th 2014 – David Funaro Predictable
  • 94. MILAN november 28th/29th 2014 – David Funaro Incomplete ways
  • 95. MILAN november 28th/29th 2014 – David Funaro is that a deploy procedure ? $ git pull origin master $ svn update Remote Desktop Versioning update
  • 96. MILAN november 28th/29th 2014 – David Funaro Problems • Incomplete • Manual procedure • Slow • Server Downtime • No data migration • No Rollback
  • 97. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals
  • 98. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals Deploy one click deploy
  • 99. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals AnyTime AnyWhere AnyOne
  • 100. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals Rollback
  • 101. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals no downtime
  • 102. MILAN november 28th/29th 2014 – David Funaro Automated Deployment Goals Frontend 1 Frontend 1I Frontend III Balancer Scalable
  • 103. MILAN november 28th/29th 2014 – David Funaro Deployment Elements • Executable Code • Dependency Management • Software configuration • Infrastructure Management • Data Migrations • Manage Cache
  • 104. MILAN november 28th/29th 2014 – David Funaro Executable code (SCM)
  • 105. MILAN november 28th/29th 2014 – David Funaro Dependency Management
  • 106. MILAN november 28th/29th 2014 – David Funaro How you keep updated your libraries dependencies ? to get the feature 103 done, i use library XXX ok, i’ll note it here ... to get the feature 103 done, i use library XXX OK
  • 107. MILAN november 28th/29th 2014 – David Funaro PIP
  • 108. MILAN november 28th/29th 2014 – David Funaro
  • 109. MILAN november 28th/29th 2014 – David Funaro Data Migration
  • 110. MILAN november 28th/29th 2014 – David Funaro What if, after your first production deployment, you have to change the Entity Relationship ?
  • 111. MILAN november 28th/29th 2014 – David Funaro
  • 112. MILAN november 28th/29th 2014 – David Funaro Infrastructure Management
  • 113. MILAN november 28th/29th 2014 – David Funaro How you keep updated your OS componets/ libraries ? to get the feature 103 done, i use library XXX, that require the module 288 ok, i’ll note it here ... to get the feature 103 done, i use library XXX, that require OK the module 903
  • 114. MILAN november 28th/29th 2014 – David Funaro A way to setup your environment
  • 115. MILAN november 28th/29th 2014 – David Funaro Write Configuration Script
  • 116. MILAN november 28th/29th 2014 – David Funaro Write Configuration Script Versionable
  • 117. MILAN november 28th/29th 2014 – David Funaro Environment Management
  • 118. MILAN november 28th/29th 2014 – David Funaro Staging Production Testing
  • 119. MILAN november 28th/29th 2014 – David Funaro Manual - Follow recipe • Integrity problems • Problem with exception handling • Basic Skills requirements • Time consuming - expensive • Error - prone • Stress
  • 120. MILAN november 28th/29th 2014 – David Funaro Build a custom Script • Do a backup • Create new directory • Update the code • Update dependencies • Run migration data • Update Environements
  • 121. MILAN november 28th/29th 2014 – David Funaro
  • 122. MILAN november 28th/29th 2014 – David Funaro Existing Tools Fabric ... and more others
  • 123. MILAN november 28th/29th 2014 – David Funaro SECTION IV Realtime Alerting
  • 124. MILAN november 28th/29th 2014 – David Funaro Waiting for customers feedback ?
  • 125. MILAN november 28th/29th 2014 – David Funaro Waiting for customers feedback ?
  • 126. MILAN november 28th/29th 2014 – David Funaro Real Time Monitoring • Application health • System heatlh • Services health
  • 127. MILAN november 28th/29th 2014 – David Funaro Some tools Mail Errors Server Monitoring Sentry Log - Exception Application Monitoring
  • 128. MILAN november 28th/29th 2014 – David Funaro Example - NE
  • 129. MILAN november 28th/29th 2014 – David Funaro Example - Sentry
  • 130. MILAN november 28th/29th 2014 – David Funaro Keep Everything in version control
  • 131. MILAN november 28th/29th 2014 – David Funaro Keep Everything in version control Automate Almost Everything If it hurts, do it more frequently Done means released Build quality in
  • 132. MILAN november 28th/29th 2014 – David Funaro
  • 133. MILAN november 28th/29th 2014 – David Funaro Thanks David Funaro davidfunaro.com @ingdavidino
  • 134. MILAN november 28th/29th 2014 – David Funaro