Slide 1

Slide 1 text

Observe the System: Two Sides of the Same Coin Test Masters Series – Testing in Production

Slide 2

Slide 2 text

2 Strategic Software Delivery Consultant @ Xebia DDDer, EventStormer, Tech Enthusiast Food lover, you can find me in a beach reading a book Expat @ The Netherlands @joaoasrosa

Slide 3

Slide 3 text

3 © João Rosa @joaoasrosa

Slide 4

Slide 4 text

4 How did I end up here? @joaoasrosa

Slide 5

Slide 5 text

5 And you? @joaoasrosa

Slide 6

Slide 6 text

6 Photo by Saketh Garuda on Unsplash @joaoasrosa

Slide 7

Slide 7 text

7 Well, we measure… @joaoasrosa

Slide 8

Slide 8 text

8 Photo by Kevin Grieve on Unsplash @joaoasrosa

Slide 9

Slide 9 text

9 Myself, with a confused look: Ok, how do you know the impact of the product with the users? @joaoasrosa

Slide 10

Slide 10 text

@joaoasrosa

Slide 11

Slide 11 text

That awkward silence… @joaoasrosa

Slide 12

Slide 12 text

12 Anti-pattern #1: Technical measurement without the user in mind @joaoasrosa

Slide 13

Slide 13 text

13 We are a DevOps team… @joaoasrosa

Slide 14

Slide 14 text

14 Photo by Olesya Grichina on Unsplash @joaoasrosa

Slide 15

Slide 15 text

15 Anti-pattern #2: Monitoring as single responsibility (aka Monitoring-as-a-Job - credits to Mike Julian) @joaoasrosa

Slide 16

Slide 16 text

16 We monitoring everything… @joaoasrosa

Slide 17

Slide 17 text

17 Photo by Markus Spiske on Unsplash @joaoasrosa

Slide 18

Slide 18 text

18 Myself, trying to get to the bottom of it: What are the benefits of the yellow hammer, in your landscape? @joaoasrosa

Slide 19

Slide 19 text

The yellow hammer is the best! @joaoasrosa

Slide 20

Slide 20 text

The yellow hammer is the best! Or do you think that purple hammer is better because ? @joaoasrosa

Slide 21

Slide 21 text

21 Anti-pattern #3: One tool to rule them all! @joaoasrosa

Slide 22

Slide 22 text

22 "Silos" by warrick1 is licensed under CC BY-ND 2.0 @joaoasrosa

Slide 23

Slide 23 text

23 Photo by Yung Chang on Unsplash @joaoasrosa

Slide 24

Slide 24 text

24 Photo by NeONBRAND on Unsplash @joaoasrosa

Slide 25

Slide 25 text

25 Back to the Observability topic… @joaoasrosa

Slide 26

Slide 26 text

26 Photo by Christoph Schmid on Unsplash @joaoasrosa

Slide 27

Slide 27 text

27 Logging Metrics Tracing @joaoasrosa

Slide 28

Slide 28 text

28 From Site Reliability Engineering Book - https://landing.google.com/sre/sre-book/chapters/part3/ @joaoasrosa

Slide 29

Slide 29 text

29 Not the focus today… @joaoasrosa

Slide 30

Slide 30 text

30 @joaoasrosa And more not listed here!

Slide 31

Slide 31 text

31 But what I use to connect all the dots… @joaoasrosa

Slide 32

Slide 32 text

32 To deliver a reliable and usable product that satisfies the users needs @joaoasrosa

Slide 33

Slide 33 text

33 @joaoasrosa

Slide 34

Slide 34 text

34 @joaoasrosa

Slide 35

Slide 35 text

35 @joaoasrosa

Slide 36

Slide 36 text

36 @joaoasrosa

Slide 37

Slide 37 text

37 @joaoasrosa

Slide 38

Slide 38 text

38 @joaoasrosa Bounded Context - Language boundaries - Specific model for the Problem Space - Isolate concepts (models) - Communicate over Domain Events From more check: http://domainlanguage.com/ddd/reference/

Slide 39

Slide 39 text

39 @joaoasrosa From Using domain analysis to model microservices - https://docs.microsoft.com/en-us/azure/architecture/microservices/model/domain-analysis

Slide 40

Slide 40 text

40 @joaoasrosa

Slide 41

Slide 41 text

41 @joaoasrosa

Slide 42

Slide 42 text

42 @joaoasrosa

Slide 43

Slide 43 text

43 @joaoasrosa

Slide 44

Slide 44 text

44 @joaoasrosa Pattern #1: Measure Events on the borders of the Bounded Context

Slide 45

Slide 45 text

45 @joaoasrosa Pattern #1 implementation examples: Events in a queue Calls to an API endpoint Events generated by a batch process

Slide 46

Slide 46 text

46 @joaoasrosa

Slide 47

Slide 47 text

47 @joaoasrosa

Slide 48

Slide 48 text

48 @joaoasrosa

Slide 49

Slide 49 text

49 @joaoasrosa

Slide 50

Slide 50 text

50 @joaoasrosa Pattern #2: Measure Event Flows concerning the Business Process(es)

Slide 51

Slide 51 text

51 @joaoasrosa Pattern #2 implementation example: Events tracing - Using OpenTracing API - https://opentracing.io/ - Crafted, CorrelationID

Slide 52

Slide 52 text

52 @joaoasrosa

Slide 53

Slide 53 text

53 @joaoasrosa Pattern #3: Measure Events within the Bounded Context

Slide 54

Slide 54 text

54 @joaoasrosa Pattern #3 implementation examples: Structured logging Metrics

Slide 55

Slide 55 text

55 @joaoasrosa Let’s have a quizzzzz!

Slide 56

Slide 56 text

56 @joaoasrosa 1. Buying a ticket for a movie (via an mobile app) 2. The app reserves my seat for 10 minutes 3. I can only pay using iDeal 4. If I don’t pay within the 10 minute window the seats are released for other potential customer Scenario

Slide 57

Slide 57 text

57 @joaoasrosa What if I pay within the 10 minute window (let’s say 9:49) but in the meantime the seat was released (lag time between the payment acknowledgment)? Question

Slide 58

Slide 58 text

58 My suggestion… @joaoasrosa

Slide 59

Slide 59 text

59 @joaoasrosa Pattern #4: Use Pivotal Events to validate the option of implementing a process

Slide 60

Slide 60 text

60 @joaoasrosa Pattern #4 implementation examples: Metrics

Slide 61

Slide 61 text

61 @joaoasrosa Pattern #4 implementation examples: Metrics However, we use it to drive business value

Slide 62

Slide 62 text

62 @joaoasrosa How about visualisations?

Slide 63

Slide 63 text

63 @joaoasrosa How about visualisations? aka, Dashboards

Slide 64

Slide 64 text

64 @joaoasrosa Pattern #5: Start your Dashboards from a Functional perspective Later move to the Technical ones (drill-down), which supports the Functional Dashboards

Slide 65

Slide 65 text

65 @joaoasrosa Pattern #5 implementation examples:

Slide 66

Slide 66 text

66 Photo by Camylla Battani on Unsplash @joaoasrosa