extreme continuous delivery - xp days...scaling infrastructure scaling development careful &...

69
Extreme Continuous Delivery at Unruly Alex Wilson - @pr0bablyfine Benji Weber - @benjiweber

Upload: others

Post on 22-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Extreme Continuous Deliveryat Unruly

Alex Wilson - @pr0bablyfineBenji Weber - @benjiweber

Page 2: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

http://unruly.co/

Marketing Technology

12-120 in under 2 years

3-30 tech team

Page 3: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Talk StructureHow we work

Why it works

Scaling Infrastructure

Scaling Development

Page 4: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Careful & Considered Approach

Page 5: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

How we work…

Page 6: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations
Page 7: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Feedback Loops

Pairing

TDD

Customer

Deploy

Page 8: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Iterations & Release Planning

"Plan releases once a quarter. Plan iterations more frequently"

(XP Explained)

We do none of these things

Page 9: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Goal

Deliver value as quickly as possible

Minimise time from conception to value

Page 10: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations
Page 11: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Value Stream

(Continuous

Delivery, Jez Humble & David Farley)

Page 12: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Accelerated Value Stream

Page 13: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Normal Value Stream

Page 14: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Definition of Done

When tests pass

When integrated

When deployable build

When deployed

When measurably delivering value

Page 15: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Deploy Pipeline

(Continuous

Delivery, Jez Humble & David Farley)

Page 16: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Waterfall in a Tube

Page 17: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Gate Metaphor

Page 18: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Automate all the Things

Acceptance

Integration

Component/Unit

Performance

Page 19: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Move Checks Post-Deploy

Live with broken

Monitoring

What's Broken & Why?

Fix rapidly

NagDD

Constantly running tests against production

Page 20: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

TDD-Deployment

Page 21: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Synchronous

Deploy & Feedback

Inform next change

Motivation to keep deploy fast

Page 22: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Who does CI?

Page 23: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

No CI Server

Page 24: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

No Branching

No long lived feature branches

No pushed branches

Real CI

Integrate with users and data

Page 25: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Continuous Isolation

Page 26: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Promotion

Business Dev decides when to deploy

Feature Toggles

Page 27: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

UAT in Production

Global Org

Production-like

Performance feedback early

Canary deploys

Page 28: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Accessible Customer

Essential

Harder across multiple time-zones

Page 29: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Continuous Delivery Deployment

Every build is capable of being deployed

Every push is deployed

Even after beer o'clock

Page 30: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations
Page 31: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Roll Back Forward

"Forward Roll" by Astrid Photography.

Page 32: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

People & Culture

Page 33: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Siloing is Bad

Page 34: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Split by Project Product

Page 35: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Generalists over Specialists

Specialists help generalists do better

Page 36: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Product Team

Didn't work - became a bottleneck

Replaced with Product Strands

Page 37: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Collective Ownership

Code

Tests

Requirements

Ops

Support

Page 38: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Devs on Call

Freedom and responsibility

Page 39: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Pair Programming

Real-time code review

Page 40: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Self-Improvement

Retrospectives

20% Time

Dev Tasks

Page 41: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Questionsso far?

Page 42: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

InfrastructureChallenges

Page 43: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

1-100 Servers

Page 44: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Infrastructure as Code

TDD

Pairing

Tight feedback loop

Page 45: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Making Snowflakes Disposable

More frequent machine death during growth

Page 46: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Continuous Disposal

Caught out by assuming servers were rebuildable - they weren't

Page 47: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

First Day

Any project's first step - deploy "Hello World"

Deploy something, iteratively improve

Page 48: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

TDD (sort of)

Unit-testing less useful

Acceptance testing much more informative

Page 49: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Acceptance Testing@test "apache should redirect to https" {

run curl http://analytics.unrulymedia.com/

[ "$status" -eq 0 ]

echo "$output" \

| grep -q '< Location: https://analyti…

}

Page 50: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Module Testing@RunWith(ServerSpec.class)

public class AnalyticsWeb {{

describe(service("httpd"), it -> {

it.should(be.enabled);

it.should(be.running);

});

describe(port(80), it -> {

it.should(be.listening);

});

describe(port(443), it -> {

it.should(be.listening);

});

}}

Page 51: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Shared Infrastructure

Assumed care; Ensured suffering

Cross-team collaboration

Page 52: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Reduce Variance, Increase Mean

Homogenous systems are easier to reason about.

MTBF becomes less important than MTTR

Page 53: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Phoenix Workstations

Cronned Code Deletion

Page 54: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Dev ScalingChallenges

Page 56: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Conway's Law

"organizations which design systems ... are constrained to produce designs which are copies of

the communication structures of these organizations"

Take advantage

Page 57: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Split on Demand

You know least when you start

Page 58: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Monolith vs MicroServices

Deploy speed vs Dependency Hell

Page 59: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Single Repo vs Versioning

Page 62: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Continuous Investment

Deploy Speed & Reliability

Page 63: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

@QuarantineRule

0.1% failure rate is annoying with 100 tests

0.1% failure rate is impossible with 10,000 tests

Page 64: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Collective Ownership vs

Freedom

Page 65: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Continuous DeploymentSynchronous Deploy

No CI ServerCronned Code Deletion

Unusual things

Page 66: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Short pipelineFast feedback

Early value

Key Points

Page 67: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations
Page 68: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Thanks forListening

Page 69: Extreme Continuous Delivery - XP Days...Scaling Infrastructure Scaling Development Careful & Considered Approach How we work… Feedback Loops Pairing TDD Customer Deploy Iterations

Heckle us on Twitter @pr0bablyfine @benjiweber

Any Questions?We're hiring –

[email protected]