Demystifying CI/CD

A presentation at JavaScript & Friends 2020 in August 2020 in by Jeremy Meiss

Slide 1

Slide 1

Demystifying CI/CD 1 / 33

Slide 2

Slide 2

TickTock 2 / 33

Slide 3

Slide 3

Head of DevRel 3 / 33

Slide 4

Slide 4

“DevOps” 4 / 33

Slide 5

Slide 5

DevOps Lifecycle 5 / 33

Slide 6

Slide 6

Plan DevOps Lifecycle 5 / 33

Slide 7

Slide 7

Plan Code DevOps Lifecycle 5 / 33

Slide 8

Slide 8

Plan Code DevOps Lifecycle Build 5 / 33

Slide 9

Slide 9

Plan Code DevOps Lifecycle Build Test 5 / 33

Slide 10

Slide 10

Plan Code DevOps Lifecycle Build Test Releases 5 / 33

Slide 11

Slide 11

Plan Code DevOps Lifecycle Build Test Releases Deploy 5 / 33

Slide 12

Slide 12

Plan Code DevOps Lifecycle Build Test Releases Deploy Operate 5 / 33

Slide 13

Slide 13

Plan Code DevOps Lifecycle Build Test Releases Deploy Operate Monitor 5 / 33

Slide 14

Slide 14

Continuous {Integration|Delivery} 6 / 33

Slide 15

Slide 15

“CI” 7 / 33

Slide 16

Slide 16

Merge code changes often “CI” 7 / 33

Slide 17

Slide 17

Merge code changes often “CI” Run automated tests to validate builds 7 / 33

Slide 18

Slide 18

Merge code changes often “CI” Run automated tests to validate builds Only integrate tested code into code base 7 / 33

Slide 19

Slide 19

Merge code changes often “CI” Run automated tests to validate builds Only integrate tested code into code base Changes frequently merged into release branches 7 / 33

Slide 20

Slide 20

“CD” 8 / 33

Slide 21

Slide 21

Faster release cycles “CD” 8 / 33

Slide 22

Slide 22

Faster release cycles “CD” Low-risk releases 8 / 33

Slide 23

Slide 23

Faster release cycles “CD” Low-risk releases Higher quality 8 / 33

Slide 24

Slide 24

Faster release cycles “CD” Low-risk releases Higher quality Lower costs 8 / 33

Slide 25

Slide 25

So now can I CI/CD? 9 / 33

Slide 26

Slide 26

CI or CD? 10 / 33

Slide 27

Slide 27

Code creation 11 / 33

Slide 28

Slide 28

Code orchestration 12 / 33

Slide 29

Slide 29

Code logistics 13 / 33

Slide 30

Slide 30

Benefits of CI 14 / 33

Slide 31

Slide 31

Benefits of CI Improve team productivity and efficiency 14 / 33

Slide 32

Slide 32

Benefits of CI Improve team productivity and efficiency Accelerate speed to market 14 / 33

Slide 33

Slide 33

Benefits of CI Improve team productivity and efficiency Accelerate speed to market Identify product/market fit 14 / 33

Slide 34

Slide 34

Benefits of CI Improve team productivity and efficiency Accelerate speed to market Identify product/market fit Release higher quality, more stable products 14 / 33

Slide 35

Slide 35

Benefits of CI Improve team productivity and efficiency Accelerate speed to market Identify product/market fit Release higher quality, more stable products Increase customer satisfaction 14 / 33

Slide 36

Slide 36

Benefits of CI Improve team productivity and efficiency Accelerate speed to market Identify product/market fit Release higher quality, more stable products Increase customer satisfaction Keep developers happy and shipping code 14 / 33

Slide 37

Slide 37

Say WHAT about benefits? 15 / 33

Slide 38

Slide 38

I feel the need…. the need for SPEED! 16 / 33

Slide 39

Slide 39

I feel the need…. the need for SPEED! 1. Customers get access to new features faster 16 / 33

Slide 40

Slide 40

I feel the need…. the need for SPEED! 1. Customers get access to new features faster 2. Company gets a faster ROI from new features 16 / 33

Slide 41

Slide 41

So now we CI? 17 / 33

Slide 42

Slide 42

Make sure everyone is on the same page 18 / 33

Slide 43

Slide 43

Always start small 19 / 33

Slide 44

Slide 44

Do what works for you 20 / 33

Slide 45

Slide 45

Always measure 21 / 33

Slide 46

Slide 46

Do not try to automate everything 22 / 33

Slide 47

Slide 47

Proof of concept 23 / 33

Slide 48

Slide 48

A rigorous testing practice Proof of concept 23 / 33

Slide 49

Slide 49

A rigorous testing practice Proof of concept Consistent software environments 23 / 33

Slide 50

Slide 50

A rigorous testing practice Proof of concept Consistent software environments Training on continuous integration practices. 23 / 33

Slide 51

Slide 51

A rigorous testing practice Proof of concept Consistent software environments Training on continuous integration practices. Reports to measure key metrics. 23 / 33

Slide 52

Slide 52

CI/CD Better Practices 24 / 33

Slide 53

Slide 53

CI/CD Better Practices Make testing an integral part of the development process. 24 / 33

Slide 54

Slide 54

CI/CD Better Practices Make testing an integral part of the development process. Ensure that the testing environment mirrors production. 24 / 33

Slide 55

Slide 55

CI/CD Better Practices Make testing an integral part of the development process. Ensure that the testing environment mirrors production. Use coding better practices, such as pair programming. 24 / 33

Slide 56

Slide 56

CI/CD Better Practices Make testing an integral part of the development process. Ensure that the testing environment mirrors production. Use coding better practices, such as pair programming. Automate the deploy workflow. 24 / 33

Slide 57

Slide 57

Key CI/CD Metrics 25 / 33

Slide 58

Slide 58

Key CI/CD Metrics Lead time 25 / 33

Slide 59

Slide 59

Key CI/CD Metrics Lead time Deployment frequency 25 / 33

Slide 60

Slide 60

Key CI/CD Metrics Lead time Deployment frequency Mean time to recovery (MTTR) 25 / 33

Slide 61

Slide 61

Key CI/CD Metrics Lead time Deployment frequency Mean time to recovery (MTTR) Change fail percentage 25 / 33

Slide 62

Slide 62

Regular cadence 26 / 33

Slide 63

Slide 63

TESTING 27 / 33

Slide 64

Slide 64

Continuous Testing 28 / 33

Slide 65

Slide 65

Unit/component tests 29 / 33

Slide 66

Slide 66

Integration tests 30 / 33

Slide 67

Slide 67

UI layer testing 31 / 33

Slide 68

Slide 68

“DevOps for Dummies” - Emily Freeman “Accelerate” by Forsgren, Humble, & Kim Resources “The DevOps Handbook” by Kim, Debois, Willis, Humble, & Allspaw “Continuous Delivery” - Martin Fowler “Continuous Delivery vs Continuous Deployment” - Jez Humble 32 / 33

Slide 69

Slide 69

Thank You Jeremy Meiss  @IAmJerdog  @jerdog  @jeremymeiss 33 / 33