continuously delivering: compress the time from committed to consumed
TRANSCRIPT
Compress the time from committed to consumed
Jonathan GilbertConfluence Manager, Atlassian
2
Continuously Delivering
Agenda
3
• Existing Processes
• Benefits of Continuous Delivery
• Approaches to achieving Continuous Delivery
• Atlassian Tools
Atlassian Process
4
• Long lived feature branches for major features
• 98 day releases
• Feature integration
• Hardening• 2 week beta• 2 week RC
What’s the problem?
5
Value Timeline
6
Release
Release to Studio
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
Branching
• Extends time to delivery
• Prevents iterative development
• Increases big-bang
• Merging pain
8
Everyone does CI, right?
9
• Same reason as Continuous Integration• Don’t leave a manual, error-prone process to the end
Rapid Release Cycles
10
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
Regular Deployments
• Company dogfooding server• Fortnightly
• Team dogfooding server• Nightly
• Stable releases• Fortnightly
12
Packaged Release Automation
• SCM Tag
• Maven upload
• Release in JIRA
• Release notes in Confluence
• Push binaries to distribution
13
Continuous Delivery
14
Continuous Delivery
• Produce a regular, deployable-to-production build• Regular probably means daily
• Continuous Deployment would be to deploy each one
15
Why?
16
For Product…
17
No Features Waiting in Queue
18
Market New Releases “Whenever”
19
Great Momentum
Happy & Forgiving Customers
20
Small Changes, Immediate Validation
21
Rapid Iteration
Hit => Double Down
Miss => Revert
22
Agility
23
For Engineering…
24
Build what people want
25
Less Fragility
Less time waiting in queue
26
Smaller batches
Less integration pain
27
More Focus
28
Our Story…
29
Which may apply to you…
• SaaS
• Installed Product
• Single Client
30
Progress Summary
• Small Stories
• Removed Branches
• Accelerated Builds
• Automated Deployment
31
Deployment Pipeline
• Environments• Dogfooding• Homogeneous
• Batched build pipeline
• Smoke tests
• Automated backup & rollback
32
Rapid Continuous Integration
• Build Stages• Unit tests• UI tests• Functional tests
• Batching• EC2• Bamboo
33
Deployment Speedup
• Previously…• 1-2 days effort• Every 2 weeks
• Now• 25min build, 15min deploy, zero downtime• Approx 10x / day
34
Bamboo Support
• Tasks
• Plan Variables
• Parameterised Builds
• Artifact Passing
• Manual Stages (3.2)
35
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
Dark Features
37
• No long-lived branches
• Decouples deploy & launch
• Reduces risk
Monitoring
• Log file analysis• Splunk
• Application instrumentation• Metrics
• Runtime VM instrumentation• New Relic
38
Challenges
• Scrum vs. Kanban
• Downtime
• Code & test discipline• Pre-commit reviews?
• Change tracking• Release notes?• What environments have received a change?
39
Tips
• Environment Independence
• Modular Code• Or “Branch by Abstraction”
• Version Everything• Especially the deploy scripts
• Team Changes• QA• DevOps
40
Future
41
Extending the pipeline
42
Team Company Studio
Studio
Studio
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
Issue-based Deployment
44
A B AC B DDBCB E
B BBB
master/default/trunk
deployment branch
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
Questions?
46
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