Datadog permet de créer des métriques automatiques à partir d’événements d’observabilité front-end (Real User Monitoring). Par exemple, compter les sessions utilisateurs qui passent par la page d’un produit puis qui finissent par l’acheter après avoir vu les avis.
Dans ce talk, nous allons voir comment le backend du produit RUM fait pour compter des documents qui évoluent dans le temps, tout en supportant une volumétrie à l’échelle de 100% du trafic de nos clients.
On parlera donc de flot d’ingestion basé Kafka, de dé-duplication d’événements et d’agrégation de métriques à grande échelle via des structures de données probabilistes ou approximatives, et comment le backend RUM associe toutes ces techniques pour offrir une solution flexible et hautement scalable.
3. 3
Logiques métier
standards
High Scale
Distributed Systems
Difficultés
CAP Theorem, Eventual
Consistency, Shared states,
Streaming, Network, Other
teams, etc
Difficultés
No data loss, Spike surges,
keeping a state, migrations,
slow rollout, profiling, etc
Difficultés
Comprendre le client, sortir un
MVP, itérer sur des
fonctionnalités, etc
9. 9
600+ INTEGRATIONS
Containers
Serverless
Network
Performance
Monitoring
Network Device
Monitoring
Cloud Cost
Management
Distributed
Tracing
Universal Service
Monitoring
Continuous
Profiler
Database
Monitoring
Data Streams
Monitoring
Synthetics
Real User
Monitoring
Session Replay
Error Tracking
Observability
Pipelines
Sensitive
Data Scanner
Audit Trails
Log Forwarding
Cloud Security
Management
Application
Security
Management
Cloud SIEM
Infrastructure
Monitoring
Application
Performance
Monitoring
Digital Experience
Monitoring
Log
Management
Security
CI Visibility
Continuous
Testing
Software
Delivery
Shared Platform Services
Collaboration ● Dashboards ● Mobile ● Agents ● Notebook ● Workflows ● Open Telemetry ● Service Catalog
UNIFIED METRICS, LOGS, TRACES
Watchdog AI
Insights ● Impact Analysis ● Root Cause Analysis ● Anomaly Detection ● Alerts ● Correlation ● Optimizations
10. 10
600+ INTEGRATIONS
Containers
Serverless
Network
Performance
Monitoring
Network Device
Monitoring
Cloud Cost
Management
Distributed
Tracing
Universal Service
Monitoring
Continuous
Profiler
Database
Monitoring
Data Streams
Monitoring
Synthetics
Real User
Monitoring
Session Replay
Error Tracking
Observability
Pipelines
Sensitive
Data Scanner
Audit Trails
Log Forwarding
Cloud Security
Management
Application
Security
Management
Cloud SIEM
Infrastructure
Monitoring
Application
Performance
Monitoring
Digital Experience
Monitoring
Log
Management
Security
CI Visibility
Continuous
Testing
Software
Delivery
Shared Platform Services
Collaboration ● Dashboards ● Mobile ● Agents ● Notebook ● Workflows ● Open Telemetry ● Service Catalog
UNIFIED METRICS, LOGS, TRACES
Watchdog AI
Insights ● Impact Analysis ● Root Cause Analysis ● Anomaly Detection ● Alerts ● Correlation ● Optimizations
11. Real User Monitoring - Observabilité d’utilisateurs réels
11
Le pitch :
Datadog’s Real User Monitoring (RUM) gives you
end-to-end visibility into the real-time activity
and experience of individual users.
12. Real User Monitoring - Observabilité d’utilisateurs réels
12
Error
Management
Performance
Monitoring
Customer
Support
Usage
& Analytics
16. Mobile SDK
Browser SDK
Datadog RUM Backend
Intake Query
Real User
on Customer’s
Mobile App
Real User
on Customer’s
Web App
Datadog Web UI
DD Customer
*slaps hood*
That can fit so
many events
Backend specs:
● Ingesting events reliably at scale through HTTP
● Handling streams of data points
● Storing events at scale
● Querying and aggregating events at scale
● A lot of at least once guarantees
16
23. Recap
23
Real User Monitoring (RUM)
• Observabilité Frontend
• Web ou Mobile
• Pour APM, Product Analytics,
Support et Error Tracking
Kafka
• Système de gestion de flux
(streaming)
• Append-only Event-Store
Datadog
• Plateforme d’observabilité
Fonctions :
• Collecter des signaux variés
• Comprendre ce qui se passe
• Être alerté en cas de problèmes
Fonctions :
• Comprendre ce qui se passe
• Comprendre ses utilisateurs
• Être alerté en cas de problèmes
Fonctions :
• Stocker fiablement ses
événements
• Créer des pipelines
• Partitionner ses flux
25. RUM to Metrics
“Compter le nombre de vues utilisateur avec au moins une erreur”
“Mesurer la distribution des temps de chargement par version”
“Compter le nombre d’utilisateurs ayant utilisé tel ou tel produit”
“Mesurer la distribution du nombre de temps passé sur une page”
25
36. Événements
Structurés
Metrics
Platform
Metric
Definitions
Connait
Pourquoi c’est pas si dur
Aggregation
Envelope
Si l'événement correspond à
“type:error browser.name:chrome” +1 sur “metric.name” avec tag
“view.name:/cart” au timestamp 66
type:error
view.name:/cart
browser.name:chrome
ts:66
36
Event to Metrics
Event to Metrics
Event to Metrics
38. Event to Metrics
Event to Metrics
Event to Metrics
Événements
Structurés
Metrics
Platform
Metric
Definitions
Connait
Pourquoi c’est un peu plus dur
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Aggregation
Envelope
Si l'événement correspond à
“type:session browser.name:chrome” +1 sur “metric.name” au ts:$ts
ET LES MISES À
JOUR ?
38
39. 39
High Scale Resilience
Bazillion points per day - Maintenance - Migrations
Service Level Objective
5 millions événements / seconde par cluster
Low Latency (Alertes et Visualisations)
Ces métriques sont utilisées par des alertes, qui doivent sonner quand il faut et pas quand il faut
pas.
Pourquoi c’est juste dur
41. Événements
Structurés
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Marquer ce qu’on compte
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Aggregation
Envelope
State
KV Store
(RocksDB)
41
42. Événements
Structurés
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Marquer ce qu’on compte
Aggregation
Envelope
State
type:session
Id:42
version:3
ts:66
+1 sur “metric.name” au ts:66
KV Store
42
V3
43. Événements
Structurés
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Se rappeler de ce qu’on a déjà compté
Aggregation
Envelope
State
type:session
id:42
version:4
ts:66
KV Store
43
V4
44. Événements
Structurés
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Se rappeler de ce qu’on a déjà compté
Aggregation
Envelope
State
type:session
id:42
version:4
ts:66
KV Store
44
V4
47. Événements
Pour métriques
stateful
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Traffic partitionné = State plus réaliste
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Aggregation
Envelope
State
KV Store
47
48. Événements
Pour métriques
stateful
Event to Metrics
Reducer Metrics
Platform
Metric
Definitions
Connait
Traffic partitionné = State plus réaliste
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Aggregation
Envelope
State
KV Store
48
49. State
6 5 4 3 2 1 0
Checkpointing
Checkpoint: Association d’un state et d’un offset Kafka
On peut périodiquement sauver le checkpoint quelque part.
Check
point
Au redémarrage, on charge le dernier checkpoint :
● Charger le state
● On rembobine depuis l’offset où a
été fait le state.
49
50. State
A B C A B D A
Checkpointing
Checkpoint: Association d’un state et d’un offset Kafka
On peut périodiquement sauver le checkpoint quelque part.
Check
point
Au redémarrage, on charge le dernier checkpoint :
● Charger le state
● On rembobine depuis l’offset où a
été fait le state.
50
51. State
6 5 4 3 2 1 0
Check
point
Event to Metrics
Reducer
Sur-comptage lors du re-processing
51
53. Événements
Pour métriques
stateful
Event to Metrics
Reducer Metrics
Platform
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Last Write
Wins Envelope
State
Sketch
Reducer
State
Demandes
d’aggrégations
53
54. Événements
Pour métriques
stateful
Event to Metrics
Reducer Metrics
Platform
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Last Write
Wins Envelope
State
Sketch
Reducer
State
Demandes
d’aggrégations
Key:
● Metric name
● Tags
● Rollup Timestamp
Value:
● Bac temporel
54
55. Événements
Pour métriques
stateful
Event to Metrics
Reducer Metrics
Platform
●
S
e
s
s
i
o
n
s
●
V
i
e
w
s
Last Write
Wins Envelope
State
Sketch
Reducer
State
Demandes
d’aggrégations
par metric name,
tags, timestamp
Key:
● Metric name
● Tags
● Rollup Timestamp
Value:
● Bac temporel
55
56. Demande d’aggrégation
Roll-up timestamp
Metric name
List of tags
Deterministic Unique Identifier
Individuals
Bac temporel
Roll-up timestamp
Metric name
List of tags
DDSketch
Bins
Basic
Count, Sum, Min, Max
Deduplication system
v=23.2 v=34.25 v=1337
v=3.2
v=22.2
v=89
v=14.6 v=76.01 v=90.1
56
59. Bins
Basic
Count, Sum, Min, Max
Un DDSketch peut donner :
• La cardinalité des individus
• La somme, minimum et maximum des individus
• Un percentile avec plus ou moins de précision
Il peut s’agréger avec un autre DDSketch (vite)
59
61. Demande d’aggrégation
Roll-up timestamp
Metric name
List of tags
Deterministic Unique Identifier
Individuals
Bac temporel
Roll-up timestamp
Metric name
List of tags
DDSketch
Bins
Basic
Count, Sum, Min, Max
Deduplication system
v=23.2 v=34.25 v=1337
v=3.2
v=22.2
v=89
v=14.6 v=76.01 v=90.1
61
62. Hash Set
Deduplication system
Hash Set of Unique Identifiers
Compromis :
• Très précis (100%)
• Très rapide… jusqu’à une certaine taille
• Avec 50 Millions de clefs…
(SLO 5M evt/s * 10s Rollup)
62
69. Bloom filter
Un Bloom Filter peut tester la présence d’un élément :
● Dire qu’il est peut être présent
● Dire qu’il est pour sûr absent
Il est hautement configurable (mémoire, cardinalité, etc)
Il a une propension aux faux positifs en se remplissant.
69
72. Scalable Bloom filter
Basé sur https://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf
p(faux positif) < 0.01
p < 10^-2
k = 2 Insertion et Test
72
73. Scalable Bloom filter
Basé sur https://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf
p(faux positif) < 0.01
p < 10^-2
k = 2
p < 10^-3
k = 4 Insertion
Test
73
74. Scalable Bloom filter
Basé sur https://gsd.di.uminho.pt/members/cbm/ps/dbloom.pdf
p(faux positif) < 0.01
p < 10^-2
k = 2
p < 10^-3
k = 4
p < 10^-4
k = 8
Insertion
Test
74
76. Deduplication system
Hash Set of Unique Identifiers
Deduplication system
Scalable bloom filter
Précision :
De 100% à
99.999% @ 10k evt/s
99.99% @ 100k evt/s
99.9% @ 5M evt/s
77. Ensuite
“Le problème avec le futur, c’est qu’il n’arrête pas de devenir
le présent.” - Bill Watterson
77
78. Count unique
“Nombre d’utilisateurs distincts ayant visité une page donnée”
Compter les user_id distincts de toutes les sessions
“Nombre de ressources distinctes chargées dans une page donnée”
Compter les noms de ressources distincts de toutes les ressources
Solution : HyperLogLog
78
79. Comment compter des éléments unique de façon distribuée ?
Probabilité de Xn : “Obtenir n piles en n lancers de pièces”
Combien de fois je dois retenter l’épreuve afin de le réussir en moyenne ?
Loi Yn “Réussir Xn en k essais” = loi géométrique de probabilité
Donc pour le cas n=2,
on fera en moyenne
2n
= 4 essais.
Petite parenthèse sur les lancers de pièces
79