Continuously Delivering
Agenda <ul><li>Existing Processes </li></ul><ul><li>Benefits of Continuous Delivery </li></ul><ul><li>Approaches to achiev...
Atlassian Process <ul><li>Long lived feature branches for major features </li></ul><ul><li>98 day releases </li></ul><ul><...
What’s the problem?
Value Timeline Release Release to Studio Release of cross-product  features Customer Upgraded
Large Releases <ul><li>Unaddressed risk </li></ul><ul><ul><li>Large changes </li></ul></ul><ul><ul><li>Support burden </li...
Branching <ul><li>Extends time to delivery </li></ul><ul><li>Prevents iterative development </li></ul><ul><li>Increases bi...
Everyone does CI, right? <ul><li>Same reason as Continuous Integration </li></ul><ul><ul><li>Don’t leave a manual, error-p...
Rapid Release Cycles
Dogfooding <ul><li>Some are fortunate enough to use their own software </li></ul><ul><li>If you are, take advantage of it!...
Regular Deployments <ul><li>Company dogfooding server </li></ul><ul><ul><li>Fortnightly </li></ul></ul><ul><li>Team dogfoo...
Packaged Release Automation <ul><li>SCM Tag </li></ul><ul><li>Maven upload </li></ul><ul><li>Release in JIRA </li></ul><ul...
Continuous Delivery
Continuous Delivery <ul><li>Produce a regular, deployable-to-production build </li></ul><ul><ul><li>Regular probably means...
Why?
For Product…
No Features Waiting in Queue
Market New Releases “Whenever”
Great Momentum <ul><li>Happy & Forgiving Customers </li></ul>
Small Changes, Immediate Validation
Rapid Iteration <ul><li>Hit => Double Down </li></ul><ul><li>Miss => Revert </li></ul>
Agility
For Engineering…
Build what people want
Less Fragility <ul><li>Less time waiting in queue </li></ul>
Smaller batches <ul><li>Less integration pain </li></ul>
More Focus
Our Story…
Which may apply to you… <ul><li>SaaS </li></ul><ul><li>Installed Product </li></ul><ul><li>Single Client </li></ul>
Progress Summary <ul><li>Small Stories </li></ul><ul><li>Removed Branches </li></ul><ul><li>Accelerated Builds </li></ul><...
Deployment Pipeline <ul><li>Environments </li></ul><ul><ul><li>Dogfooding </li></ul></ul><ul><ul><li>Homogeneous </li></ul...
Rapid Continuous Integration <ul><li>Build Stages </li></ul><ul><ul><li>Unit tests </li></ul></ul><ul><ul><li>UI tests </l...
Deployment Speedup <ul><li>Previously… </li></ul><ul><ul><li>1-2 days effort </li></ul></ul><ul><ul><li>Every 2 weeks </li...
Bamboo Support <ul><li>Tasks </li></ul><ul><li>Plan Variables </li></ul><ul><li>Parameterised Builds </li></ul><ul><li>Art...
Delivery Gates <ul><li>Checkpoints are necessary </li></ul><ul><ul><li>Just make sure they’re automated </li></ul></ul><ul...
Dark Features <ul><li>No long-lived branches </li></ul><ul><li>Decouples deploy & launch </li></ul><ul><li>Reduces risk </...
Monitoring <ul><li>Log file analysis </li></ul><ul><ul><li>Splunk </li></ul></ul><ul><li>Application instrumentation </li>...
Challenges <ul><li>Scrum vs. Kanban </li></ul><ul><li>Downtime </li></ul><ul><li>Code & test discipline </li></ul><ul><ul>...
Tips <ul><li>Environment Independence </li></ul><ul><li>Modular Code </li></ul><ul><ul><li>Or “Branch by Abstraction” </li...
Future
Extending the pipeline Team Company Studio Studio Studio
Issue-based Deployment <ul><li>Smallest sensible chunk should be delivered </li></ul><ul><li>Used to be a whole release </...
Issue-based Deployment A B A C B D D B C B E B B B B master/default/trunk deployment branch
Summary <ul><li>Commit -> Dogfooding </li></ul><ul><ul><li>Time: 2 weeks to 30min </li></ul></ul><ul><ul><li>Frequency: Fo...
Questions?
More Information <ul><li>Bamboo 3.2 </li></ul><ul><li>http://atlassian.com/sotware/bamboo </li></ul><ul><li>Atlassian Dev ...
Upcoming SlideShare
Loading in...5
×

Continuously Delivering: Compress the time from committed to consumed

1,464

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,464
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Explain: my team my mission prefer technical solutions Of all process changes – this is the best
  • Who uses CI?
  • All Hands Gestures!
  • Embedded Crowd
  • XHTML
  • How many people here dogfood?
  • Mention CI
  • Value always delivered
  • Value always delivered
  • Value always delivered
  • Value always delivered
  • Value always delivered
  • React more quickly to new opportunities Don’t need to wait on release boundaries Reallocate resources more easily
  • React more quickly to new opportunities Don’t need to wait on release boundaries Reallocate resources more easily
  • Value always delivered
  • Less integration pain
  • Value always delivered
  • Ask what the audience make up is Chrome is one example of CD infrastructure – although channel based, so not the same
  • Use XHTML as an example
  • Gestures!
  • Dependencies
  • Continuously Delivering: Compress the time from committed to consumed

    1. 2. Continuously Delivering
    2. 3. Agenda <ul><li>Existing Processes </li></ul><ul><li>Benefits of Continuous Delivery </li></ul><ul><li>Approaches to achieving Continuous Delivery </li></ul><ul><li>Atlassian Tools </li></ul>
    3. 4. Atlassian Process <ul><li>Long lived feature branches for major features </li></ul><ul><li>98 day releases </li></ul><ul><li>Feature integration </li></ul><ul><li>Hardening </li></ul><ul><ul><li>2 week beta </li></ul></ul><ul><ul><li>2 week RC </li></ul></ul>
    4. 5. What’s the problem?
    5. 6. Value Timeline Release Release to Studio Release of cross-product features Customer Upgraded
    6. 7. Large Releases <ul><li>Unaddressed risk </li></ul><ul><ul><li>Large changes </li></ul></ul><ul><ul><li>Support burden </li></ul></ul><ul><ul><li>Impacts development speed </li></ul></ul><ul><li>No way to revert? </li></ul><ul><ul><li>Need to double check everything </li></ul></ul><ul><li>Large release anti-pattern </li></ul>
    7. 8. Branching <ul><li>Extends time to delivery </li></ul><ul><li>Prevents iterative development </li></ul><ul><li>Increases big-bang </li></ul><ul><li>Merging pain </li></ul>
    8. 9. Everyone does CI, right? <ul><li>Same reason as Continuous Integration </li></ul><ul><ul><li>Don’t leave a manual, error-prone process to the end </li></ul></ul>
    9. 10. Rapid Release Cycles
    10. 11. Dogfooding <ul><li>Some are fortunate enough to use their own software </li></ul><ul><li>If you are, take advantage of it! </li></ul><ul><li>Find bugs, gather feedback </li></ul><ul><li>Instability won’t affect the customer </li></ul>
    11. 12. Regular Deployments <ul><li>Company dogfooding server </li></ul><ul><ul><li>Fortnightly </li></ul></ul><ul><li>Team dogfooding server </li></ul><ul><ul><li>Nightly </li></ul></ul><ul><li>Stable releases </li></ul><ul><ul><li>Fortnightly </li></ul></ul>
    12. 13. Packaged Release Automation <ul><li>SCM Tag </li></ul><ul><li>Maven upload </li></ul><ul><li>Release in JIRA </li></ul><ul><li>Release notes in Confluence </li></ul><ul><li>Push binaries to distribution </li></ul>
    13. 14. Continuous Delivery
    14. 15. Continuous Delivery <ul><li>Produce a regular, deployable-to-production build </li></ul><ul><ul><li>Regular probably means daily </li></ul></ul><ul><li>Continuous Deployment would be to deploy each one </li></ul>
    15. 16. Why?
    16. 17. For Product…
    17. 18. No Features Waiting in Queue
    18. 19. Market New Releases “Whenever”
    19. 20. Great Momentum <ul><li>Happy & Forgiving Customers </li></ul>
    20. 21. Small Changes, Immediate Validation
    21. 22. Rapid Iteration <ul><li>Hit => Double Down </li></ul><ul><li>Miss => Revert </li></ul>
    22. 23. Agility
    23. 24. For Engineering…
    24. 25. Build what people want
    25. 26. Less Fragility <ul><li>Less time waiting in queue </li></ul>
    26. 27. Smaller batches <ul><li>Less integration pain </li></ul>
    27. 28. More Focus
    28. 29. Our Story…
    29. 30. Which may apply to you… <ul><li>SaaS </li></ul><ul><li>Installed Product </li></ul><ul><li>Single Client </li></ul>
    30. 31. Progress Summary <ul><li>Small Stories </li></ul><ul><li>Removed Branches </li></ul><ul><li>Accelerated Builds </li></ul><ul><li>Automated Deployment </li></ul>
    31. 32. Deployment Pipeline <ul><li>Environments </li></ul><ul><ul><li>Dogfooding </li></ul></ul><ul><ul><li>Homogeneous </li></ul></ul><ul><li>Batched build pipeline </li></ul><ul><li>Smoke tests </li></ul><ul><li>Automated backup & rollback </li></ul>
    32. 33. Rapid Continuous Integration <ul><li>Build Stages </li></ul><ul><ul><li>Unit tests </li></ul></ul><ul><ul><li>UI tests </li></ul></ul><ul><ul><li>Functional tests </li></ul></ul><ul><li>Batching </li></ul><ul><ul><li>EC2 </li></ul></ul><ul><ul><li>Bamboo </li></ul></ul>
    33. 34. Deployment Speedup <ul><li>Previously… </li></ul><ul><ul><li>1-2 days effort </li></ul></ul><ul><ul><li>Every 2 weeks </li></ul></ul><ul><li>Now </li></ul><ul><ul><li>25min build, 15min deploy, zero downtime </li></ul></ul><ul><ul><li>Approx 10x / day </li></ul></ul>
    34. 35. Bamboo Support <ul><li>Tasks </li></ul><ul><li>Plan Variables </li></ul><ul><li>Parameterised Builds </li></ul><ul><li>Artifact Passing </li></ul><ul><li>Manual Stages (3.2) </li></ul>
    35. 36. Delivery Gates <ul><li>Checkpoints are necessary </li></ul><ul><ul><li>Just make sure they’re automated </li></ul></ul><ul><li>Manual checkpoints exist due to fear </li></ul><ul><ul><li>Often they can be removed with no tangible impact </li></ul></ul><ul><ul><li>Sometime possible to partially automate </li></ul></ul>
    36. 37. Dark Features <ul><li>No long-lived branches </li></ul><ul><li>Decouples deploy & launch </li></ul><ul><li>Reduces risk </li></ul>
    37. 38. Monitoring <ul><li>Log file analysis </li></ul><ul><ul><li>Splunk </li></ul></ul><ul><li>Application instrumentation </li></ul><ul><ul><li>Metrics </li></ul></ul><ul><li>Runtime VM instrumentation </li></ul><ul><ul><li>New Relic </li></ul></ul>
    38. 39. Challenges <ul><li>Scrum vs. Kanban </li></ul><ul><li>Downtime </li></ul><ul><li>Code & test discipline </li></ul><ul><ul><li>Pre-commit reviews? </li></ul></ul><ul><li>Change tracking </li></ul><ul><ul><li>Release notes? </li></ul></ul><ul><ul><li>What environments have received a change? </li></ul></ul>
    39. 40. Tips <ul><li>Environment Independence </li></ul><ul><li>Modular Code </li></ul><ul><ul><li>Or “Branch by Abstraction” </li></ul></ul><ul><li>Version Everything </li></ul><ul><ul><li>Especially the deploy scripts </li></ul></ul><ul><li>Team Changes </li></ul><ul><ul><li>QA </li></ul></ul><ul><ul><li>DevOps </li></ul></ul>
    40. 41. Future
    41. 42. Extending the pipeline Team Company Studio Studio Studio
    42. 43. Issue-based Deployment <ul><li>Smallest sensible chunk should be delivered </li></ul><ul><li>Used to be a whole release </li></ul><ul><ul><li>Traditional Process </li></ul></ul><ul><li>A feature? </li></ul><ul><ul><li>Deployment after feature branch merges </li></ul></ul><ul><li>A commit? </li></ul><ul><ul><li>Deploy on green build </li></ul></ul><ul><li>An issue? </li></ul>
    43. 44. Issue-based Deployment A B A C B D D B C B E B B B B master/default/trunk deployment branch
    44. 45. Summary <ul><li>Commit -> Dogfooding </li></ul><ul><ul><li>Time: 2 weeks to 30min </li></ul></ul><ul><ul><li>Frequency: Fortnightly to 10 times per day </li></ul></ul><ul><li>It may require changes to existing processes </li></ul><ul><li>Atlassian tools are currently easy to automate </li></ul><ul><li>Continuous Delivery is a first-class feature of Bamboo </li></ul><ul><li>Stay tuned for more help from Atlassian </li></ul>
    45. 46. Questions?
    46. 47. More Information <ul><li>Bamboo 3.2 </li></ul><ul><li>http://atlassian.com/sotware/bamboo </li></ul><ul><li>Atlassian Dev Blog </li></ul><ul><li>http://blogs.atlassian.com/developer </li></ul><ul><li>Recorded Summit Sessions </li></ul><ul><li>http://summit.atlassian.com </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×