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