Otto Jongerius Build Engineering @ Atlassian
@xzu
Fireballs, Icebats and
1,000,000 Plugins
PuppetCamp Tokyo - May 2014
Continuous Delivery
(a refresher)
Develop => Build => Test => Release!
Continuous Delivery
(a refresher)
Develop => Build => Test => Release!
smaller change delta
more feedback
faster feedback
...
Our happy path
0
200
400
600
800
2011 2012 2013 2014 2015
Deployments/year
quarterly fortnightly weekly
daily
many/day
A little bit of history…
A little bit of history…
0
12500
25000
37500
50000
October 2011 June 2012 January 2013 June 2013 April 2014
50.000
32.000
...
A little bit of history…
Atlassian Application
Application Core
Application
Bundled
Plugins
plugin1 plugin2
plugin3 plugin...
A little bit of history…
Atlassian Application
Application Core
Application
Bundled
Plugins
plugin1 plugin2
plugin3 plugin...
A little bit of history…
bash$ cat jira/pom.xml
…
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-api<...
A little bit of history…
Atlassian Application
Application Core
Application
Bundled
Plugins
plugin1 plugin2
plugin3 plugin...
Enter the fireball
Enter the fireball
bash$ cat fireball/pom.xml
…
<dependency>
<GroupId>${jira.group.id}</GroupId>
<artifactId>${jira.war.art...
Launching the fireball
OpenVZ Container
Postgres
Apache
Confluence
JIRA
Bamboo
Crowd
CustomerInstance
NFS
Launching the fireball
Datacenter
Rack Rack Rack RackRack
Rack Rack Rack RackRack
Rack Rack Rack RackRack
Rack Rack Rack Ra...
Launching the fireball
bash$ sudo /path/to/new.version/install.sh
INSTALLED_SERVICES=“postgres jira bamboo confluence crowd...
Launching the fireball
Right?
A little bit of history…
jira/install.sh
postgres/install.sh
confluence/
install.sh
bamboo/
install.sh
crowd/install.sh
* (...
A little bit of history…
jira/install.sh
postgres/install.sh
confluence/
install.sh
bamboo/
install.sh
crowd/install.sh
* (...
A little bit of history…
jira/install.sh
postgres/install.sh
confluence/
install.sh
bamboo/
install.sh
crowd/install.sh
* (...
A little bit of history…
http://www.flickr.com/photos/7337467@N04/3051244623
Our happy path
0
200
400
600
800
2011 2012 2013 2014 2015
Deployments/year Progress
quarterly fortnightly weekly
daily
man...
A little bit of history…
Atlassian Application
Application Core
Application
Bundled
Plugins
plugin1 plugin2
plugin3 plugin...
Enter the icebat
Fire + Ball
Ice + Bat
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
postgres
Enter the icebat
j2ee-app
jira
postgres
crowd
confluence
bamboo
apache
j2ee-plugin
vendor plugin
postgres5.4
6.1
5.0
2.7.5
...
Enter the icebat
Development
5.4m3
6.2-snapshot
5.1-m1
2.7.5-m6
1.2.1-snapshot
hiera-versions.yaml
Dogfooding Production
5...
Local overrides
global configuration
datacenter configuration
rack configuration
local configuration
http://www.flickr.com/pho...
Hard Labour
Jason ‘Mechanical Turk’ Birch
The Great Leap Forward
The Great Leap Forward
The Great Leap Forward
Applications
The Great Leap Forward
Plugins
The Great Leap Forward
Environments
The Great Leap Forward
Versions
The great leap forward
The great leap forward
“client”
The great leap forward
“client”
facter
environment
licensed products
The great leap forward
“client”
facter
environment
licensed products
manifesto
The great leap forward
“client”
facter
environment
licensed products
puppet
apply
manifesto
Our happy path
0
200
400
600
800
2011 2012 2013 2014-01 2014-12 2015
Deployments/year Progress
quarterly fortnightly weekl...
Next Steps
• Onboard everything into Manifesto, such that development teams control their own destinies
• Automated accept...
Special thanks to…
Ryan Thomas
Jason Birch
Matt Moor
Thanks!
Dev OpsDevs who can OpOps who can Dev
We’re hiring!
atlassian.com/jobs
(or speak to me)
Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of continuous delivery
Upcoming SlideShare
Loading in...5
×

Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of continuous delivery

899
-1

Published on

Presented at Puppet Camp Tokyo 2014: "Fireballs, ice bats and 1,000,000 plugins: a story of continuous delivery" by Otto Jongerius, Atlassian

Published in: Technology, Art & Photos
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
899
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Puppet Camp Tokyo 2014: Fireballs, ice bats and 1,000,000 plugins: a story of continuous delivery

  1. 1. Otto Jongerius Build Engineering @ Atlassian @xzu
  2. 2. Fireballs, Icebats and 1,000,000 Plugins PuppetCamp Tokyo - May 2014
  3. 3. Continuous Delivery (a refresher) Develop => Build => Test => Release!
  4. 4. Continuous Delivery (a refresher) Develop => Build => Test => Release! smaller change delta more feedback faster feedback automated upgrade smaller magnitude of failure
  5. 5. Our happy path 0 200 400 600 800 2011 2012 2013 2014 2015 Deployments/year quarterly fortnightly weekly daily many/day
  6. 6. A little bit of history…
  7. 7. A little bit of history… 0 12500 25000 37500 50000 October 2011 June 2012 January 2013 June 2013 April 2014 50.000 32.000 24.000 15.000 500 Approximate number of OnDemand instances
  8. 8. A little bit of history… Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN
  9. 9. A little bit of history… Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN Alice Bob Charlie Dave Ed Frank Gerry
  10. 10. A little bit of history… bash$ cat jira/pom.xml … <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-api</artifactId> <version>${project.version}</version> </dependency> …
  11. 11. A little bit of history… Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN
  12. 12. Enter the fireball
  13. 13. Enter the fireball bash$ cat fireball/pom.xml … <dependency> <GroupId>${jira.group.id}</GroupId> <artifactId>${jira.war.artifact.id}</artifactId> <version>${jira.war.version}</version> … </dependency> …
  14. 14. Launching the fireball OpenVZ Container Postgres Apache Confluence JIRA Bamboo Crowd CustomerInstance NFS
  15. 15. Launching the fireball Datacenter Rack Rack Rack RackRack Rack Rack Rack RackRack Rack Rack Rack RackRack Rack Rack Rack RackRack Rack
  16. 16. Launching the fireball bash$ sudo /path/to/new.version/install.sh INSTALLED_SERVICES=“postgres jira bamboo confluence crowd apache” for service in ${INSTALLED_SERVICES}; do /path/to/new.version/$service/install.sh done … OR http://www.flickr.com/photos/64577732@N00/1414883135http://www.flickr.com/photos/44124473769@N01/292642699
  17. 17. Launching the fireball Right?
  18. 18. A little bit of history… jira/install.sh postgres/install.sh confluence/ install.sh bamboo/ install.sh crowd/install.sh * (over) simplified model
  19. 19. A little bit of history… jira/install.sh postgres/install.sh confluence/ install.sh bamboo/ install.sh crowd/install.sh * (over) simplified model
  20. 20. A little bit of history… jira/install.sh postgres/install.sh confluence/ install.sh bamboo/ install.sh crowd/install.sh * (over) simplified model http://www.flickr.com/photos/64577732@N00/1414883135
  21. 21. A little bit of history… http://www.flickr.com/photos/7337467@N04/3051244623
  22. 22. Our happy path 0 200 400 600 800 2011 2012 2013 2014 2015 Deployments/year Progress quarterly fortnightly weekly daily many/day You are here
  23. 23. A little bit of history… Atlassian Application Application Core Application Bundled Plugins plugin1 plugin2 plugin3 plugin4 pluginN Alice Bob Charlie Dave Ed Frank Gerry
  24. 24. Enter the icebat Fire + Ball Ice + Bat
  25. 25. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin
  26. 26. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin
  27. 27. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin
  28. 28. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin
  29. 29. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin postgres
  30. 30. Enter the icebat j2ee-app jira postgres crowd confluence bamboo apache j2ee-plugin vendor plugin postgres5.4 6.1 5.0 2.7.5 1.1 hiera-versions.yaml
  31. 31. Enter the icebat Development 5.4m3 6.2-snapshot 5.1-m1 2.7.5-m6 1.2.1-snapshot hiera-versions.yaml Dogfooding Production 5.4m2.1 6.1m7 5.1 2.7.5-m5 1.2hiera-versions.yaml 5.4m2 6.1m6 5.0-m1 2.7.5-m2 1.1-m1 hiera-versions.yaml
  32. 32. Local overrides global configuration datacenter configuration rack configuration local configuration http://www.flickr.com/photos/streamishmc/4936051/
  33. 33. Hard Labour Jason ‘Mechanical Turk’ Birch
  34. 34. The Great Leap Forward
  35. 35. The Great Leap Forward
  36. 36. The Great Leap Forward Applications
  37. 37. The Great Leap Forward Plugins
  38. 38. The Great Leap Forward Environments
  39. 39. The Great Leap Forward Versions
  40. 40. The great leap forward
  41. 41. The great leap forward “client”
  42. 42. The great leap forward “client” facter environment licensed products
  43. 43. The great leap forward “client” facter environment licensed products manifesto
  44. 44. The great leap forward “client” facter environment licensed products puppet apply manifesto
  45. 45. Our happy path 0 200 400 600 800 2011 2012 2013 2014-01 2014-12 2015 Deployments/year Progress quarterly fortnightly weekly many/week many/day You are here twice daily
  46. 46. Next Steps • Onboard everything into Manifesto, such that development teams control their own destinies • Automated acceptance testing • Fault tolerance for manifesto • Dark feature (feature flags) control within Manifesto/icebat
  47. 47. Special thanks to… Ryan Thomas Jason Birch Matt Moor
  48. 48. Thanks! Dev OpsDevs who can OpOps who can Dev We’re hiring! atlassian.com/jobs (or speak to me)
  1. A particular slide catching your eye?

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

×