Cloud Chaos and Microservices Mayhem

A presentation at jLove in December 2020 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 2020: @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 5

Slide 5

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

Slide 6

Slide 6

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

Slide 7

Slide 7

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

Slide 8

Slide 8

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

Slide 9

Slide 9

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

Slide 10

Slide 10

things you need to do well in 2020: @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

@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

Or useful. @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 18

Slide 18

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

Slide 19

Slide 19

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

Slide 20

Slide 20

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 21

Slide 21

Photo by daveynin, flickr

Slide 22

Slide 22

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

Slide 23

Slide 23

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 24

Slide 24

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

Slide 25

Slide 25

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

Slide 26

Slide 26

packaging (and fat jars) @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 27

Slide 27

performance requirements @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 28

Slide 28

memory footprint is money startup time is money @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 29

Slide 29

ahead of time compilation is (actually) a good idea @holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 30

Slide 30

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

Slide 31

Slide 31

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

Slide 32

Slide 32

@holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 33

Slide 33

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

Slide 34

Slide 34

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

Slide 35

Slide 35

“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 36

Slide 36

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

Slide 37

Slide 37

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

Slide 38

Slide 38

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

Slide 39

Slide 39

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

Slide 40

Slide 40

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

Slide 41

Slide 41

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

Slide 42

Slide 42

distributed monolith @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

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

Slide 45

Slide 45

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

Slide 46

Slide 46

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

Slide 47

Slide 47

Courtesy NASA/ JPL-Caltech © 2019 IBM Corporation

Slide 48

Slide 48

IBM Cloud © 2020 IBM Corporation

Slide 49

Slide 49

IBM Cloud © 2020 IBM Corporation

Slide 50

Slide 50

Slide 51

Slide 51

metric units

Slide 52

Slide 52

metric units imperial units

Slide 53

Slide 53

metric units imperial units distributing did not help

Slide 54

Slide 54

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

Slide 55

Slide 55

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 56

Slide 56

“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 57

Slide 57

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

Slide 58

Slide 58

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

Slide 59

Slide 59

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

Slide 60

Slide 60

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 61

Slide 61

IBM Cloud © 2020 IBM Corporation

Slide 62

Slide 62

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 63

Slide 63

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 64

Slide 64

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 65

Slide 65

the test pyramid IBM Cloud © 2020 IBM Corporation

Slide 66

Slide 66

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

Slide 67

Slide 67

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

Slide 68

Slide 68

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

Slide 69

Slide 69

@holly_cummins #IBMGarage + IBM Cloud © 2020 IBM Corporation

Slide 70

Slide 70

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

Slide 71

Slide 71

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

Slide 72

Slide 72

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

Slide 73

Slide 73

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

Slide 74

Slide 74

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

Slide 75

Slide 75

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

Slide 76

Slide 76

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