Monster Builds and How to Tame Them - Atlassian Summit 2010

52
Monster Builds and How to Tame Them Chris Mountford chris@atlassian.com 1

description

Monster Builds and How to Tame Them Chris Mountford, Atlassian

Transcript of Monster Builds and How to Tame Them - Atlassian Summit 2010

Page 1: Monster Builds and How to Tame Them - Atlassian Summit 2010

Monster Builds and How to Tame Them

Chris [email protected]

1

Page 2: Monster Builds and How to Tame Them - Atlassian Summit 2010

Source Code

Working Software Build

2

Page 3: Monster Builds and How to Tame Them - Atlassian Summit 2010

x

Truck Build

Small

Monsteryouare here

3

Page 4: Monster Builds and How to Tame Them - Atlassian Summit 2010

The Monster Build Threat• Shipping

• Unit Testing

• Integration Testing

• Functional Testing

• Selenium Testing

• Synergy Harnessing

4

Page 5: Monster Builds and How to Tame Them - Atlassian Summit 2010

5

Page 6: Monster Builds and How to Tame Them - Atlassian Summit 2010

Just JIRA

6

Page 7: Monster Builds and How to Tame Them - Atlassian Summit 2010

Just JIRA(not the biggest)

7

Page 8: Monster Builds and How to Tame Them - Atlassian Summit 2010

Multi

PolandHosted

PluginsJust JIRA

8

Page 9: Monster Builds and How to Tame Them - Atlassian Summit 2010

Just JIRA

Multi

PolandHosted

Plugins

9

Page 10: Monster Builds and How to Tame Them - Atlassian Summit 2010

Wallboards

10

Page 11: Monster Builds and How to Tame Them - Atlassian Summit 2010

Build Duration• release build took 30-60 CPU hours

• supported platform matrix combinations

• 3.5 hour functional test runs

JIRA11

Page 12: Monster Builds and How to Tame Them - Atlassian Summit 2010

Long Builds Cause Low Velocity

• Context switching overhead

• Task entanglement

• Build breakage confusion

• Agile?

12

Page 13: Monster Builds and How to Tame Them - Atlassian Summit 2010

13

Page 14: Monster Builds and How to Tame Them - Atlassian Summit 2010

•optimization

•matrix culling

•maximize test power

•minimize wait time

Taming Monster Build Times

14

Page 15: Monster Builds and How to Tame Them - Atlassian Summit 2010

15

Page 16: Monster Builds and How to Tame Them - Atlassian Summit 2010

• measure first

• reduce network & disk

• RAM disks, proxies, colocation

• cut rework

• measure again

Optimization

16

Page 17: Monster Builds and How to Tame Them - Atlassian Summit 2010

•smarter admin navigation

•20% speedup

Example: JIRA Func Tests

17

Page 18: Monster Builds and How to Tame Them - Atlassian Summit 2010

•browsers

•operating systems

•databases

•libraries

Matrix Culling

18

Page 19: Monster Builds and How to Tame Them - Atlassian Summit 2010

• user based editions

• dropped ancient app servers

• dropped java 1.4

• release down to 18 hours

Example: JIRA Matrix Culling

19

Page 20: Monster Builds and How to Tame Them - Atlassian Summit 2010

Power to Wait Ratio

unit tests

functional tests

20

Page 21: Monster Builds and How to Tame Them - Atlassian Summit 2010

Be Selectively Continuous•common customer configurations

•branch vs trunk

•nightly builds

•sunday builds

21

Page 22: Monster Builds and How to Tame Them - Atlassian Summit 2010

testsfeatures

platformsbrowsersversions

ajax22

Page 23: Monster Builds and How to Tame Them - Atlassian Summit 2010

23

Page 24: Monster Builds and How to Tame Them - Atlassian Summit 2010

24

Page 25: Monster Builds and How to Tame Them - Atlassian Summit 2010

Herb Sutter http://www.gotw.ca/publications/concurrency-ddj.htm

25

Page 26: Monster Builds and How to Tame Them - Atlassian Summit 2010

26

Page 27: Monster Builds and How to Tame Them - Atlassian Summit 2010

27

Page 28: Monster Builds and How to Tame Them - Atlassian Summit 2010

Parallelism

28

Page 29: Monster Builds and How to Tame Them - Atlassian Summit 2010

Parallelism

TestingCheckout,Compile

time

agent

29

Page 30: Monster Builds and How to Tame Them - Atlassian Summit 2010

ParallelismTesting

time

agent

agentagentagentagentagentagentagentagent

agentagent

Checkout,Compile

30

Page 31: Monster Builds and How to Tame Them - Atlassian Summit 2010

The Embarrassingly Parallel Problem

vs.The Elastic Batches

of Bamboo!31

Page 32: Monster Builds and How to Tame Them - Atlassian Summit 2010

Inelegant Yet Working1532

Page 33: Monster Builds and How to Tame Them - Atlassian Summit 2010

• parametrize your test suite:

• number of batches

• current batch number

• make the suite only run subset of tests in the requested batch

Inelegant Yet Working

33

Page 34: Monster Builds and How to Tame Them - Atlassian Summit 2010

Inelegant Yet Working

34

Page 35: Monster Builds and How to Tame Them - Atlassian Summit 2010

Inelegant Yet Working

35

Page 36: Monster Builds and How to Tame Them - Atlassian Summit 2010

Need MoreComputers!

36

Page 37: Monster Builds and How to Tame Them - Atlassian Summit 2010

37

Page 38: Monster Builds and How to Tame Them - Atlassian Summit 2010

38

Page 39: Monster Builds and How to Tame Them - Atlassian Summit 2010

Reliability39

Page 40: Monster Builds and How to Tame Them - Atlassian Summit 2010

JIRA

maven 1proxy

maven 2repo

svn

nfs

release buildagent

internet

test dbjava

blogs

bamboo

license server

40

Page 41: Monster Builds and How to Tame Them - Atlassian Summit 2010

internet

test dbjava

blogs

bamboo

license server

41

Page 42: Monster Builds and How to Tame Them - Atlassian Summit 2010

$False Negatives

42

Page 43: Monster Builds and How to Tame Them - Atlassian Summit 2010

43

Page 44: Monster Builds and How to Tame Them - Atlassian Summit 2010

canary death

44

Page 45: Monster Builds and How to Tame Them - Atlassian Summit 2010

45

Page 46: Monster Builds and How to Tame Them - Atlassian Summit 2010

46

Page 47: Monster Builds and How to Tame Them - Atlassian Summit 2010

47

Page 48: Monster Builds and How to Tame Them - Atlassian Summit 2010

Maven vs. Bash

48

Page 49: Monster Builds and How to Tame Them - Atlassian Summit 2010

My technology is better

This ENDS NOW

49

Page 50: Monster Builds and How to Tame Them - Atlassian Summit 2010

• measure, optimize, measure

• use power to wait ratio

• elastic parallelization

• canary builds measure reliability

• careful tool evaluation

Monster Counter-tactics

50

Page 51: Monster Builds and How to Tame Them - Atlassian Summit 2010

Eternal Vigilance

51