Slide 1

Slide 1 text

Improving Deployment @ Elmar Stop thinking, go faster!

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Case study Elmar.nl

Slide 4

Slide 4 text

Our deployment procedure is complex and full of manual steps

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Wait, didn't we have automatic failover?

Slide 7

Slide 7 text

Don't run puppet??? Wait, didn't we have automatic failover?

Slide 8

Slide 8 text

It's like controlling an airplane

Slide 9

Slide 9 text

If we press the wrong button...

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

What if we don't need to think about failover?

Slide 12

Slide 12 text

What if we don't need to think about old cache?

Slide 13

Slide 13 text

What if we don't need to think before running puppet?

Slide 14

Slide 14 text

What if we don't need to think?

Slide 15

Slide 15 text

What if we don't need to think!

Slide 16

Slide 16 text

What are we afraid of?

Slide 17

Slide 17 text

Go faster!

Slide 18

Slide 18 text

Going faster increases the frequency, but massively decreases the magnitude of risk

Slide 19

Slide 19 text

Being able to go fast implies being able to recover fast from failures

Slide 20

Slide 20 text

Automate everything!

Slide 21

Slide 21 text

Not having to think decreases the frequency of making mistakes

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Allow for simple rollback ● Blue-Green deployment ● Canary releasing

Slide 24

Slide 24 text

The sheer thought of having a rollback procedure will give you peace of mind

Slide 25

Slide 25 text

Elmar's deployment procedure v2 1. Run puppet on load balancers to install the new static resources 2. Run puppet on app server 1 to install the new web app 3. Check if it worked (optionally) 4. Run puppet on app server 2 to install the new web app

Slide 26

Slide 26 text

Solution 1. Allow us to have a controlled amount of versions of static resources deployed in production 2. Each app points to a specific version of the static resources 3. While we're installing a new version, the old one still works

Slide 27

Slide 27 text

We're targeting Debian environments, so we benefit from the Debian package system

Slide 28

Slide 28 text

To implement our solution, we've used metapackages just like the ones for the kernel

Slide 29

Slide 29 text

A metapackage does not contain software, they just depend on other packages to be installed

Slide 30

Slide 30 text

Limit the amount of versions installed

Slide 31

Slide 31 text

Using metapackages...

Slide 32

Slide 32 text

...which replace each other

Slide 33

Slide 33 text

Package clean up occurs when a conflicting version is installed

Slide 34

Slide 34 text

Zero downtime

Slide 35

Slide 35 text

Linux virtual server

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

Demo