Slide 1

Slide 1 text

1995

Slide 2

Slide 2 text

1995

Slide 3

Slide 3 text

1995

Slide 4

Slide 4 text

1995

Slide 5

Slide 5 text

1995

Slide 6

Slide 6 text

!

Slide 7

Slide 7 text

NOVEMBER FIFTEEN, NINETEEN NINETY-FIVE

Slide 8

Slide 8 text

SIXTEEN => SOXTEEN

Slide 9

Slide 9 text

SIXTEEN => SOXTEEN

Slide 10

Slide 10 text

TWO THOUSAND SOXTEEN

Slide 11

Slide 11 text

▸ No source code (written in an older language) ▸ Runs in a green screen terminal, ▸ Has to be emulated.

Slide 12

Slide 12 text

FIGHTING CONTINUOUS ENTROPY ADVENTURES IN CONTINUOUS DELIVERY @GARYFLEMING

Slide 13

Slide 13 text

WHAT IS ENTROPY? "a thermodynamic quantity representing the unavailability of a system's thermal energy for conversion into mechanical work, often interpreted as the degree of disorder or randomness in [a closed] system."

Slide 14

Slide 14 text

WHAT IS ENTROPY? "Disorder of a closed system"

Slide 15

Slide 15 text

SYSTEM EXPERIMENT: FISHES

Slide 16

Slide 16 text

SYSTEM EXPERIMENT: FISHES AND TIME ▸ 10 minutes? ▸ 10 hours? ▸ 10 days? ▸ 10000 years?

Slide 17

Slide 17 text

ENTROPY IN SOFTWARE

Slide 18

Slide 18 text

!

Slide 19

Slide 19 text

MULTI-FACETED

Slide 20

Slide 20 text

Problem KNOWING WHETHER YOUR SOFTWARE IS DEPLOYABLE

Slide 21

Slide 21 text

BRIEF INTRO TO CI/CD

Slide 22

Slide 22 text

CONTINUOUS INTEGRATION All developers/testers merge their code to a shared mainline at least once a day.

Slide 23

Slide 23 text

CONTINUOUS INTEGRATION Related: ▸ Trunk-Based Development ▸ Feature Toggles

Slide 24

Slide 24 text

IF IT HURTS, DO IT MORE OFTEN.

Slide 25

Slide 25 text

CONTINUOUS DEPLOYMENT All changes go to production; safely, quickly, and sustainably.

Slide 26

Slide 26 text

CONTINUOUS DEPLOYMENT Related: Blue-Green releases.

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Problem DEPENDENCY UPDATES

Slide 29

Slide 29 text

IF IT HURTS, DO IT MORE OFTEN.

Slide 30

Slide 30 text

IDEA UPDATE DEPENDENCIES DAILY

Slide 31

Slide 31 text

CONTINUOUS REGENERATION

Slide 32

Slide 32 text

CONTINUOUS REJUVENATION

Slide 33

Slide 33 text

EXPERIMENT: DEPENDENCY UPDATE DAILY ▸ Update ▸ Build and test ▸ Commit/Revert ▸ Commit causes CD to happen

Slide 34

Slide 34 text

OUTCOME: DEPENDENCY UPDATE DAILY Mostly success! ▸ Some Major Version upgrades would need intervention, ▸ Temporary exclusions are important, ▸ Found unexpected end-to-end issues!

Slide 35

Slide 35 text

DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Single versioned: Maven, Gradle, packages.config e.g 5.4.1 3.0-ALPHA 1.3.2

Slide 36

Slide 36 text

DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Ranges and Lock files: gem/bundler, most JS frameworks. >=5.4.1 3.* [3.7.1)

Slide 37

Slide 37 text

DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Possibly open: pip, some JS frameworks, gem some-dep a-different-dep

Slide 38

Slide 38 text

ALWAYS USE A LOCK FILE! Avoid "It works on my machine"

Slide 39

Slide 39 text

RECENT DEVELOPMENTS ▸ Dependabot ▸ Atomist

Slide 40

Slide 40 text

GOOD TESTS ARE ESSENTIAL!

Slide 41

Slide 41 text

Problem RUNTIME ROT

Slide 42

Slide 42 text

ROT WILL SET IN ▸ JVM ▸ .NET ▸ NPM version

Slide 43

Slide 43 text

THE CONTINUOUS NOW

Slide 44

Slide 44 text

INTERMEDIARY TOOLING ▸ Java -> Jabba ▸ Ruby -> RVM ▸ Node -> NVM ▸ Python -> Virtualenv (to some degree)

Slide 45

Slide 45 text

Problem STANDING SERVERS

Slide 46

Slide 46 text

Problem STANDING SERVERS

Slide 47

Slide 47 text

AVOID SNOWFLAKE SERVERS ▸ Hard to Reproduce ▸ Hard to Modify ▸ Require manual processes, auditing, and docs.

Slide 48

Slide 48 text

IF IT HURTS, DO IT MORE OFTEN.

Slide 49

Slide 49 text

INFRASTRUCTURE AS CODE ▸ Chef/Puppet/Ansible ▸ Terraform ▸ Containerisation ▸ Various cloud toolkits

Slide 50

Slide 50 text

ENGINEERING PRACTICE ▸ Daily Deletion ▸ Chaos Engineering ▸ Dev Laptop Wipes

Slide 51

Slide 51 text

CAUTION: TAKE THE UPDATES

Slide 52

Slide 52 text

Problem LANGUISHING LANGUAGES

Slide 53

Slide 53 text

Problem LANGUISHING LANGUAGES

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

AVOIDING OBSOLESCENCE ▸ Move to new versions, ▸ Cautiously embrace new languages, ▸ Design language agnostic APIs

Slide 56

Slide 56 text

DESTROY YOUR MICROSERVICES

Slide 57

Slide 57 text

Problem PEOPLE COME AND GO.

Slide 58

Slide 58 text

Problem PEOPLE COME AND GO.

Slide 59

Slide 59 text

IF IT HURTS, DO IT MORE OFTEN.

Slide 60

Slide 60 text

People Prepping RETROS

Slide 61

Slide 61 text

People Prepping DOMAIN KNOWLEDGE ▸ User Story Maps ▸ Example mapping

Slide 62

Slide 62 text

People Prepping STAFF LIQUIDITY MATRICES

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

People Prepping BIGGER CHANGES

Slide 65

Slide 65 text

EVERYTHING IS ROTTING...

Slide 66

Slide 66 text

...YOU CAN GET BETTER

Slide 67

Slide 67 text

THANK YOU @GARYFLEMING #TALK-CONTINUOUSENTROP -> SELFCONF.SLACK.COM