esug'11: channelstream: the challenge of continuously delivering, by julian fitzell
TRANSCRIPT
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 1/39
Julian Fitzell, CincomESUG, EdinburghAugust 24, 2011
Image © Petr Vins: http://www.sxc.hu/photo/1054507
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 2/39
ChannelStream
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 3/39
Document OutputManagement
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 4/39
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 5/39
Enrichment
O M R
Marke ting
B a r c o d e D at amat r i x
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 6/39
Output
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 7/39
Why?
• Postal contract savings
• Saves licking envelopes
• Personalization and cross-marketing
• Avoid IT/supplier for customization
• Enhance legacy output
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 8/39Image © Tim Regan: http://www.flickr.com/photos/dumbledad/3225255407/
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 9/39
Slowdevelopment
Manual process
Testenvironment not
easily reproducible
Externaldependencies
fragile
Test dataunversioned
Configurationfiles unversioned
False positives
Unclearseparation between
unit/functionalTests notalways run
Tests notalways updated
Building
images slow +error-prone
Tests slow/hard to run
Infrequentintegration
Onedeveloperintegrating
Reducedconfidence fromautomated tests
STRESS!
+Frequentreleases
Integration isrisky/hard
Difficultytracking versions
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 10/39
So...
• Make building images easier
• Make running tests easier
• Make integration easier
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 11/39
Jez Humble, http://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/
con·tin·u·ous de·liv·er·y• putting the release schedule in the
hands of the business• ensuring your software is always
production ready throughout itsentire lifecycle
• making any build potentially
releasable to users at the touch of abutton
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 12/39
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 13/39
Goals
• Reduce cycle time between an ideaand its availability to users
• Deliver high-quality software reliably
and efficiently
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 14/39
Frequent, automated releases:
• Decrease stress
• Eliminate errors and improveauditability
• Make feedback more immediate
• Protect against reliance on individual
expertise• Reduce wasted time on repetitive tasks
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 15/39
Make releases boring
• Automate (almost) everything
• Version everything
• Deploy everywhere the same way
• If it hurts, do it more often
• Everyone is responsible for delivery
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 16/39
Development
+Integration
I i
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 17/39
Problems
• Contention over “head”
• One person doing most of the integration
• Delayed integration => harder integration
• Poor visibility of changes
• Hard to predict/analyze failure
Integration
I t ti
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 18/39
Issue tracker + emailIntegration
I t ti
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 19/39
Task/merge toolsIntegration
I t ti
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 20/39
Integrate
often• Hide functionality
(feature toggles)
• Incremental, releasablechanges
• “Branch by abstraction”for large-scale changes
• Use components todecouple parts
Integration
Image © Lars Sundstrom: http://www.sxc.hu/photo/1082530
I t ti
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 21/39
Remaining Issues
• Restructurings can still be tricky whenbranches are outstanding
• “Integration token” still just informal
conversation
Integration
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 22/39
Building
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 23/39
Problems
• Manual builds on developer machines
• Wasted developer time
• “Here, take my image”
• Taking shortcuts
• “Works on my machine”
Building
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 24/39
Helper scripts + docsBuilding
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 25/39
Fully automated scripts
Builder
-filein foo-wrapper.ws
foo.ws
foo-wrapper.ws
Target
Building
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 26/39
Builds run (at least)daily
Building
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 27/39
Archive built imagesBuilding
+ + + + + + + + + + + + + + +Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 28/39
Image © 2009 by Urbancode
Run automatically on ALL code changes
Avoid versioning split between SVN + Store
Rationalize build/version numbering
+ + + + + + + + + + + + + + ++ + + + + + + +
+
+
+ + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
Building
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 29/39
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 30/39
Testing
Testing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 31/39
Problems
• Tests took up to 16 hours to run
• Test environment hard to create
• Failing tests sometimes pass when re-run
• Not everyone could run tests or be sure of results
• High cost of test maintenance• Sometimes quicker to test manually than fix
the test environment
Testing
Testing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 32/39
Done
• Optimize tests (now run in ~ 2 hours)
• Separate unit/regression fromfunctional/integration tests
• Store test data in a central location
Testing
Testing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 33/39
Run tests automaticallyTesting
+
Testing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 34/39
Image © 2009 by Urbancode
Run regression and smoke tests as part of build and notify of errors by email
Run functional tests after build
Version control test data
Automate creation of testing environment
+ + + + + + + + + + + + + ++ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + ++
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
Image © 2009 by Urbancode
Testing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 35/39
Releasing
Releasing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 36/39
Problems
• One person is:
• best person for build
• best person for integration
(so, one can delay the other)
• Forced to branch when close to release
Releasing
Releasing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 37/39
Done
• Helper scripts
Releasing
+ + + + + + + +
Releasing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 38/39
Image © 2009 by Urbancode
Fully automate runtime image build
Automate installer creation
Automate installation into test environments
Changelog generation
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + ++ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+
Releasing
8/4/2019 ESUG'11: ChannelStream: The Challenge of Continuously Delivering, by Julian Fitzell
http://slidepdf.com/reader/full/esug11-channelstream-the-challenge-of-continuously-delivering-by-julian 39/39
CINCOM d th Q d t L i t d t d k f Ci S t I © 2011 Ci S t I
Julian Fitzell [email protected]
Twitter: @jfitzell