Cloud Chaos and Microservices Mayhem

A presentation at JFokus 2021 in February 2021 in by Holly Cummins

Slide 1

Slide 1

cloud chaos and microservices mayhem Holly Cummins IBM Garage @holly_cummins

Slide 2

Slide 2

Slide 3

Slide 3

Slide 4

Slide 4

things you need to do well in 2021: @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 5

Slide 5

things you need to do well in 2021: @holly_cummins handwashing #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 6

Slide 6

things you need to do well in 2021: @holly_cummins handwashing apps #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 7

Slide 7

things you need to do well in 2021: @holly_cummins handwashing apps ops #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 8

Slide 8

things you need to do well in 2021: @holly_cummins handwashing apps ops devops #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 9

Slide 9

things you need to do well in 2021: @holly_cummins handwashing apps ops devops devsecops #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 10

Slide 10

things you need to do well in 2021: @holly_cummins handwashing apps ops devops devsecops finops #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 11

Slide 11

Slide 12

Slide 12

Slide 13

Slide 13

w e f a @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 14

Slide 14

management @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 15

Slide 15

The cloud makes it so easy to provision hardware. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 16

Slide 16

That doesn’t mean the hardware is free. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 17

Slide 17

That doesn’t mean the hardware is free. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 18

Slide 18

That doesn’t mean the hardware is free. Or useful. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 19

Slide 19

That doesn’t mean the hardware is free. Or useful. Or shuts itself off. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 20

Slide 20

Hey boss, I created a Kubernetes cluster. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 21

Slide 21

Hey boss, I created a Kubernetes cluster. I forgot it for 2 months. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 22

Slide 22

Hey boss, I created a Kubernetes cluster. I forgot it for 2 months. … and it’s €1000 a month. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 23

Slide 23

Photo by daveynin, flickr

Slide 24

Slide 24

2017 survey 25% of 16,000 servers doing no useful work @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 25

Slide 25

2017 survey “perhaps someone forgot to turn them off” 25% of 16,000 servers doing no useful work @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 26

Slide 26

finops figuring out who in your company forgot to turn off their cloud @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 27

Slide 27

releasing @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 28

Slide 28

releasing @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 29

Slide 29

@holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 30

Slide 30

“we’re moving too slowly. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 31

Slide 31

“we’re moving too slowly. we should modernise our COBOL application into microservices. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 32

Slide 32

“we’re moving too slowly. we should modernise our COBOL application into microservices. … but our release board only meets twice a year.” @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 33

Slide 33

modularity @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 34

Slide 34

microservices are not the goal @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 35

Slide 35

microservices are not the goal they are the means @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 36

Slide 36

wishful mimicry @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 37

Slide 37

cloud != microservices @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 38

Slide 38

“every time we touch one microservice, all the others break.” @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 39

Slide 39

distributed monolith @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 40

Slide 40

distributed monolith but without compile-time checking … or guaranteed function execution @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 41

Slide 41

distributed monolith but without compile-time checking … or guaranteed function execution @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 42

Slide 42

distributed monolith but without compile-time checking … or guaranteed function execution @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 43

Slide 43

distributed monolith but without compile-time checking … or guaranteed function execution @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 44

Slide 44

Courtesy NASA/ JPL-Caltech © 2019 IBM Corporation

Slide 45

Slide 45

IBM Cloud © 2020 IBM Corporation

Slide 46

Slide 46

IBM Cloud © 2020 IBM Corporation

Slide 47

Slide 47

Slide 48

Slide 48

metric units

Slide 49

Slide 49

metric units imperial units

Slide 50

Slide 50

metric units imperial units distributing did not help

Slide 51

Slide 51

distributed != decoupled @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 52

Slide 52

reasons not to do microservices small team not planning to release independently don’t want complexity of a service mesh - or worse yet, rolling your own domain model doesn’t split nicely @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 53

Slide 53

“each of our microservices has duplicated the same object model … with twenty classes and seventy fields” @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 54

Slide 54

Domain Microservice @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 55

Slide 55

Domain Microservice @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 56

Slide 56

Domain Microservice (this is bad) @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 57

Slide 57

If you’re going to do microservices, you need to get good at automation. And testing. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 58

Slide 58

IBM Cloud © 2020 IBM Corporation

Slide 59

Slide 59

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 60

Slide 60

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 61

Slide 61

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 62

Slide 62

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 63

Slide 63

the test pyramid (you can TDD at every level!) IBM Cloud © 2020 IBM Corporation

Slide 64

Slide 64

How to test a fire alarm? @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 65

Slide 65

how not to test a fire alarm IBM Cloud © 2020 IBM Corporation

Slide 66

Slide 66

how not to test a fire alarm IBM Cloud © 2020 IBM Corporation

Slide 67

Slide 67

@holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 68

Slide 68

unit testing a fire alarm @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 69

Slide 69

uh … is that enough? @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 70

Slide 70

contract testing a fire alarm @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 71

Slide 71

contract testing a fire alarm @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 72

Slide 72

to the code! @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 73

Slide 73

microservices need consumer-driven contract tests @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 74

Slide 74

thank you @holly_cummins get the code: ibm.biz/holly-jfokus @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation