continuous deployment - Devops Sydney

  • 988 views
Uploaded on

slidedeck from July 2011 Devops Sydney Meetup. Continuous delivery @atlassian by @hobos_delight

slidedeck from July 2011 Devops Sydney Meetup. Continuous delivery @atlassian by @hobos_delight

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
988
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Continuous Delivery @ Atlassian How we do it on the Confluence team Ryan Thomas ryan.thomas@atlassian.com @hobos_delight
  • 2. About Me 2
  • 3. About Me• Developer on the Confluence team at Atlassian 2
  • 4. About Me• Developer on the Confluence team at Atlassian• Wrote the current continuous deployment infrastructure 2
  • 5. About Me• Developer on the Confluence team at Atlassian• Wrote the current continuous deployment infrastructure• Manage ecosystem integration for Confluence 4.0 2
  • 6. About Me• Worked at Oracle / Hyperion, Objective and a small startup 2
  • 7. About Me• Worked at Oracle / Hyperion, Objective and a small startup• Grew up on the Central Coast 2
  • 8. About Me• Worked at Oracle / Hyperion, Objective and a small startup• Grew up on the Central Coast• Studied in Newcastle 2
  • 9. About Me• Worked at Oracle / Hyperion, Objective and a small startup• Grew up on the Central Coast• Studied in Newcastle• Spent some time in the ADF 2
  • 10. Tonight• Moving the Confluence team to Continuous Deployment• Bridging the Dev-IT gap 3
  • 11. How it used to be 4
  • 12. How it used to be• Confluence has ~25 developers, 30+ people total in the team 4
  • 13. How it used to be• Confluence has ~25 developers, 30+ people total in the team• Atlassian IT is 7 people worldwide 4
  • 14. How it used to be• Confluence has ~25 developers, 30+ people total in the team• Atlassian IT is 7 people worldwide• Very much an “Us vs. Them” mentality 4
  • 15. How it used to be 5
  • 16. How it used to be• Developers would build a release 5
  • 17. How it used to be• Developers would build a release• ‘Toss it over the fence’ to IT to deploy 5
  • 18. How it used to be• Developers would build a release• ‘Toss it over the fence’ to IT to deploy• This would happen fortnightly 5
  • 19. What was the cost? 6
  • 20. What was the cost?• Dev time to manually build the release: 1/2 day 6
  • 21. What was the cost?• Dev time to manually build the release: 1/2 day• IT time to deploy: 3 days / fortnight 6
  • 22. What was the cost?• Dev time to manually build the release: 1/2 day• IT time to deploy: 3 days / fortnight• Average 1.5 days a week on deployment for Confluence 6
  • 23. Things had to change! 7
  • 24. Things had to change!• Technically (easy) 7
  • 25. Things had to change!• Technically (easy)• Changes to our attitudes (hard) • Development had to redefine its definition of done • Blur the line between sysadmin & dev 7
  • 26. Things had to change!• Technically (easy)• Changes to our attitudes (hard) • Development had to redefine its definition of done • Blur the line between sysadmin & dev• Create a mutually beneficial relationship between Dev and IT 7
  • 27. The Technical Limitations 8
  • 28. The Technical Limitations• 3 beautiful and unique snowflakes 8
  • 29. The Technical Limitations• 3 beautiful and unique snowflakes• Each server was a stage in the deployment process: • Dogfooding • Staging • Production (business critical dogfooding) 8
  • 30. The Technical Limitations• Each sever had its own deployment process• Dogfooding was managed by Dev• Was an openvz container• Staging / Production managed by IT• Used puppet for config management 9
  • 31. The Technical Limitations 10
  • 32. The Technical Limitations• Different user management 10
  • 33. The Technical Limitations• Different user management• Different webapp directory layouts 10
  • 34. The Technical Limitations• Different user management• Different webapp directory layouts• An infrastructure that has evolved with company growth 10
  • 35. Could we improve this? 11
  • 36. Could we improve this?• Were there any OTS tools we could use 11
  • 37. Could we improve this?• Were there any OTS tools we could use• Has this been solved before 11
  • 38. Could we improve this?• Were there any OTS tools we could use• Has this been solved before• puppet or chef? 11
  • 39. Could we improve this?• Were there any OTS tools we could use• Has this been solved before• puppet or chef?• How do we get a common deployment platform 11
  • 40. The bottom line 12
  • 41. The bottom lineHow can we reduce the time from commit to usage in production? 12
  • 42. What did we do? 13
  • 43. What did we do?• Fixed our snowflakes 13
  • 44. What did we do?• Fixed our snowflakes • Three new vz containers 13
  • 45. What did we do?• Fixed our snowflakes • Three new vz containers • puppet for config management 13
  • 46. Fixed how we deploy 14
  • 47. Fixed how we deploy• Why not puppet or chef? 14
  • 48. Fixed how we deploy• Why not puppet or chef? • Lack of experience (dev) 14
  • 49. Fixed how we deploy• Why not puppet or chef? • Lack of experience (dev) • Unsure of CI integration 14
  • 50. Fixed how we deploy• Why not puppet or chef? • Lack of experience (dev) • Unsure of CI integration • Go with what you know 14
  • 51. Our solution 15
  • 52. Our solution• 4 main components 15
  • 53. Our solution• 4 main components • Maven plugin 15
  • 54. Our solution• 4 main components • Maven plugin • Python scripts 15
  • 55. Our solution• 4 main components • Maven plugin • Python scripts • Configuration 15
  • 56. Our solution• 4 main components • Maven plugin • Python scripts • Configuration • Bamboo build plan (for co-ordination) 15
  • 57. Maven Plugin 16
  • 58. Maven Plugin1. Maven plugin takes args for target / user / key / artifact 16
  • 59. Maven Plugin1. Maven plugin takes args for target / user / key / artifact2. Checks out deployment scripts on target, copies artifact up 16
  • 60. Maven Plugin1. Maven plugin takes args for target / user / key / artifact2. Checks out deployment scripts on target, copies artifact up3. Calls into the deployment scripts 16
  • 61. Maven Plugin1. Maven plugin takes args for target / user / key / artifact2. Checks out deployment scripts on target, copies artifact up3. Calls into the deployment scripts4. Handles writing script logs back to stdout 16
  • 62. Maven Plugin 17
  • 63. Maven Plugin• This is a ‘brain-dead’ plugin 17
  • 64. Maven Plugin• This is a ‘brain-dead’ plugin• Very little logic involved 17
  • 65. Maven Plugin• This is a ‘brain-dead’ plugin• Very little logic involved• Handles ssh to target / logging / copying files 17
  • 66. Deployment Scripts 18
  • 67. Deployment Scripts• Written in python (2.4) 18
  • 68. Deployment Scripts• Written in python (2.4)• Primarily configuration driven 18
  • 69. Deployment Scripts• Written in python (2.4)• Primarily configuration driven• Modules for interacting with: 18
  • 70. Deployment Scripts• Written in python (2.4)• Primarily configuration driven• Modules for interacting with: • nginx 18
  • 71. Deployment Scripts• Written in python (2.4)• Primarily configuration driven• Modules for interacting with: • nginx • daemon tools 18
  • 72. Deployment Scripts• Written in python (2.4)• Primarily configuration driven• Modules for interacting with: • nginx • daemon tools • Sending emails / IMs 18
  • 73. Deployment Scripts 19
  • 74. Deployment Scripts• Provides hooks for products to override: • stop • pre-deploy • deploy • post-deploy • start 19
  • 75. Integration with CI 20
  • 76. Integration with CI• We use Bamboo to monitor and control our deployments 20
  • 77. Integration with CI• We use Bamboo to monitor and control our deployments• Any CI tool that supports maven can be used 20
  • 78. Integration with CI• We use Bamboo to monitor and control our deployments• Any CI tool that supports maven can be used• Automated deployment to dogfooding system 20
  • 79. Integration with CI• We use Bamboo to monitor and control our deployments• Any CI tool that supports maven can be used• Automated deployment to dogfooding system• Manual triggering of staging and production 20
  • 80. Take a look 21
  • 81. The end result 22
  • 82. The end result• Deployments are triggered off of our main build 22
  • 83. The end result• Deployments are triggered off of our main build• ~12 deployments a day 22
  • 84. The end result• Deployments are triggered off of our main build• ~12 deployments a day• Deployment is a single click, by anyone 22
  • 85. The end result• Deployments are triggered off of our main build• ~12 deployments a day• Deployment is a single click, by anyone• Frees up IT by 3 days / fortnight 22
  • 86. The end result• Deployments are triggered off of our main build• ~12 deployments a day• Deployment is a single click, by anyone• Frees up IT by 3 days / fortnight• 15 minutes to deploy 22
  • 87. The end result 22
  • 88. Questions? 23