Top Banner
PETER LESCHEV TEAM LEAD ATLASSIAN @PETERLESCHEV Build Engineering @ Atlassian: Scaling to 150k builds per month & beyond PuppetConf 2015
100

How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Jan 22, 2018

Download

Technology

Peter Leschev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

PETER LESCHEV • TEAM LEAD • ATLASSIAN • @PETERLESCHEV

Build Engineering @ Atlassian:Scaling to 150k builds per month & beyond

PuppetConf 2015

Page 2: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

T E A M

I N T R O D U C T I O N

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Introduction

C O N C L U S I O N

Page 3: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Build platform & services used internally within

Atlassian to build, test & deliver

software

Page 4: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Developers expect a reliable infrastructure

& fast CI feedback

Page 5: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

• 12 Bamboo Servers• maven.atlassian.com / 9 Nexus instances / 9 TB

• 7 Nexus proxies for internal traffic

• Monitoring• opsview, graphite, statsd, newrelic, datadog

Build Engineering today @ Atlassian

• 1200 build agents on EC2• include SCM clients, JDKs, JVM build tools, databases, headless

browser testing, Python builds, NodeJS, installers & more

• Maintain 20 AMIs of various build configurations

Page 6: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

4 years ago:

Builds per month

21k

Page 7: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Last month:

Builds per month

186k

Page 8: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Build Engineering @ Atlassian

Page 9: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015
Page 10: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

JIRA alone has

Automated tests

49k

Page 11: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015
Page 12: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

3 stories of gaining maturity to handle Atlassian growth

Page 13: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

I N T R O D U C T I O N

T E A M

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Team

C O N C L U S I O N

Page 14: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

History of team roles

Page 15: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Individual Engineers

Information silos

Fault investigation, requests for advice, unplanned work

Little project work

Very interrupt driven

Duplication of effort

Limited to customer driven changes

Page 16: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Disturbed roleKnowledge Transfer

when switching between project / disturbed roles is difficult

More project workNon-disturbed can focus on larger tasks

Context switching

Reduction in duplication of effort, promotes collaboration within the team

2 week rotation

Page 17: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Team expands

Build Engineers

Page 18: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Team expands

Build Engineers

Page 19: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Team expands

Infra Engineers

Developers

Build Engineers

Page 20: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Disturbed for Dev & Infra

Too interrupt driven

To encourage knowledge transfer between infra & dev

Staggered changeoversMinimising disruption due to context switching

Disturbed pairing

Couldn’t handle smaller customer raised requests & interrupt driven work

Page 21: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Supporting Developers

team channel

Page 22: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Supporting Developers

Page 23: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Supporting Developers

Page 24: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

1. Measure the pain

2. Continuous Improvement

Page 25: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Technical Debt

Page 26: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Technical Debt

Page 27: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Contact Rate

+ Confluence Questions+ Hipchat queriesCustomer JIRA issues

Number of Developers

( )÷

=

Page 28: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Contact Rate

Page 29: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

The Shield

http://www.clker.com/cliparts/e/d/c/4/11970889822084687040sinoptik_Medieval_shield.svg.hi.png

Page 30: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Rebranding MaintenanceDisturbed

Removing the negative attitude towards the old role within the team

Page 31: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Project

work

Maintenance

The Shield

Page 32: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

How do we avoid this in the future?P E T E R L E S C H E V

“ ”

Page 33: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Fix it now, fix it for the future

Page 34: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Self service

Page 35: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Chat bots

Self Service

Page 36: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Self Service

Maven Self Help Tool

Page 37: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

I N T R O D U C T I O N

I N F R A S T R U C T U R E

T E A M

B A M B O O S E RV E R S

Infrastructure

C O N C L U S I O N

Page 38: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrastructure as Code

= Puppet + SCM ?

Page 39: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

4 years ago…

Started using Puppet

Manually maintained snow flakes

Page 40: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Production rollout

puppetmaster

build agents

Page 41: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Production rollout failure

puppetmaster

build agents

Page 42: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Low confidence of change

Page 43: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015
Page 44: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

atlassian.com/git

Page 45: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Style in Pull Requests

Page 46: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Puppet Lint

https://github.com/rodjek/puppet-lintTim Sharpe

@rodjek

Runs checks & posts results, fails if there are any warnings or errors

Automated Build

Automated Style Checking

Page 47: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

• Coding on Puppet Master• Culture of manually modifying production - Configuration Drift• Impact on Builds

Using Staging for Development

puppetmaster

build agents

staging puppet environment

Page 48: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Vagrant

www.vagrantup.comMitchell Hashimoto

@mitchellh

Packer

packer.io

Page 49: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Rolling out to stagingRolling out to production

Broken build agents

Developing locally

Page 50: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Behaviour Driven Development

Cucumber

https://github.com/cucumber/aruba

Page 51: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

But it works on my machineE V E RY D E V E L O P E R

“ ”

Page 52: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Continuous Integration‘From scratch’ provisioning

Confidence that you can rebuild in disaster

Page 53: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

The Pets: you give nice names, you stroke them, and when they get ill, you nurse them back to health, taking a long time over it.

”The Cattle: you give them numbers. When they get ill, you shoot them T I M B E L L , C E R N

Page 54: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Provisioning from scratch is slow

Page 55: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Profiling Puppet Runs

Add “--evaltrace” to puppet apply

+ =Collect and show the longest occurrences of:“Evaluated in ([\d\.]+) seconds”

Page 56: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Profiling Cucumber runs

http://itshouldbeuseful.wordpress.com/2010/11/10/find-your-slowest-running-cucumber-features/

Page 57: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

• Faster local provisioning• Different class of problems found• Closer to production

Delta Provisioning

‘from scratch’ provision ‘delta’ provision

provision VM

export VM fileshare

import VM box

provision VM

on success

Page 58: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Broken buildsmaster

Page 59: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Branch builds

BUILDENG-5670

BUILDENG-5669

master

Page 60: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrequent Releases

Page 61: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

• Puppet runs impacted running builds• Disabling all the build agents

• Manually performing the roll out

• git clone / librarian-puppet / symlink update on puppetmaster

• Kick off puppet on all the build agents

• Enabling all the build agents

• Set of Puppet environments for every Bamboo server

Painful Puppet Rollouts

Page 62: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Graceful Service restarts

+Bamboo Agent JVM process watches for touch file & shutdowns when Idle(written as a Bamboo Plugin)

Page 63: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Puppet environments reduced

stagingproduction

server1_stagingserver1_productionserver2_stagingserver2_productionserver3_stagingserver3_production

etc

Page 64: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Deployments

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

staging

production

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build• git clone

• librarian-puppet

• to specific environments

• scp to puppet master & symlink update

test deploy• ‘delta’ & ‘from scratch’

vagrant provisions

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Releasebuild & test AMIs

• Generated using Packer

• AMIs on Bamboo Servers updateddeploy AMIs

Page 65: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Puppet Build, Test & Deploy Pipeline

Page 66: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Puppet Build, Test & Deploy Pipeline

Page 67: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Terraform Pipeline

Plan & Apply changesof staging & production environments

terraform.io

Page 68: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

‘open prs’ Bot

Page 69: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Less human effort through automation

= Increased frequency

& reliability of releases

Page 70: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

SnowflakesPets

CattleStateless Machines

Page 71: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrastructure consistency is key

Page 72: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Challengesintroduces instability

Lots of packagesLarge number of constantly updating package dependencies

External dependencies

Page 73: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

I N T R O D U C T I O N

B A M B O O S E RV E R S

T E A M

I N F R A S T R U C T U R E

Bamboo Servers

C O N C L U S I O N

Page 74: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

At scale is hard

Page 75: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Servers

12

Page 76: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Build Plans

3500

Page 77: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Plan Branches

14k

Page 78: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo is great, but hard to manage at scale

Page 79: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Build Configuration as code

Page 80: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Plan Templates

Bamboo Plugin:

Page 81: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Plan Templates

Checked into SCM

Bamboo Plugin:Reusable snippets

changes can be code reviewed

Export plans for backup, or move to another Bamboo instance easily

Bulk changes

Export existing plans

Update 100s of job requirements with a single commit

Page 82: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Pushing Bamboo to its limits

Page 83: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Agent Smith Wallboard

Bamboo Plugin:

Trend data sent to Graphite

https://marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugin.agent-smith-wallboard

Page 84: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015
Page 85: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Add metrics, then alert on them

Page 86: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Monitoring Plugin

Metrics to graphiteBamboo Plugin:

Bamboo HealthActiveMQ, Database connections, Tomcat, JVM Memory usage.

Background thread workers. Number of plans / plan branches, plans / plan branches for deletion.

Page 87: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015
Page 88: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

When a Bamboo Server starts

misbehaving…

Page 89: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrastructure differences? Is it Bamboo Configuration?

Is it a Bamboo Plugin? Is it Bamboo the product?

How is it being used?

Page 90: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrastructure consistency of Bamboo Servers is key

Page 91: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Puppet provider

+

REST API for Administration

Bamboo Puppet Provider

REST calls

https://forge.puppetlabs.com/atlassian/bamboo_rest

Page 92: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Puppet provider

https://forge.puppetlabs.com/atlassian/bamboo_rest

Hipchat Notification

Managed via Puppet

Page 93: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Plugins‘Continuous Plugin Deployment’ Task

This text box is not intended to contain a bunch of copy.

1-click upgrades of

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

All Bamboo Servers

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build

Deploy

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

build & test AMIs

Build

https://marketplace.atlassian.com/plugins/com.atlassian.bamboo.plugins.deploy.continuous-plugin-deployment

Page 94: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Bamboo Servers1-click upgrades of

Using scp / ssh & puppet

How environments work

Task list Available agents

Available agents

Available agents

Destination server

Destination server

Production

TASK 1TASK 2

TASK 1TASK 2

TASK 1TASK 2

1.3

Task list

Task list Available agents

TASK 1TASK 2

Task list

Task list

Release

Production

TASK 1TASK 2

1.3

Task list Available agents Destination server

Production

TASK 1TASK 2

1.3

Available agents Destination server

TASK 1TASK 2

Task list

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Upgrade Bamboo

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Build Bamboo

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

Deploymentproject

Build plan

How artifacts work

1.0

1.3

1.3

1.3

Build results(Artifacts)

Release Environments

Productio

n

Developm

ent

1.0

1.31.3

Productio

n

Developm

ent

1.31.3

Developm

ent

Artifactsn

n+1

n+2

Versions

Test & Build

JIRA issue Commit TriggerCode

Release notes

Repository Build artifacts Release

jira-bamboo

servicedesk-bamboo

Page 95: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Infrastructure differences? Is it Bamboo Configuration?

Is it a Bamboo Plugin? Is it Bamboo the product?

How is it being used?

Page 96: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

T E A M

I N F R A S T R U C T U R E

B A M B O O S E RV E R S

Conclusion

C O N C L U S I O N

I N T R O D U C T I O N

Page 97: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Constant improvement

Page 98: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

We’ve matured to handle the growth of Atlassian

Page 99: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Come join us!

Page 100: How Atlassians Build Engineering Team Has Scaled to 150k Builds Per Month and Beyond – PuppetConf 2015

Thank you!

PETER LESCHEV • TEAM LEAD • ATLASSIAN • @PETERLESCHEV