puppet camp tokyo 2014: fireballs, ice bats and 1,000,000 plugins: a story of continuous delivery

49

Upload: puppet-labs

Post on 10-May-2015

583 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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

Otto Jongerius Build Engineering @ Atlassian

@xzu

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

Fireballs, Icebats and 1,000,000 Plugins

PuppetCamp Tokyo - May 2014

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

Continuous Delivery (a refresher)

Develop => Build => Test => Release!

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

Continuous Delivery (a refresher)

Develop => Build => Test => Release!

smaller change delta

more feedbackfaster feedback

automated upgrade smaller magnitude of failure

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

Our happy path

0

200

400

600

800

2011 2012 2013 2014 2015

Deployments/year

quarterly fortnightly weekly

daily

many/day

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

A little bit of history…

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

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

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

A little bit of history…

Atlassian Application

Application Core

Application Bundled Plugins

plugin1 plugin2

plugin3 plugin4

pluginN

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

A little bit of history…

Atlassian Application

Application Core

Application Bundled Plugins

plugin1 plugin2

plugin3 plugin4

pluginN

Alice

Bob

Charlie

DaveEd

FrankGerry

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

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> …

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

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

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

Enter the fireball

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

Enter the fireballbash$ cat fireball/pom.xml … <dependency> <GroupId>${jira.group.id}</GroupId> <artifactId>${jira.war.artifact.id}</artifactId> <version>${jira.war.version}</version> … </dependency> …

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

Launching the fireballOpenVZ Container

Postgres

ApacheConfluence

JIRA

Bamboo

CrowdCus

tom

er In

stan

ce

NFS

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

Launching the fireball

Datacenter

Rack Rack Rack RackRack

Rack Rack Rack RackRack

Rack Rack Rack RackRack

Rack Rack Rack RackRack

Rack

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

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

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

Launching the fireball

Right?

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

A little bit of history…

jira/install.sh

postgres/install.sh

confluence/install.sh

bamboo/install.sh

crowd/install.sh

* (over) simplified model

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

A little bit of history…

jira/install.sh

postgres/install.sh

confluence/install.sh

bamboo/install.sh

crowd/install.sh

* (over) simplified model

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

A little bit of history…

jira/install.sh

postgres/install.sh

confluence/install.sh

bamboo/install.sh

crowd/install.sh

* (over) simplified modelhttp://www.flickr.com/photos/64577732@N00/1414883135

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

A little bit of history…

http://www.flickr.com/photos/7337467@N04/3051244623

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

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

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

A little bit of history…

Atlassian Application

Application Core

Application Bundled Plugins

plugin1 plugin2

plugin3 plugin4

pluginN

Alice

Bob

Charlie

DaveEd

FrankGerry

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

Enter the icebat

Fire + Ball

Ice + Bat

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

postgres

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

Enter the icebat

j2ee-appjira

postgres

crowd

confluence

bamboo

apache

j2ee-plugin

vendor plugin

postgres5.4

6.1

5.0

2.7.5

1.1

hier

a - v

ersi

ons.

yam

l

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

Enter the icebat

Development5.4m3

6.2-snapshot

5.1-m1

2.7.5-m6

1.2.1-snapshot

hier

a - v

ersi

ons.

yam

lDogfooding Production

5.4m2.1

6.1m7

5.1

2.7.5-m5

1.2hi

era

- ver

sion

s.ya

ml 5.4m2

6.1m6

5.0-m1

2.7.5-m2

1.1-m1

hier

a - v

ersi

ons.

yam

l

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

Local overridesglobal configuration

datacenter configurationrack configurationlocal configuration

http://www.flickr.com/photos/streamishmc/4936051/

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

Hard Labour

Jason ‘Mechanical Turk’ Birch

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

The Great Leap Forward

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

The Great Leap Forward

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

The Great Leap Forward

Applications

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

The Great Leap Forward

Plugins

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

The Great Leap Forward

Environments

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

The Great Leap ForwardVersions

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

The great leap forward

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

The great leap forward

“client”

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

The great leap forward

“client”

facterenvironment

licensed products

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

The great leap forward

“client”

facterenvironment

licensed products

manifesto

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

The great leap forward

“client”

facterenvironment

licensed products

puppet apply

manifesto

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

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

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

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

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

Special thanks to…

Ryan ThomasJason BirchMatt Moor

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

Thanks!

Dev OpsDevs who can OpOps who can Dev

We’re hiring! atlassian.com/jobs (or speak to me)