esug'11: channelstream: the challenge of continuously delivering, by julian fitzell

39
Julian Fitzell, Cincom ESUG, Edinburgh August 24, 2011 Image © Petr Vins: http://www.sxc.hu/photo/1054507

Upload: cincom-smalltalk

Post on 07-Apr-2018

219 views

Category:

Documents


0 download

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