Slide 1

Slide 1 text

Continuously delivering continuous delivery

Slide 2

Slide 2 text

Hypothesis: The only way to effectively manage high risk platforms is using continuous deployment

Slide 3

Slide 3 text

MY PaaS Basics

Slide 4

Slide 4 text

What is your target unit of currency?

Slide 5

Slide 5 text

An app.

Slide 6

Slide 6 text

What is the relationship you want to have with your environments?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Casual.

Slide 9

Slide 9 text

Where do you want to spend your time?

Slide 10

Slide 10 text

Adding app features that users want.

Slide 11

Slide 11 text

Terminology

Slide 12

Slide 12 text

So - what is a: BOSH?

Slide 13

Slide 13 text

So - what is a: Concourse CI?

Slide 14

Slide 14 text

So - what is a: Cloud Foundry?

Slide 15

Slide 15 text

I don’t care how, just run my app $ cf push myapp

Slide 16

Slide 16 text

$ cf scale -i 100 myapp SH!T, it’s a hit - I need more horsepower

Slide 17

Slide 17 text

$ cf create-service... I need a DB and but don’t want to manage it

Slide 18

Slide 18 text

$ cf create-space... I want orgs and spaces so I can safely share a platform

Slide 19

Slide 19 text

I want to build Pipelines now! … jobs: - name: job-deploy-myapp plan: - {get: resource-myapp, trigger: true} - put: resource-deploy-myapp params: manifest: myapp/manifest.yml path: myapp

Slide 20

Slide 20 text

Awesome! Let’s get us some PaaS

Slide 21

Slide 21 text

Problem 1: Platform work is manual work

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Problem 2: We are a super special snowflake!

Slide 24

Slide 24 text

Problem 3: We are a [risky business]!

Slide 25

Slide 25 text

Problem 3: We are a [risky business]! PaaS == Platform as a Silo

Slide 26

Slide 26 text

Problem 4: We need to scale & update Updates every 4 days; 2 weeks to test each… So, when do I get my new feature?

Slide 27

Slide 27 text

Problem 5: It's expensive!

Slide 28

Slide 28 text

Deploying a PaaS Observations in the field 1. Organisations create their own PaaS 2. Organisations use an existing PaaS but deploy it manually 3. Organisations test a platform once when they go live 4. Organisations have a massive outage & can’t recover in time 5. Organisations need to update multiple times a week 6. Organisations need to scale by X; making 1-5 X times worse!

Slide 29

Slide 29 text

Examples

Slide 30

Slide 30 text

Apps.

Slide 31

Slide 31 text

Global, open-source & multi-cloud

Slide 32

Slide 32 text

Risk == Long feedback loops

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Not an app.

Slide 36

Slide 36 text

Global bank Top 10 dev. houses

Slide 37

Slide 37 text

Zooportraits.com == awesome!

Slide 38

Slide 38 text

Examples Super Mega Awesome

Slide 39

Slide 39 text

Examples Super Mega Awesome Per pair environments

Slide 40

Slide 40 text

Examples Super Mega Awesome Destroyed daily

Slide 41

Slide 41 text

Examples Super Mega Awesome Pre-production continuously deployed

Slide 42

Slide 42 text

Examples Super Mega Awesome Next, production

Slide 43

Slide 43 text

Examples Super Mega Awesome Constant updates from the vendor

Slide 44

Slide 44 text

Examples Super Mega Awesome All config as code

Slide 45

Slide 45 text

Examples Super Mega Awesome Rolling deployment for platform & services

Slide 46

Slide 46 text

Examples Super Mega Awesome Test driven compliance

Slide 47

Slide 47 text

Examples Super Mega Awesome Test driven resilience

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

Continuously Delivering CD Finally, some top tips! 1. We kept a high line & stuck to our guns 2. We did TDD [using BATS] 3. We focused on the What? & Why?, not the How? it worked before 4. We didn’t have “prod” & “staging” named envs 5. We deployed in sociable times 6. We constantly optimised for short feedback loops

Slide 50

Slide 50 text

Thanks @bendodd @armakuniHQ [email protected]