System Crash, failure data migration, partial update: issues that no one would ever want to meet during the deploy and ... hoping for the best is not enough.
The deployment activity is important as those that precede it. The Continuous Delivery will give you low risk, cheap, fast, predictable delivery and ... soundly.
Driving Behavioral Change for Information Management through Data-Driven Gree...
The Continuous delivery Value @ codemotion 2014
1. The Continuous DeliveryValue
12 - 04 - 2014
ROME 11-12 April 2014
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.
d.funaro@dnsee.com
13. • How many time you need to release
software
Time
14. • 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) ?
Security
15. • Have, the selected person, all the skill
needed to terminate the procedure ?
• What about his behavior in some
exception flow case
Skills
16. • How many people you need ?
• For how many time ?
• Other Resources ?
Cost
17. • are you able to indicate how much time will
care ?
Predictable
18. • What about the stress
• stress => error-prone
Stress
19. • Just finish a deploy. Software released.A bug
is found.You have to re-start the deploy
procedure
Repeatability
22. Lots of things to
consider
• Code evolution
• Code dependency management
• System evolution management
• Data management and architecture
• Component management
23. Software Release
• Low Risk
• Cheap
• Frequent
• Rapid
• Predictable
... should be
Continuous Delivery
24. CD requirements
• Source Code Management
• Continuous Integration Server
• Automated Deploy
• Real Time Alerting
• Root Cause Analysis
46. After your commit
nothing works anymore
Ops
INTEGRATION PROBLEM
(after one commit )
After your commit nothing
works anymore
But ...“was working on my
computer”
47. Ops(after deploy in prod)
INTEGRATION PROBLEM
It was working on the stage
environment !!!
51. In software development the components
integration need to be tested continuosly...
!
in order to find inconsistencies
as soon as possible
Good Solution
53. 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
58. Build & Test
✓Process creating executable code
✓Unit test
✓Quality criteria
✓FunctionalTest
✓Non FunctionalTest
Valid Syntax Compile
Code behavior
Code coverage, Mass detector
Business Acceptance Criteria
Application performance
PASS
59. 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
88. 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
95. 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
the module 903
OK
100. Manual - Follow recipe
• Integrity problems
• Problem with exception handling
• Basic Skills requirements
• Time consuming - expensive
• Error - prone
• Stress
101. Build a custom Script
• Do a backup
• Create new directory
• Update the code
• Update dependencies
• Run migration data
• Update Environements
• Warm up cache
• ...