continuously delivering: compress the time from committed to consumed

47

Upload: atlassian

Post on 10-May-2015

1.406 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Continuously Delivering: Compress the time from committed to consumed
Page 2: Continuously Delivering: Compress the time from committed to consumed

Compress the time from committed to consumed

Jonathan GilbertConfluence Manager, Atlassian

2

Continuously Delivering

Page 3: Continuously Delivering: Compress the time from committed to consumed

Agenda

3

• Existing Processes

• Benefits of Continuous Delivery

• Approaches to achieving Continuous Delivery

• Atlassian Tools

Page 4: Continuously Delivering: Compress the time from committed to consumed

Atlassian Process

4

• Long lived feature branches for major features

• 98 day releases

• Feature integration

• Hardening• 2 week beta• 2 week RC

Page 5: Continuously Delivering: Compress the time from committed to consumed

What’s the problem?

5

Page 6: Continuously Delivering: Compress the time from committed to consumed

Value Timeline

6

Release

Release to Studio

Page 7: Continuously Delivering: Compress the time from committed to consumed

Large Releases

• Unaddressed risk• Large changes• Support burden• Impacts development speed

• No way to revert?• Need to double check everything

• Large release anti-pattern

7

Page 8: Continuously Delivering: Compress the time from committed to consumed

Branching

• Extends time to delivery

• Prevents iterative development

• Increases big-bang

• Merging pain

8

Page 9: Continuously Delivering: Compress the time from committed to consumed

Everyone does CI, right?

9

• Same reason as Continuous Integration• Don’t leave a manual, error-prone process to the end

Page 10: Continuously Delivering: Compress the time from committed to consumed

Rapid Release Cycles

10

Page 11: Continuously Delivering: Compress the time from committed to consumed

Dogfooding

• Some are fortunate enough to use their own software

• If you are, take advantage of it!

• Find bugs, gather feedback

• Instability won’t affect the customer

11

Page 12: Continuously Delivering: Compress the time from committed to consumed

Regular Deployments

• Company dogfooding server• Fortnightly

• Team dogfooding server• Nightly

• Stable releases• Fortnightly

12

Page 13: Continuously Delivering: Compress the time from committed to consumed

Packaged Release Automation

• SCM Tag

• Maven upload

• Release in JIRA

• Release notes in Confluence

• Push binaries to distribution

13

Page 14: Continuously Delivering: Compress the time from committed to consumed

Continuous Delivery

14

Page 15: Continuously Delivering: Compress the time from committed to consumed

Continuous Delivery

• Produce a regular, deployable-to-production build• Regular probably means daily

• Continuous Deployment would be to deploy each one

15

Page 16: Continuously Delivering: Compress the time from committed to consumed

Why?

16

Page 17: Continuously Delivering: Compress the time from committed to consumed

For Product…

17

Page 18: Continuously Delivering: Compress the time from committed to consumed

No Features Waiting in Queue

18

Page 19: Continuously Delivering: Compress the time from committed to consumed

Market New Releases “Whenever”

19

Page 20: Continuously Delivering: Compress the time from committed to consumed

Great Momentum

Happy & Forgiving Customers

20

Page 21: Continuously Delivering: Compress the time from committed to consumed

Small Changes, Immediate Validation

21

Page 22: Continuously Delivering: Compress the time from committed to consumed

Rapid Iteration

Hit => Double Down

Miss => Revert

22

Page 23: Continuously Delivering: Compress the time from committed to consumed

Agility

23

Page 24: Continuously Delivering: Compress the time from committed to consumed

For Engineering…

24

Page 25: Continuously Delivering: Compress the time from committed to consumed

Build what people want

25

Page 26: Continuously Delivering: Compress the time from committed to consumed

Less Fragility

Less time waiting in queue

26

Page 27: Continuously Delivering: Compress the time from committed to consumed

Smaller batches

Less integration pain

27

Page 28: Continuously Delivering: Compress the time from committed to consumed

More Focus

28

Page 29: Continuously Delivering: Compress the time from committed to consumed

Our Story…

29

Page 30: Continuously Delivering: Compress the time from committed to consumed

Which may apply to you…

• SaaS

• Installed Product

• Single Client

30

Page 31: Continuously Delivering: Compress the time from committed to consumed

Progress Summary

• Small Stories

• Removed Branches

• Accelerated Builds

• Automated Deployment

31

Page 32: Continuously Delivering: Compress the time from committed to consumed

Deployment Pipeline

• Environments• Dogfooding• Homogeneous

• Batched build pipeline

• Smoke tests

• Automated backup & rollback

32

Page 33: Continuously Delivering: Compress the time from committed to consumed

Rapid Continuous Integration

• Build Stages• Unit tests• UI tests• Functional tests

• Batching• EC2• Bamboo

33

Page 34: Continuously Delivering: Compress the time from committed to consumed

Deployment Speedup

• Previously…• 1-2 days effort• Every 2 weeks

• Now• 25min build, 15min deploy, zero downtime• Approx 10x / day

34

Page 35: Continuously Delivering: Compress the time from committed to consumed

Bamboo Support

• Tasks

• Plan Variables

• Parameterised Builds

• Artifact Passing

• Manual Stages (3.2)

35

Page 36: Continuously Delivering: Compress the time from committed to consumed

Delivery Gates

• Checkpoints are necessary• Just make sure they’re automated

• Manual checkpoints exist due to fear• Often they can be removed with no tangible impact• Sometime possible to partially automate

36

Page 37: Continuously Delivering: Compress the time from committed to consumed

Dark Features

37

• No long-lived branches

• Decouples deploy & launch

• Reduces risk

Page 38: Continuously Delivering: Compress the time from committed to consumed

Monitoring

• Log file analysis• Splunk

• Application instrumentation• Metrics

• Runtime VM instrumentation• New Relic

38

Page 39: Continuously Delivering: Compress the time from committed to consumed

Challenges

• Scrum vs. Kanban

• Downtime

• Code & test discipline• Pre-commit reviews?

• Change tracking• Release notes?• What environments have received a change?

39

Page 40: Continuously Delivering: Compress the time from committed to consumed

Tips

• Environment Independence

• Modular Code• Or “Branch by Abstraction”

• Version Everything• Especially the deploy scripts

• Team Changes• QA• DevOps

40

Page 41: Continuously Delivering: Compress the time from committed to consumed

Future

41

Page 42: Continuously Delivering: Compress the time from committed to consumed

Extending the pipeline

42

Team Company Studio

Studio

Studio

Page 43: Continuously Delivering: Compress the time from committed to consumed

Issue-based Deployment

• Smallest sensible chunk should be delivered

• Used to be a whole release• Traditional Process

• A feature?• Deployment after feature branch merges

• A commit?• Deploy on green build

• An issue?43

Page 44: Continuously Delivering: Compress the time from committed to consumed

Issue-based Deployment

44

A B AC B DDBCB E

B BBB

master/default/trunk

deployment branch

Page 45: Continuously Delivering: Compress the time from committed to consumed

Summary

• Commit -> Dogfooding• Time: 2 weeks to 30min• Frequency: Fortnightly to 10 times per day

• It may require changes to existing processes

• Atlassian tools are currently easy to automate

• Continuous Delivery is a first-class feature of Bamboo

• Stay tuned for more help from Atlassian

45

Page 46: Continuously Delivering: Compress the time from committed to consumed

Questions?

46

Page 47: Continuously Delivering: Compress the time from committed to consumed

More Information

• Bamboo 3.2

http://atlassian.com/sotware/bamboo

• Atlassian Dev Blog

http://blogs.atlassian.com/developer

• Recorded Summit Sessions

http://summit.atlassian.com47