89
VINCENT KOK DEVELOPMENT MANAGER ATLASSIAN @VINCENTKOK Releasing the Monolith On a Daily Basis

Releasing the monolith on a daily basis - CodeMash

Embed Size (px)

Citation preview

Page 1: Releasing the monolith on a daily basis - CodeMash

VINCENT KOK • DEVELOPMENT MANAGER • ATLASSIAN • @VINCENTKOK

Releasing the Monolith On a Daily Basis

Page 2: Releasing the monolith on a daily basis - CodeMash

@vincentkok

Page 3: Releasing the monolith on a daily basis - CodeMash
Page 4: Releasing the monolith on a daily basis - CodeMash
Page 5: Releasing the monolith on a daily basis - CodeMash

http://geekandpoke.typepad.com/geekandpoke/2011/08/hudson-status-monitor.html

Page 6: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Cool stories

Page 7: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Got issues?

https://flic.kr/p/fSopv4

Page 8: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Journey

https://flic.kr/p/8WQutt

Page 9: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Monolith

https://flic.kr/p/nA4S49

Page 10: Releasing the monolith on a daily basis - CodeMash

C O N F L U E N C E P I P E L I N E

M I C R O S E RV I C E E N V Y

4 P R O B L E M S

Agenda

C U LT U R E

Page 11: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Confluence Pipeline

https://flic.kr/p/jus4Bt

Page 12: Releasing the monolith on a daily basis - CodeMash

Nr of builds last week

15000

Page 13: Releasing the monolith on a daily basis - CodeMash

Nr of jobs last week

81000

Page 14: Releasing the monolith on a daily basis - CodeMash

Nr of tests

31992

Page 15: Releasing the monolith on a daily basis - CodeMash

Nr of build agents

1000

Page 16: Releasing the monolith on a daily basis - CodeMash

Flakes

NaN

Page 17: Releasing the monolith on a daily basis - CodeMash

Size of Pipeline team

3

Page 18: Releasing the monolith on a daily basis - CodeMash

A typical pipeline

ReleaseInner Outer

Publish Deploy

Page 19: Releasing the monolith on a daily basis - CodeMash

The Confluence pipeline

ReleaseInner Outer

Publish Deploy

Page 20: Releasing the monolith on a daily basis - CodeMash

The Confluence pipeline

ReleaseInner Outer

Publish Deploy

Staging deploy

Page 21: Releasing the monolith on a daily basis - CodeMash

The Confluence pipeline

ReleaseInner Outer

Publish Deploy

Staging deploy

Manual release branch

Page 22: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Culture

https://flic.kr/p/DsetEn

Page 23: Releasing the monolith on a daily basis - CodeMash
Page 24: Releasing the monolith on a daily basis - CodeMash

GreenDex

Page 25: Releasing the monolith on a daily basis - CodeMash

GreenDex

Page 26: Releasing the monolith on a daily basis - CodeMash

The Oz Principle

Page 27: Releasing the monolith on a daily basis - CodeMash

Experience

The Oz Principle

The way you’ve been shaped

Page 28: Releasing the monolith on a daily basis - CodeMash

BeliefsExperience

The Oz Principle

The way you’ve been shaped

Beliefs are based on your experience

Page 29: Releasing the monolith on a daily basis - CodeMash

BeliefsExperience Actions

The Oz Principle

The way you’ve been shaped

Beliefs are based on your experience

You take actions based on your beliefs

Page 30: Releasing the monolith on a daily basis - CodeMash

ResultsBeliefsExperience Actions

The Oz Principle

The way you’ve been shaped

Beliefs are based on your experience

You take actions based on your beliefs

The outcome of our actions

Page 31: Releasing the monolith on a daily basis - CodeMash

Clear goal Early results Momentum

Theory in real life

Page 32: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Microservice Envy

https://flic.kr/p/b7ak8e

Page 33: Releasing the monolith on a daily basis - CodeMash

Smaller Clear ownership Independent Lifecycle

Microservice traits

Page 34: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Monolith

https://flic.kr/p/nA4S49

Page 35: Releasing the monolith on a daily basis - CodeMash

< 1 hour

Page 36: Releasing the monolith on a daily basis - CodeMash

< 1 day

Page 37: Releasing the monolith on a daily basis - CodeMash

Release cadence Test automation

Ownership Complexity

Page 38: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

#1: Complexity

https://flic.kr/p/cFM3cd

Page 39: Releasing the monolith on a daily basis - CodeMash

The real version

ReleaseInner Outer

Publish Deploy

Staging deploy

Manual release branch

Page 40: Releasing the monolith on a daily basis - CodeMash

Manual tasks Hard to understand

Inconsistent feedback

Impact

Page 41: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Fix the model

https://flic.kr/p/8ykpkW

Page 42: Releasing the monolith on a daily basis - CodeMash

Fork / Join

Release

Publish Deploy

Inner Outer

Fork

Join

Page 43: Releasing the monolith on a daily basis - CodeMash

Fork/Join details

Page 44: Releasing the monolith on a daily basis - CodeMash

Inner loop Build times Build stability

Iterate

Page 45: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

#2: Ownership

https://flic.kr/p/bfRuoX

Page 46: Releasing the monolith on a daily basis - CodeMash

Getting the model wrong

Page 47: Releasing the monolith on a daily basis - CodeMash

Fire fighting Broken windows No improvements

Impact

Page 48: Releasing the monolith on a daily basis - CodeMash

Dev Speed Feedback loop MTTR

Impact

Page 49: Releasing the monolith on a daily basis - CodeMash

Ownership

Development Teams Site Reliability Engineering

Page 50: Releasing the monolith on a daily basis - CodeMash

Ownership

Development Teams

Sustainable environment

Site Reliability Engineering

Pipeline team - BuildOps

Page 51: Releasing the monolith on a daily basis - CodeMash

Where does your team sit?

Busywork

Improving team life

Improving team life

Page 52: Releasing the monolith on a daily basis - CodeMash

Enforce, don’t fix

Page 53: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Sustainable System

https://flic.kr/p/awVLLs

Page 54: Releasing the monolith on a daily basis - CodeMash

Early result

Move the needle

Measure everything

VisibilityCreate awareness in the wider team

Gather data to allow data driven decisions and prioritisation

Focus on quick wins to move the needle

Page 55: Releasing the monolith on a daily basis - CodeMash
Page 56: Releasing the monolith on a daily basis - CodeMash
Page 57: Releasing the monolith on a daily basis - CodeMash
Page 58: Releasing the monolith on a daily basis - CodeMash

Define rules Shared OwnershipEnforce by automation

Iterate

Page 59: Releasing the monolith on a daily basis - CodeMash

Shared ownership

Page 60: Releasing the monolith on a daily basis - CodeMash

Shared ownership

First responder

First responder

First responder

Page 61: Releasing the monolith on a daily basis - CodeMash
Page 62: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

#3: Testing

https://flic.kr/p/cBbxuQ

Page 63: Releasing the monolith on a daily basis - CodeMash

Unit

Service

UI

Page 64: Releasing the monolith on a daily basis - CodeMash

Unit

Service

UI

Page 65: Releasing the monolith on a daily basis - CodeMash

Slowness Duplication Flakes

Impact

Page 66: Releasing the monolith on a daily basis - CodeMash

The impact of flakes

Broken windows

Culture

Build timesDue to restarts build times get out of control really quickly

Builds will go red people will start to ignore this; Culture of green out of the window

It starts with one, many will follow soon

Page 67: Releasing the monolith on a daily basis - CodeMash

Retries as a pain killerAutomatic retries to relieve some pain. Remember this is a workaround

Early result

Page 68: Releasing the monolith on a daily basis - CodeMash
Page 69: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Fix the root cause

https://flic.kr/p/J44Nm

Page 70: Releasing the monolith on a daily basis - CodeMash

Iterate

Test strategy Flake policy

Page 71: Releasing the monolith on a daily basis - CodeMash
Page 72: Releasing the monolith on a daily basis - CodeMash

Fix or RemoveIssueDetect Ignore

Flake policy

Page 73: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Deleting tests, seriously?

https://flic.kr/p/8BYXV4

Page 74: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

#4: Releases

https://flic.kr/p/91MFkh

Page 75: Releasing the monolith on a daily basis - CodeMash

Release cycle

Page 76: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Congestion

https://flic.kr/p/bRgBZP

Page 77: Releasing the monolith on a daily basis - CodeMash

Dogfooding becomes hard

Big bangEnds at master Cancellations

Impact

Page 78: Releasing the monolith on a daily basis - CodeMash

For once a free lunchFork and Join solved most of our problems already

Early result

Page 79: Releasing the monolith on a daily basis - CodeMash

Iterate

Reduce build times Fix dogfooding

Page 80: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Dogfooding

https://flic.kr/p/dxpLTm

Page 81: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Feedback

https://flic.kr/p/dxaAdk

Page 82: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Soak time

https://flic.kr/p/fmfG2q

Page 83: Releasing the monolith on a daily basis - CodeMash

Decouple code and features

Merge often One process

Feature flags

Page 84: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

How far in are we?

https://flic.kr/p/8WQutt

Page 85: Releasing the monolith on a daily basis - CodeMash

Release cadence Test automation

Ownership Complexity

Page 86: Releasing the monolith on a daily basis - CodeMash

Clear goal Early results Momentum

Changing beliefs

Page 87: Releasing the monolith on a daily basis - CodeMash

• Big cool statistic

• 2,569

• Add-Ons in Marketplace

Sustainable System

https://flic.kr/p/awVLLs

Page 88: Releasing the monolith on a daily basis - CodeMash

http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef015392a77686970b-pi

Page 89: Releasing the monolith on a daily basis - CodeMash

Thank you!

VINCENT KOK • DEVELOPMENT MANAGER • ATLASSIAN • @VINCENTKOK